diff --git a/connect-livereload/connect-livereload-tests.ts b/connect-livereload/connect-livereload-tests.ts new file mode 100644 index 0000000000..2609871e98 --- /dev/null +++ b/connect-livereload/connect-livereload-tests.ts @@ -0,0 +1,69 @@ +/// + +import * as connect from "connect"; +import * as livereload from "connect-livereload"; + +const app = connect(); + +// With no options +app.use(livereload()); + +// With string options +app.use(livereload({ + port: 35729, + ignore: [".js", ".svg"] +})); + +// With RegExp options +app.use(livereload({ + port: 35729, + ignore: [/\.js(\?.*)?$/, /\.css(\?.*)?$/] +})); + +// With default options +app.use(livereload({ + ignore: [ + /\.js(\?.*)?$/, /\.css(\?.*)?$/, /\.svg(\?.*)?$/, /\.ico(\?.*)?$/, /\.woff(\?.*)?$/, + /\.png(\?.*)?$/, /\.jpg(\?.*)?$/, /\.jpeg(\?.*)?$/, /\.gif(\?.*)?$/, /\.pdf(\?.*)?$/ + ], + + // include all urls by default + include: [/.*/], + + // this function is used to determine if the content of `res.write` or `res.end` is html. + html: function (str) { + if (!str) return false; + return /<[:_-\w\s\!\/\=\"\']+>/i.test(str); + }, + + // rules are provided to find the place where the snippet should be inserted. + // the main problem is that on the server side it can be tricky to determine if a string will be valid html on the client. + // the function `fn` of the first `match` is executed like this `body.replace(rule.match, rule.fn);` + // the function `fn` has got the arguments `fn(w, s)` where `w` is the matches string and `s` is the snippet. + rules: [{ + match: /<\/body>(?![\s\S]*<\/body>)/i, + fn: prepend + }, { + match: /<\/html>(?![\s\S]*<\/html>)/i, + fn: prepend + }, { + match: /<\!DOCTYPE.+?>/i, + fn: append + }], + + // port where the script is loaded + port: 35729, + + // location where the script is provided (not by connect-livereload). Change this e.g. when serving livereload with a proxy. + src: "http://localhost:35729/livereload.js?snipver=1", + + // Set this option to `true` to set `req.headers['accept-encoding']` to 'identity' (disabling compression) + disableCompression: false +})); + +function prepend(w: string, s: string): string { + return s + w; +} +function append(w: string, s: string): string { + return w + s; +} \ No newline at end of file