From 8beb37ed67b5f2fa0f9aa85499a8f11b39c9d067 Mon Sep 17 00:00:00 2001 From: nanalelfe Date: Tue, 26 Jul 2016 20:03:35 -0400 Subject: need pull --- node_modules/express-minify-html/.npmignore | 27 + node_modules/express-minify-html/.travis.yml | 3 + node_modules/express-minify-html/LICENSE | 21 + node_modules/express-minify-html/README.md | 57 + .../examples/handlebars/handlebars-example.js | 39 + .../examples/handlebars/main.handlebars | 20 + .../examples/handlebars/package.json | 16 + node_modules/express-minify-html/minifier.js | 53 + .../node_modules/.bin/html-minifier | 1 + .../node_modules/html-minifier/LICENSE | 22 + .../node_modules/html-minifier/README.md | 156 + .../node_modules/html-minifier/cli.js | 281 + .../html-minifier/node_modules/.bin/cleancss | 1 + .../html-minifier/node_modules/.bin/he | 1 + .../html-minifier/node_modules/.bin/uglifyjs | 1 + .../html-minifier/node_modules/change-case/LICENSE | 21 + .../node_modules/change-case/change-case.d.ts | 37 + .../node_modules/change-case/change-case.js | 18 + .../change-case/node_modules/camel-case/LICENSE | 21 + .../node_modules/camel-case/camel-case.d.ts | 3 + .../node_modules/camel-case/camel-case.js | 23 + .../node_modules/camel-case/package.json | 82 + .../change-case/node_modules/constant-case/LICENSE | 21 + .../node_modules/constant-case/constant-case.d.ts | 3 + .../node_modules/constant-case/constant-case.js | 13 + .../node_modules/constant-case/package.json | 72 + .../change-case/node_modules/dot-case/LICENSE | 21 + .../node_modules/dot-case/dot-case.d.ts | 3 + .../change-case/node_modules/dot-case/dot-case.js | 12 + .../change-case/node_modules/dot-case/package.json | 71 + .../change-case/node_modules/header-case/LICENSE | 21 + .../node_modules/header-case/header-case.d.ts | 3 + .../node_modules/header-case/header-case.js | 15 + .../node_modules/header-case/package.json | 73 + .../change-case/node_modules/is-lower-case/LICENSE | 21 + .../node_modules/is-lower-case/README.md | 41 + .../node_modules/is-lower-case/is-lower-case.d.ts | 3 + .../node_modules/is-lower-case/is-lower-case.js | 12 + .../node_modules/is-lower-case/package.json | 69 + .../change-case/node_modules/is-upper-case/LICENSE | 21 + .../node_modules/is-upper-case/README.md | 41 + .../node_modules/is-upper-case/is-upper-case.d.ts | 3 + .../node_modules/is-upper-case/is-upper-case.js | 12 + .../node_modules/is-upper-case/package.json | 76 + .../node_modules/lower-case-first/LICENSE | 21 + .../node_modules/lower-case-first/README.md | 42 + .../lower-case-first/lower-case-first.d.ts | 3 + .../lower-case-first/lower-case-first.js | 17 + .../node_modules/lower-case-first/package.json | 70 + .../change-case/node_modules/lower-case/LICENSE | 21 + .../change-case/node_modules/lower-case/README.md | 45 + .../node_modules/lower-case/lower-case.d.ts | 3 + .../node_modules/lower-case/lower-case.js | 54 + .../node_modules/lower-case/package.json | 74 + .../change-case/node_modules/no-case/LICENSE | 21 + .../change-case/node_modules/no-case/no-case.d.ts | 3 + .../change-case/node_modules/no-case/no-case.js | 40 + .../change-case/node_modules/no-case/package.json | 82 + .../no-case/vendor/camel-case-regexp.js | 1 + .../no-case/vendor/camel-case-upper-regexp.js | 1 + .../node_modules/no-case/vendor/non-word-regexp.js | 1 + .../change-case/node_modules/param-case/LICENSE | 21 + .../node_modules/param-case/package.json | 72 + .../node_modules/param-case/param-case.d.ts | 3 + .../node_modules/param-case/param-case.js | 12 + .../change-case/node_modules/pascal-case/LICENSE | 21 + .../node_modules/pascal-case/package.json | 71 + .../node_modules/pascal-case/pascal-case.d.ts | 3 + .../node_modules/pascal-case/pascal-case.js | 14 + .../change-case/node_modules/path-case/LICENSE | 21 + .../node_modules/path-case/package.json | 71 + .../node_modules/path-case/path-case.d.ts | 3 + .../node_modules/path-case/path-case.js | 12 + .../change-case/node_modules/sentence-case/LICENSE | 21 + .../node_modules/sentence-case/package.json | 74 + .../node_modules/sentence-case/sentence-case.d.ts | 3 + .../node_modules/sentence-case/sentence-case.js | 13 + .../change-case/node_modules/snake-case/LICENSE | 21 + .../node_modules/snake-case/package.json | 71 + .../node_modules/snake-case/snake-case.d.ts | 3 + .../node_modules/snake-case/snake-case.js | 12 + .../change-case/node_modules/swap-case/LICENSE | 21 + .../change-case/node_modules/swap-case/README.md | 46 + .../node_modules/swap-case/package.json | 70 + .../node_modules/swap-case/swap-case.d.ts | 3 + .../node_modules/swap-case/swap-case.js | 27 + .../change-case/node_modules/title-case/LICENSE | 21 + .../node_modules/title-case/package.json | 71 + .../node_modules/title-case/title-case.d.ts | 3 + .../node_modules/title-case/title-case.js | 15 + .../node_modules/upper-case-first/LICENSE | 21 + .../node_modules/upper-case-first/README.md | 42 + .../node_modules/upper-case-first/package.json | 70 + .../upper-case-first/upper-case-first.d.ts | 3 + .../upper-case-first/upper-case-first.js | 17 + .../change-case/node_modules/upper-case/LICENSE | 21 + .../change-case/node_modules/upper-case/README.md | 45 + .../node_modules/upper-case/package.json | 73 + .../node_modules/upper-case/upper-case.d.ts | 3 + .../node_modules/upper-case/upper-case.js | 50 + .../node_modules/change-case/package.json | 97 + .../node_modules/clean-css/History.md | 1090 ++++ .../html-minifier/node_modules/clean-css/LICENSE | 19 + .../html-minifier/node_modules/clean-css/README.md | 369 ++ .../node_modules/clean-css/bin/cleancss | 183 + .../html-minifier/node_modules/clean-css/index.js | 1 + .../node_modules/clean-css/lib/clean.js | 231 + .../clean-css/lib/colors/hex-name-shortener.js | 186 + .../node_modules/clean-css/lib/colors/hsl.js | 67 + .../node_modules/clean-css/lib/colors/rgb.js | 16 + .../node_modules/clean-css/lib/imports/inliner.js | 399 ++ .../clean-css/lib/properties/break-up.js | 335 ++ .../clean-css/lib/properties/can-override.js | 142 + .../node_modules/clean-css/lib/properties/clone.js | 26 + .../clean-css/lib/properties/compactable.js | 285 + .../clean-css/lib/properties/every-combination.js | 28 + .../clean-css/lib/properties/has-inherit.js | 10 + .../lib/properties/invalid-property-error.js | 10 + .../clean-css/lib/properties/optimizer.js | 215 + .../clean-css/lib/properties/override-compactor.js | 384 ++ .../lib/properties/populate-components.js | 32 + .../clean-css/lib/properties/remove-unused.js | 10 + .../lib/properties/restore-from-optimizing.js | 60 + .../clean-css/lib/properties/restore.js | 232 + .../lib/properties/shorthand-compactor.js | 134 + .../clean-css/lib/properties/validator.js | 197 + .../clean-css/lib/properties/vendor-prefixes.js | 26 + .../lib/properties/wrap-for-optimizing.js | 118 + .../clean-css/lib/selectors/advanced.js | 86 + .../clean-css/lib/selectors/clean-up.js | 89 + .../clean-css/lib/selectors/extractor.js | 69 + .../clean-css/lib/selectors/is-special.js | 5 + .../clean-css/lib/selectors/merge-adjacent.js | 35 + .../clean-css/lib/selectors/merge-media-queries.js | 64 + .../lib/selectors/merge-non-adjacent-by-body.js | 61 + .../selectors/merge-non-adjacent-by-selector.js | 76 + .../clean-css/lib/selectors/reduce-non-adjacent.js | 172 + .../selectors/remove-duplicate-media-queries.js | 21 + .../clean-css/lib/selectors/remove-duplicates.js | 41 + .../clean-css/lib/selectors/reorderable.js | 95 + .../clean-css/lib/selectors/restructure.js | 369 ++ .../node_modules/clean-css/lib/selectors/simple.js | 444 ++ .../clean-css/lib/source-maps/track.js | 119 + .../clean-css/lib/stringifier/helpers.js | 167 + .../clean-css/lib/stringifier/one-time.js | 50 + .../clean-css/lib/stringifier/simple.js | 22 + .../clean-css/lib/stringifier/source-maps.js | 96 + .../clean-css/lib/text/comments-processor.js | 131 + .../clean-css/lib/text/escape-store.js | 53 + .../clean-css/lib/text/expressions-processor.js | 117 + .../clean-css/lib/text/free-text-processor.js | 98 + .../clean-css/lib/text/urls-processor.js | 75 + .../clean-css/lib/tokenizer/extract-properties.js | 193 + .../clean-css/lib/tokenizer/extract-selectors.js | 17 + .../clean-css/lib/tokenizer/tokenize.js | 264 + .../node_modules/clean-css/lib/urls/rebase.js | 30 + .../node_modules/clean-css/lib/urls/reduce.js | 154 + .../node_modules/clean-css/lib/urls/rewrite.js | 107 + .../clean-css/lib/utils/clone-array.js | 12 + .../clean-css/lib/utils/compatibility.js | 162 + .../lib/utils/input-source-map-tracker.js | 284 + .../node_modules/clean-css/lib/utils/object.js | 11 + .../clean-css/lib/utils/quote-scanner.js | 119 + .../clean-css/lib/utils/source-reader.js | 96 + .../clean-css/lib/utils/source-tracker.js | 31 + .../node_modules/clean-css/lib/utils/split.js | 53 + .../clean-css/node_modules/commander/History.md | 256 + .../clean-css/node_modules/commander/LICENSE | 22 + .../clean-css/node_modules/commander/Readme.md | 342 ++ .../clean-css/node_modules/commander/index.js | 1103 ++++ .../node_modules/graceful-readlink/.npmignore | 3 + .../node_modules/graceful-readlink/.travis.yml | 5 + .../node_modules/graceful-readlink/LICENSE | 22 + .../node_modules/graceful-readlink/README.md | 17 + .../node_modules/graceful-readlink/index.js | 12 + .../node_modules/graceful-readlink/package.json | 48 + .../clean-css/node_modules/commander/package.json | 74 + .../clean-css/node_modules/source-map/README.md | 510 ++ .../node_modules/source-map/build/assert-shim.js | 56 + .../node_modules/source-map/build/mini-require.js | 152 + .../source-map/build/prefix-source-map.jsm | 21 + .../node_modules/source-map/build/prefix-utils.jsm | 18 + .../source-map/build/suffix-browser.js | 8 + .../source-map/build/suffix-source-map.jsm | 6 + .../node_modules/source-map/build/suffix-utils.jsm | 21 + .../node_modules/source-map/build/test-prefix.js | 8 + .../node_modules/source-map/build/test-suffix.js | 3 + .../node_modules/source-map/lib/source-map.js | 8 + .../source-map/lib/source-map/array-set.js | 107 + .../source-map/lib/source-map/base64-vlq.js | 146 + .../source-map/lib/source-map/base64.js | 73 + .../source-map/lib/source-map/binary-search.js | 117 + .../source-map/lib/source-map/mapping-list.js | 86 + .../source-map/lib/source-map/quick-sort.js | 120 + .../lib/source-map/source-map-consumer.js | 1077 ++++ .../lib/source-map/source-map-generator.js | 399 ++ .../source-map/lib/source-map/source-node.js | 414 ++ .../node_modules/source-map/lib/source-map/util.js | 370 ++ .../source-map/node_modules/amdefine/LICENSE | 58 + .../source-map/node_modules/amdefine/README.md | 171 + .../source-map/node_modules/amdefine/amdefine.js | 301 ++ .../source-map/node_modules/amdefine/intercept.js | 36 + .../source-map/node_modules/amdefine/package.json | 47 + .../clean-css/node_modules/source-map/package.json | 201 + .../node_modules/clean-css/package.json | 87 + .../node_modules/commander/History.md | 261 + .../html-minifier/node_modules/commander/LICENSE | 22 + .../html-minifier/node_modules/commander/Readme.md | 351 ++ .../html-minifier/node_modules/commander/index.js | 1110 ++++ .../node_modules/graceful-readlink/.npmignore | 3 + .../node_modules/graceful-readlink/.travis.yml | 5 + .../node_modules/graceful-readlink/LICENSE | 22 + .../node_modules/graceful-readlink/README.md | 17 + .../node_modules/graceful-readlink/index.js | 12 + .../node_modules/graceful-readlink/package.json | 48 + .../node_modules/commander/package.json | 71 + .../html-minifier/node_modules/he/LICENSE-MIT.txt | 20 + .../html-minifier/node_modules/he/bin/he | 148 + .../html-minifier/node_modules/he/he.js | 342 ++ .../html-minifier/node_modules/he/man/he.1 | 78 + .../html-minifier/node_modules/he/package.json | 88 + .../html-minifier/node_modules/ncname/index.js | 9 + .../ncname/node_modules/xml-char-classes/index.js | 11 + .../node_modules/xml-char-classes/package.json | 67 + .../ncname/node_modules/xml-char-classes/readme.md | 45 + .../html-minifier/node_modules/ncname/package.json | 67 + .../html-minifier/node_modules/ncname/readme.md | 28 + .../html-minifier/node_modules/relateurl/README.md | 159 + .../node_modules/relateurl/lib/constants.js | 10 + .../node_modules/relateurl/lib/format.js | 174 + .../node_modules/relateurl/lib/index.js | 94 + .../node_modules/relateurl/lib/options.js | 57 + .../node_modules/relateurl/lib/parse/host.js | 26 + .../node_modules/relateurl/lib/parse/hrefInfo.js | 20 + .../node_modules/relateurl/lib/parse/index.js | 58 + .../node_modules/relateurl/lib/parse/path.js | 100 + .../node_modules/relateurl/lib/parse/port.js | 32 + .../node_modules/relateurl/lib/parse/query.js | 53 + .../node_modules/relateurl/lib/parse/urlstring.js | 146 + .../relateurl/lib/relate/absolutize.js | 89 + .../relateurl/lib/relate/findRelation.js | 79 + .../node_modules/relateurl/lib/relate/index.js | 18 + .../relateurl/lib/relate/relativize.js | 67 + .../node_modules/relateurl/lib/util/devlog.js | 25 + .../node_modules/relateurl/lib/util/object.js | 64 + .../node_modules/relateurl/lib/util/path.js | 49 + .../html-minifier/node_modules/relateurl/license | 21 + .../node_modules/relateurl/package.json | 72 + .../html-minifier/node_modules/uglify-js/LICENSE | 29 + .../html-minifier/node_modules/uglify-js/README.md | 848 +++ .../node_modules/uglify-js/bin/extract-props.js | 77 + .../node_modules/uglify-js/bin/uglifyjs | 585 ++ .../node_modules/uglify-js/lib/ast.js | 1021 ++++ .../node_modules/uglify-js/lib/compress.js | 2903 ++++++++++ .../node_modules/uglify-js/lib/mozilla-ast.js | 537 ++ .../node_modules/uglify-js/lib/output.js | 1417 +++++ .../node_modules/uglify-js/lib/parse.js | 1579 ++++++ .../node_modules/uglify-js/lib/propmangle.js | 229 + .../node_modules/uglify-js/lib/scope.js | 636 +++ .../node_modules/uglify-js/lib/sourcemap.js | 87 + .../node_modules/uglify-js/lib/transform.js | 218 + .../node_modules/uglify-js/lib/utils.js | 311 ++ .../uglify-js/node_modules/async/LICENSE | 19 + .../uglify-js/node_modules/async/README.md | 1425 +++++ .../uglify-js/node_modules/async/component.json | 11 + .../uglify-js/node_modules/async/lib/async.js | 958 ++++ .../uglify-js/node_modules/async/package.json | 60 + .../uglify-js/node_modules/source-map/CHANGELOG.md | 301 ++ .../uglify-js/node_modules/source-map/LICENSE | 28 + .../uglify-js/node_modules/source-map/README.md | 729 +++ .../source-map/dist/source-map.debug.js | 3056 +++++++++++ .../node_modules/source-map/dist/source-map.js | 3055 +++++++++++ .../node_modules/source-map/dist/source-map.min.js | 2 + .../source-map/dist/source-map.min.js.map | 1 + .../node_modules/source-map/lib/array-set.js | 104 + .../node_modules/source-map/lib/base64-vlq.js | 140 + .../node_modules/source-map/lib/base64.js | 67 + .../node_modules/source-map/lib/binary-search.js | 111 + .../node_modules/source-map/lib/mapping-list.js | 79 + .../node_modules/source-map/lib/quick-sort.js | 114 + .../source-map/lib/source-map-consumer.js | 1082 ++++ .../source-map/lib/source-map-generator.js | 404 ++ .../node_modules/source-map/lib/source-node.js | 407 ++ .../uglify-js/node_modules/source-map/lib/util.js | 417 ++ .../uglify-js/node_modules/source-map/package.json | 220 + .../node_modules/source-map/source-map.js | 8 + .../node_modules/uglify-to-browserify/.npmignore | 14 + .../node_modules/uglify-to-browserify/.travis.yml | 3 + .../node_modules/uglify-to-browserify/LICENSE | 19 + .../node_modules/uglify-to-browserify/README.md | 15 + .../node_modules/uglify-to-browserify/index.js | 49 + .../node_modules/uglify-to-browserify/package.json | 47 + .../uglify-to-browserify/test/index.js | 22 + .../uglify-js/node_modules/yargs/CHANGELOG.md | 374 ++ .../uglify-js/node_modules/yargs/LICENSE | 21 + .../uglify-js/node_modules/yargs/README.md | 926 ++++ .../uglify-js/node_modules/yargs/completion.sh.hbs | 22 + .../uglify-js/node_modules/yargs/index.js | 504 ++ .../uglify-js/node_modules/yargs/lib/completion.js | 71 + .../uglify-js/node_modules/yargs/lib/parser.js | 448 ++ .../uglify-js/node_modules/yargs/lib/usage.js | 314 ++ .../uglify-js/node_modules/yargs/lib/validation.js | 196 + .../yargs/node_modules/camelcase/index.js | 27 + .../yargs/node_modules/camelcase/license | 21 + .../yargs/node_modules/camelcase/package.json | 68 + .../yargs/node_modules/camelcase/readme.md | 56 + .../yargs/node_modules/cliui/.coveralls.yml | 1 + .../yargs/node_modules/cliui/.npmignore | 2 + .../yargs/node_modules/cliui/.travis.yml | 7 + .../yargs/node_modules/cliui/LICENSE.txt | 14 + .../yargs/node_modules/cliui/README.md | 104 + .../node_modules/yargs/node_modules/cliui/index.js | 273 + .../cliui/node_modules/center-align/LICENSE | 21 + .../cliui/node_modules/center-align/README.md | 74 + .../cliui/node_modules/center-align/index.js | 16 + .../center-align/node_modules/align-text/LICENSE | 21 + .../center-align/node_modules/align-text/README.md | 236 + .../center-align/node_modules/align-text/index.js | 52 + .../align-text/node_modules/kind-of/LICENSE | 21 + .../align-text/node_modules/kind-of/README.md | 251 + .../align-text/node_modules/kind-of/index.js | 113 + .../kind-of/node_modules/is-buffer/.travis.yml | 7 + .../kind-of/node_modules/is-buffer/.zuul.yml | 16 + .../kind-of/node_modules/is-buffer/LICENSE | 21 + .../kind-of/node_modules/is-buffer/README.md | 49 + .../kind-of/node_modules/is-buffer/index.js | 17 + .../kind-of/node_modules/is-buffer/package.json | 82 + .../kind-of/node_modules/is-buffer/test/basic.js | 20 + .../align-text/node_modules/kind-of/package.json | 119 + .../align-text/node_modules/longest/LICENSE | 21 + .../align-text/node_modules/longest/README.md | 65 + .../align-text/node_modules/longest/index.js | 37 + .../align-text/node_modules/longest/package.json | 70 + .../align-text/node_modules/repeat-string/LICENSE | 21 + .../node_modules/repeat-string/README.md | 118 + .../align-text/node_modules/repeat-string/index.js | 68 + .../node_modules/repeat-string/package.json | 103 + .../node_modules/align-text/package.json | 83 + .../center-align/node_modules/lazy-cache/LICENSE | 21 + .../center-align/node_modules/lazy-cache/README.md | 147 + .../center-align/node_modules/lazy-cache/index.js | 67 + .../node_modules/lazy-cache/package.json | 95 + .../cliui/node_modules/center-align/package.json | 88 + .../cliui/node_modules/center-align/utils.js | 40 + .../cliui/node_modules/right-align/LICENSE | 21 + .../cliui/node_modules/right-align/README.md | 77 + .../cliui/node_modules/right-align/index.js | 16 + .../right-align/node_modules/align-text/LICENSE | 21 + .../right-align/node_modules/align-text/README.md | 236 + .../right-align/node_modules/align-text/index.js | 52 + .../align-text/node_modules/kind-of/LICENSE | 21 + .../align-text/node_modules/kind-of/README.md | 251 + .../align-text/node_modules/kind-of/index.js | 113 + .../kind-of/node_modules/is-buffer/.travis.yml | 7 + .../kind-of/node_modules/is-buffer/.zuul.yml | 16 + .../kind-of/node_modules/is-buffer/LICENSE | 21 + .../kind-of/node_modules/is-buffer/README.md | 49 + .../kind-of/node_modules/is-buffer/index.js | 17 + .../kind-of/node_modules/is-buffer/package.json | 82 + .../kind-of/node_modules/is-buffer/test/basic.js | 20 + .../align-text/node_modules/kind-of/package.json | 119 + .../align-text/node_modules/longest/LICENSE | 21 + .../align-text/node_modules/longest/README.md | 65 + .../align-text/node_modules/longest/index.js | 37 + .../align-text/node_modules/longest/package.json | 70 + .../align-text/node_modules/repeat-string/LICENSE | 21 + .../node_modules/repeat-string/README.md | 118 + .../align-text/node_modules/repeat-string/index.js | 68 + .../node_modules/repeat-string/package.json | 103 + .../node_modules/align-text/package.json | 83 + .../cliui/node_modules/right-align/package.json | 68 + .../cliui/node_modules/wordwrap/.npmignore | 1 + .../cliui/node_modules/wordwrap/README.markdown | 70 + .../cliui/node_modules/wordwrap/example/center.js | 10 + .../cliui/node_modules/wordwrap/example/meat.js | 3 + .../cliui/node_modules/wordwrap/index.js | 76 + .../cliui/node_modules/wordwrap/package.json | 61 + .../cliui/node_modules/wordwrap/test/break.js | 30 + .../cliui/node_modules/wordwrap/test/idleness.txt | 63 + .../cliui/node_modules/wordwrap/test/wrap.js | 31 + .../yargs/node_modules/cliui/package.json | 89 + .../yargs/node_modules/cliui/test/cliui.js | 349 ++ .../yargs/node_modules/decamelize/index.js | 13 + .../yargs/node_modules/decamelize/license | 21 + .../yargs/node_modules/decamelize/package.json | 72 + .../yargs/node_modules/decamelize/readme.md | 48 + .../yargs/node_modules/window-size/LICENSE-MIT | 22 + .../yargs/node_modules/window-size/README.md | 26 + .../yargs/node_modules/window-size/index.js | 33 + .../yargs/node_modules/window-size/package.json | 54 + .../uglify-js/node_modules/yargs/package.json | 120 + .../node_modules/uglify-js/package.json | 91 + .../node_modules/uglify-js/tools/domprops.json | 5603 ++++++++++++++++++++ .../node_modules/uglify-js/tools/exports.js | 23 + .../node_modules/uglify-js/tools/node.js | 254 + .../node_modules/uglify-js/tools/props.html | 61 + .../node_modules/html-minifier/package.json | 123 + .../html-minifier/sample-cli-config-file.conf | 38 + .../node_modules/html-minifier/src/htmlminifier.js | 1263 +++++ .../node_modules/html-minifier/src/htmlparser.js | 529 ++ .../node_modules/html-minifier/src/tokenchain.js | 68 + .../node_modules/html-minifier/src/utils.js | 18 + node_modules/express-minify-html/package.json | 67 + node_modules/express-minify-html/tests/index.js | 79 + node_modules/express-minify-html/tests/test.ejs | 20 + .../express-minify-html/tests/test.handlebars | 20 + .../express-minify-html/tests/test.nunjucks | 20 + .../express-minify-html/tests/test.output.html | 1 + node_modules/express-minify-html/tests/test.pug | 13 + 409 files changed, 63296 insertions(+) create mode 100644 node_modules/express-minify-html/.npmignore create mode 100644 node_modules/express-minify-html/.travis.yml create mode 100644 node_modules/express-minify-html/LICENSE create mode 100644 node_modules/express-minify-html/README.md create mode 100644 node_modules/express-minify-html/examples/handlebars/handlebars-example.js create mode 100644 node_modules/express-minify-html/examples/handlebars/main.handlebars create mode 100644 node_modules/express-minify-html/examples/handlebars/package.json create mode 100644 node_modules/express-minify-html/minifier.js create mode 120000 node_modules/express-minify-html/node_modules/.bin/html-minifier create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/README.md create mode 100755 node_modules/express-minify-html/node_modules/html-minifier/cli.js create mode 120000 node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/cleancss create mode 120000 node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/he create mode 120000 node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/uglifyjs create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/change-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/change-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/camel-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/camel-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/constant-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/constant-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/dot-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/dot-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/header-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/header-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/is-lower-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/is-lower-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/is-upper-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/is-upper-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/lower-case-first.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/lower-case-first.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/lower-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/lower-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/no-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/no-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/camel-case-regexp.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/camel-case-upper-regexp.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/non-word-regexp.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/param-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/param-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/pascal-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/pascal-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/path-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/path-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/sentence-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/sentence-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/snake-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/snake-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/swap-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/swap-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/title-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/title-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/upper-case-first.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/upper-case-first.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/upper-case.d.ts create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/upper-case.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/History.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/README.md create mode 100755 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/bin/cleancss create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/clean.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/hex-name-shortener.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/hsl.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/rgb.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/imports/inliner.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/break-up.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/can-override.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/clone.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/compactable.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/every-combination.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/has-inherit.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/invalid-property-error.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/optimizer.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/override-compactor.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/populate-components.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/remove-unused.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/restore-from-optimizing.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/restore.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/shorthand-compactor.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/validator.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/vendor-prefixes.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/wrap-for-optimizing.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/advanced.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/clean-up.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/extractor.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/is-special.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/merge-adjacent.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/merge-media-queries.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/merge-non-adjacent-by-body.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/merge-non-adjacent-by-selector.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/reduce-non-adjacent.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/remove-duplicate-media-queries.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/remove-duplicates.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/reorderable.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/restructure.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/selectors/simple.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/source-maps/track.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/stringifier/helpers.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/stringifier/one-time.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/stringifier/simple.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/stringifier/source-maps.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/text/comments-processor.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/text/escape-store.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/text/expressions-processor.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/text/free-text-processor.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/text/urls-processor.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/tokenizer/extract-properties.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/tokenizer/extract-selectors.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/tokenizer/tokenize.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/urls/rebase.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/urls/reduce.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/urls/rewrite.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/utils/clone-array.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/utils/compatibility.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/utils/input-source-map-tracker.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/utils/object.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/utils/quote-scanner.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/utils/source-reader.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/utils/source-tracker.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/utils/split.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/commander/History.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/commander/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/commander/Readme.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/commander/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/commander/node_modules/graceful-readlink/.npmignore create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/commander/node_modules/graceful-readlink/.travis.yml create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/commander/node_modules/graceful-readlink/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/commander/node_modules/graceful-readlink/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/commander/node_modules/graceful-readlink/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/commander/node_modules/graceful-readlink/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/commander/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/build/assert-shim.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/build/mini-require.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/build/prefix-source-map.jsm create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/build/prefix-utils.jsm create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/build/suffix-browser.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/build/suffix-source-map.jsm create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/build/suffix-utils.jsm create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/build/test-prefix.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/build/test-suffix.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/lib/source-map.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/lib/source-map/array-set.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/lib/source-map/base64-vlq.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/lib/source-map/base64.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/lib/source-map/binary-search.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/lib/source-map/mapping-list.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/lib/source-map/quick-sort.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/lib/source-map/source-map-consumer.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/lib/source-map/source-map-generator.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/lib/source-map/source-node.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/lib/source-map/util.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/node_modules/amdefine/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/node_modules/amdefine/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/node_modules/amdefine/amdefine.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/node_modules/amdefine/intercept.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/node_modules/amdefine/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/node_modules/source-map/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/commander/History.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/commander/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/commander/Readme.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/commander/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/commander/node_modules/graceful-readlink/.npmignore create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/commander/node_modules/graceful-readlink/.travis.yml create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/commander/node_modules/graceful-readlink/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/commander/node_modules/graceful-readlink/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/commander/node_modules/graceful-readlink/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/commander/node_modules/graceful-readlink/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/commander/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/he/LICENSE-MIT.txt create mode 100755 node_modules/express-minify-html/node_modules/html-minifier/node_modules/he/bin/he create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/he/he.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/he/man/he.1 create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/he/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/ncname/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/ncname/node_modules/xml-char-classes/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/ncname/node_modules/xml-char-classes/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/ncname/node_modules/xml-char-classes/readme.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/ncname/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/ncname/readme.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/constants.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/format.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/options.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/parse/host.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/parse/hrefInfo.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/parse/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/parse/path.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/parse/port.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/parse/query.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/parse/urlstring.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/relate/absolutize.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/relate/findRelation.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/relate/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/relate/relativize.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/util/devlog.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/util/object.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/lib/util/path.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/license create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/relateurl/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/README.md create mode 100755 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/bin/extract-props.js create mode 100755 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/bin/uglifyjs create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/lib/ast.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/lib/compress.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/lib/mozilla-ast.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/lib/output.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/lib/parse.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/lib/propmangle.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/lib/scope.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/lib/sourcemap.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/lib/transform.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/lib/utils.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/async/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/async/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/async/component.json create mode 100755 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/async/lib/async.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/async/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/dist/source-map.debug.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/dist/source-map.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/dist/source-map.min.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/dist/source-map.min.js.map create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/lib/array-set.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/lib/base64-vlq.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/lib/base64.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/lib/binary-search.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/lib/mapping-list.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/lib/quick-sort.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/lib/source-map-consumer.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/lib/source-map-generator.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/lib/source-node.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/lib/util.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/source-map/source-map.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/uglify-to-browserify/.npmignore create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/uglify-to-browserify/.travis.yml create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/uglify-to-browserify/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/uglify-to-browserify/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/uglify-to-browserify/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/uglify-to-browserify/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/uglify-to-browserify/test/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/CHANGELOG.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/completion.sh.hbs create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/lib/completion.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/lib/parser.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/lib/usage.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/lib/validation.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/camelcase/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/camelcase/license create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/camelcase/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/camelcase/readme.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/.coveralls.yml create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/.npmignore create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/.travis.yml create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/LICENSE.txt create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/.travis.yml create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/.zuul.yml create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/test/basic.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/kind-of/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/longest/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/longest/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/longest/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/longest/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/repeat-string/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/repeat-string/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/repeat-string/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/node_modules/repeat-string/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/align-text/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/lazy-cache/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/lazy-cache/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/lazy-cache/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/node_modules/lazy-cache/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/center-align/utils.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/.travis.yml create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/.zuul.yml create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/node_modules/is-buffer/test/basic.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/kind-of/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/longest/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/longest/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/longest/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/longest/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/repeat-string/LICENSE create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/repeat-string/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/repeat-string/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/node_modules/repeat-string/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/node_modules/align-text/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/right-align/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/.npmignore create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/README.markdown create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/example/center.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/example/meat.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/test/break.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/test/idleness.txt create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/node_modules/wordwrap/test/wrap.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/cliui/test/cliui.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/decamelize/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/decamelize/license create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/decamelize/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/decamelize/readme.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/window-size/LICENSE-MIT create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/window-size/README.md create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/window-size/index.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/node_modules/window-size/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/node_modules/yargs/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/tools/domprops.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/tools/exports.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/tools/node.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/node_modules/uglify-js/tools/props.html create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/package.json create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/sample-cli-config-file.conf create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/src/htmlminifier.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/src/htmlparser.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/src/tokenchain.js create mode 100644 node_modules/express-minify-html/node_modules/html-minifier/src/utils.js create mode 100644 node_modules/express-minify-html/package.json create mode 100644 node_modules/express-minify-html/tests/index.js create mode 100644 node_modules/express-minify-html/tests/test.ejs create mode 100644 node_modules/express-minify-html/tests/test.handlebars create mode 100644 node_modules/express-minify-html/tests/test.nunjucks create mode 100644 node_modules/express-minify-html/tests/test.output.html create mode 100644 node_modules/express-minify-html/tests/test.pug (limited to 'node_modules/express-minify-html') diff --git a/node_modules/express-minify-html/.npmignore b/node_modules/express-minify-html/.npmignore new file mode 100644 index 0000000..123ae94 --- /dev/null +++ b/node_modules/express-minify-html/.npmignore @@ -0,0 +1,27 @@ +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules diff --git a/node_modules/express-minify-html/.travis.yml b/node_modules/express-minify-html/.travis.yml new file mode 100644 index 0000000..20f0c0b --- /dev/null +++ b/node_modules/express-minify-html/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - "4.2" diff --git a/node_modules/express-minify-html/LICENSE b/node_modules/express-minify-html/LICENSE new file mode 100644 index 0000000..258e973 --- /dev/null +++ b/node_modules/express-minify-html/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Matti Jokitulppo (http://mattij.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/express-minify-html/README.md b/node_modules/express-minify-html/README.md new file mode 100644 index 0000000..c479b21 --- /dev/null +++ b/node_modules/express-minify-html/README.md @@ -0,0 +1,57 @@ +# express-minify-html +Express middleware wrapper around HTML minifier + +## Description + +This express middleware simply enchances the regular 'render' method of the response object for minifying HTML. + +## Usage + +```sh +npm install --save --production express-minify-html express +``` + +```js + +var express = require('express'); +var minifyHTML = require('express-minify-html'); + +var app = express(); + +app.use(minifyHTML({ + override: true, + htmlMinifier: { + removeComments: true, + collapseWhitespace: true, + collapseBooleanAttributes: true, + removeAttributeQuotes: true, + removeEmptyAttributes: true, + minifyJS: true + } +})); + +app.get('hello', function (req, res, next) { + res.render('helloTemplate', { hello : 'world'}, function(err, html) { + // The output is minified, huzzah! + console.log(html); + res.send(html); + }) +}); + +``` +Set 'override' to false if you don't want to hijack the ordinary res.render function. This adds an additional res.renderMin function to the response object to render minimized HTML. + +The 'htmlMinifier' opts are simply passed on to the html-minifier plugin. For all the available configuration options, see [the original repo!](https://github.com/kangax/html-minifier/blob/gh-pages/README.md) + +If no callback is provided, res.render/res.renderMin sends the minified HTML to the client just as the regular +express res.render does. Otherwise, the callback is called with the error object and the minified HTML content, as +demonstrated above. + +Full examples can naturally be found under the 'examples'-folder of this repository! + +## License + +MIT © [Matti Jokitulppo](http://mattij.com) + +[![npm version](https://badge.fury.io/js/express-minify-html.svg)](https://badge.fury.io/js/express-minify-html) +[![npm downloads](https://img.shields.io/npm/dm/express-minify-html.svg)](https://img.shields.io/npm/dm/express-minify-html.svg) diff --git a/node_modules/express-minify-html/examples/handlebars/handlebars-example.js b/node_modules/express-minify-html/examples/handlebars/handlebars-example.js new file mode 100644 index 0000000..eb39a06 --- /dev/null +++ b/node_modules/express-minify-html/examples/handlebars/handlebars-example.js @@ -0,0 +1,39 @@ +'use strict'; + +var express = require('express'); +var minifyHTML = require('../../minifier.js'); +var exhbs = require('express-handlebars'); + +var app = express(); + +var hbs = exhbs.create({ + defaultLayout: 'main', + layoutsDir: './' +}); + +app.engine('handlebars', hbs.engine); +app.set('view engine', 'handlebars'); +app.set('views', './'); + +app.use(minifyHTML({ + override: true, + htmlMinifier: { + removeComments: true, + collapseWhitespace: true, + collapseBooleanAttributes: true, + removeAttributeQuotes: true, + removeEmptyAttributes: true, + minifyJS: true + } +})); + +app.get('/', function(req, res) { + res.render('main', { hello: 'world' }); +}); + +var server = app.listen(3000, function() { + var host = server.address().address; + var port = server.address().port; + + console.log('Handlebars example app listening at http://%s:%s', host, port); +}); diff --git a/node_modules/express-minify-html/examples/handlebars/main.handlebars b/node_modules/express-minify-html/examples/handlebars/main.handlebars new file mode 100644 index 0000000..f46809e --- /dev/null +++ b/node_modules/express-minify-html/examples/handlebars/main.handlebars @@ -0,0 +1,20 @@ + + + + + + Express minify HTML handlebars example + + + Hello {{hello}}! + + + \ No newline at end of file diff --git a/node_modules/express-minify-html/examples/handlebars/package.json b/node_modules/express-minify-html/examples/handlebars/package.json new file mode 100644 index 0000000..9b6dc5e --- /dev/null +++ b/node_modules/express-minify-html/examples/handlebars/package.json @@ -0,0 +1,16 @@ +{ + "name": "express-minify-html-handlebars-example", + "version": "0.0.1", + "description": "Handlebars.js example for this middleware", + "main": "handlebars-example.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node handlebars-example.js" + }, + "author": "Matti Jokitulppo ", + "license": "MIT", + "dependencies": { + "express": "^4.13.3", + "express-handlebars": "^2.0.1" + } +} diff --git a/node_modules/express-minify-html/minifier.js b/node_modules/express-minify-html/minifier.js new file mode 100644 index 0000000..2428893 --- /dev/null +++ b/node_modules/express-minify-html/minifier.js @@ -0,0 +1,53 @@ +'use strict'; + +var minify = require('html-minifier').minify; + +function minifyHTML(opts) { + if (!opts) opts = {}; + + function minifier(req, res, next) { + + var sendMinified = function (callback) { + + // No callback specified, just minify and send to client. + if (typeof callback === 'undefined') { + return function (err, html) { + if (err) { + return next(err); + } + + html = minify(html, opts.htmlMinifier); + res.send(html); + } + } else { + + // Custom callback specified by user, use that one + return function (err, html) { + if (html) { + html = minify(html, opts.htmlMinifier); + } + + callback(err, html); + } + } + }; + + if (opts.override === false) { + res.renderMin = function (view, renderOpts, callback) { + this.render(view, renderOpts, sendMinified(callback)); + } + } else { + res.oldRender = res.render; + res.render = function (view, renderOpts, callback) { + this.oldRender(view, renderOpts, sendMinified(callback)); + }; + } + + return next(); + } + + return (minifier); +} + +module.exports = minifyHTML; + diff --git a/node_modules/express-minify-html/node_modules/.bin/html-minifier b/node_modules/express-minify-html/node_modules/.bin/html-minifier new file mode 120000 index 0000000..fdff598 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/.bin/html-minifier @@ -0,0 +1 @@ +../html-minifier/cli.js \ No newline at end of file diff --git a/node_modules/express-minify-html/node_modules/html-minifier/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/LICENSE new file mode 100644 index 0000000..ed8f360 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2010-2016 Juriy "kangax" Zaytsev + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/README.md b/node_modules/express-minify-html/node_modules/html-minifier/README.md new file mode 100644 index 0000000..fc87b1f --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/README.md @@ -0,0 +1,156 @@ +# HTMLMinifier + +[![NPM version](https://img.shields.io/npm/v/html-minifier.svg)](https://www.npmjs.com/package/html-minifier) +[![Build Status](https://img.shields.io/travis/kangax/html-minifier.svg)](https://travis-ci.org/kangax/html-minifier) +[![Dependency Status](https://img.shields.io/david/kangax/html-minifier.svg)](https://david-dm.org/kangax/html-minifier) +[![devDependency Status](https://img.shields.io/david/dev/kangax/html-minifier.svg)](https://david-dm.org/kangax/html-minifier#info=devDependencies) +[![Gitter](https://img.shields.io/gitter/room/kangax/html-minifier.svg)](https://gitter.im/kangax/html-minifier) + +[HTMLMinifier](http://kangax.github.io/html-minifier/) is a highly **configurable**, **well-tested**, JavaScript-based HTML minifier. + +See [corresponding blog post](http://perfectionkills.com/experimenting-with-html-minifier/) for all the gory details of [how it works](http://perfectionkills.com/experimenting-with-html-minifier/#how_it_works), [description of each option](http://perfectionkills.com/experimenting-with-html-minifier/#options), [testing results](http://perfectionkills.com/experimenting-with-html-minifier/#field_testing) and [conclusions](http://perfectionkills.com/experimenting-with-html-minifier/#cost_and_benefits). + +[Test suite is available online](http://kangax.github.io/html-minifier/tests/). + +Also see corresponding [Ruby wrapper](https://github.com/stereobooster/html_minifier), and for Node.js, [Grunt plugin](https://github.com/gruntjs/grunt-contrib-htmlmin), [Gulp module](https://github.com/jonschlinkert/gulp-htmlmin), and [Koa middleware wrapper](https://github.com/koajs/html-minifier). + +For lint-like capabilities take a look at [HTMLLint](https://github.com/kangax/html-lint). + +## Minification comparison + +How does HTMLMinifier compare to other solutions — [HTML Minifier from Will Peavy](http://www.willpeavy.com/minifier/) (1st result in [Google search for "html minifier"](https://www.google.com/#q=html+minifier)) as well as [htmlcompressor.com](http://htmlcompressor.com) and [minimize](https://github.com/Swaagie/minimize)? + +| Site | Original size *(KB)* | HTMLMinifier | minimize | Will Peavy | htmlcompressor.com | +| --------------------------------------------------------------------------- |:--------------------:| ------------:| --------:| ----------:| ------------------:| +| [Google](https://www.google.com/) | 48 | **46** | 48 | 50 | 49 | +| [HTMLMinifier](https://github.com/kangax/html-minifier) | 116 | **78** | 99 | 103 | 99 | +| [CNN](http://www.cnn.com/) | 121 | **111** | 117 | 119 | 115 | +| [BBC](http://www.bbc.co.uk/) | 193 | **157** | 187 | 192 | 182 | +| [New York Times](http://www.nytimes.com/) | 210 | **146** | 159 | 161 | 153 | +| [Stack Overflow](http://stackoverflow.com/) | 244 | **190** | 198 | 207 | 197 | +| [Bootstrap CSS](http://getbootstrap.com/css/) | 277 | **264** | 274 | 232 | 274 | +| [Amazon](http://www.amazon.co.uk/) | 456 | **403** | 436 | 450 | n/a | +| [Wikipedia](https://en.wikipedia.org/wiki/President_of_the_United_States) | 479 | **435** | 462 | 478 | n/a | +| [NBC](http://www.nbc.com/) | 508 | **487** | 506 | 508 | n/a | +| [Eloquent Javascript](http://eloquentjavascript.net/1st_edition/print.html) | 870 | **815** | 840 | 864 | n/a | +| [ES6 table](http://kangax.github.io/compat-table/es6/) | 3816 | **3207** | 3593 | 3771 | n/a | +| [ES6 draft](https://tc39.github.io/ecma262/) | 4796 | **4247** | 4376 | 4500 | n/a | + +## Options Quick Reference + +| Option | Description | Default | +|--------------------------------|-----------------|---------| +| `caseSensitive` | Treat attributes in case sensitive manner (useful for custom HTML tags) | `false` | +| `collapseBooleanAttributes` | [Omit attribute values from boolean attributes](http://perfectionkills.com/experimenting-with-html-minifier/#collapse_boolean_attributes) | `false` | +| `collapseInlineTagWhitespace` | Don't leave any spaces between `display:inline;` elements when collapsing. Must be used in conjunction with `collapseWhitespace=true` | `false` | +| `collapseWhitespace` | [Collapse white space that contributes to text nodes in a document tree](http://perfectionkills.com/experimenting-with-html-minifier/#collapse_whitespace) | `false` | +| `conservativeCollapse` | Always collapse to 1 space (never remove it entirely). Must be used in conjunction with `collapseWhitespace=true` | `false` | +| `customAttrAssign` | Arrays of regex'es that allow to support custom attribute assign expressions (e.g. `'
'`) | `[ ]` | +| `customAttrCollapse` | Regex that specifies custom attribute to strip newlines from (e.g. `/ng-class/`) | | +| `customAttrSurround` | Arrays of regex'es that allow to support custom attribute surround expressions (e.g. ``) | `[ ]` | +| `customEventAttributes` | Arrays of regex'es that allow to support custom event attributes for `minifyJS` (e.g. `ng-click`) | `[ /^on[a-z]{3,}$/ ]` | +| `decodeEntities` | Use direct Unicode characters whenever possible | `false` | +| `html5` | Parse input according to HTML5 specifications | `true` | +| `ignoreCustomComments` | Array of regex'es that allow to ignore certain comments, when matched | `[ /^!/ ]` | +| `ignoreCustomFragments` | Array of regex'es that allow to ignore certain fragments, when matched (e.g. ``, `{{ ... }}`, etc.) | `[ /<%[\s\S]*?%>/, /<\?[\s\S]*?\?>/ ]` | +| `includeAutoGeneratedTags` | Insert tags generated by HTML parser | `true` | +| `keepClosingSlash` | Keep the trailing slash on singleton elements | `false` | +| `maxLineLength` | Specify a maximum line length. Compressed output will be split by newlines at valid HTML split-points | +| `minifyCSS` | Minify CSS in style elements and style attributes (uses [clean-css](https://github.com/jakubpawlowicz/clean-css)) | `false` (could be `true`, `Object`, `Function(text, inline)`) | +| `minifyJS` | Minify JavaScript in script elements and event attributes (uses [UglifyJS](https://github.com/mishoo/UglifyJS2)) | `false` (could be `true`, `Object`, `Function(text, inline)`) | +| `minifyURLs` | Minify URLs in various attributes (uses [relateurl](https://github.com/stevenvachon/relateurl)) | `false` (could be `String`, `Object`, `Function(text)`) | +| `preserveLineBreaks` | Always collapse to 1 line break (never remove it entirely) when whitespace between tags include a line break. Must be used in conjunction with `collapseWhitespace=true` | `false` | +| `preventAttributesEscaping` | Prevents the escaping of the values of attributes | `false` | +| `processConditionalComments` | Process contents of conditional comments through minifier | `false` | +| `processScripts` | Array of strings corresponding to types of script elements to process through minifier (e.g. `text/ng-template`, `text/x-handlebars-template`, etc.) | `[ ]` | +| `quoteCharacter` | Type of quote to use for attribute values (' or ") | | +| `removeAttributeQuotes` | [Remove quotes around attributes when possible](http://perfectionkills.com/experimenting-with-html-minifier/#remove_attribute_quotes) | `false` | +| `removeComments` | [Strip HTML comments](http://perfectionkills.com/experimenting-with-html-minifier/#remove_comments) | `false` | +| `removeEmptyAttributes` | [Remove all attributes with whitespace-only values](http://perfectionkills.com/experimenting-with-html-minifier/#remove_empty_or_blank_attributes) | `false` | +| `removeEmptyElements` | [Remove all elements with empty contents](http://perfectionkills.com/experimenting-with-html-minifier/#remove_empty_elements) | `false` | +| `removeOptionalTags` | [Remove optional tags](http://perfectionkills.com/experimenting-with-html-minifier/#remove_optional_tags) | `false` | +| `removeRedundantAttributes` | [Remove attributes when value matches default.](http://perfectionkills.com/experimenting-with-html-minifier/#remove_redundant_attributes) | `false` | +| `removeScriptTypeAttributes` | Remove `type="text/javascript"` from `script` tags. Other `type` attribute values are left intact | `false` | +| `removeStyleLinkTypeAttributes`| Remove `type="text/css"` from `style` and `link` tags. Other `type` attribute values are left intact | `false` | +| `removeTagWhitespace` | Remove space between attributes whenever possible. **Note that this will result in invalid HTML!** | `false` | +| `sortAttributes` | [Sort attributes by frequency](#sorting-attributes--style-classes) | `false` | +| `sortClassName` | [Sort style classes by frequency](#sorting-attributes--style-classes) | `false` | +| `useShortDoctype` | [Replaces the `doctype` with the short (HTML5) doctype](http://perfectionkills.com/experimenting-with-html-minifier/#use_short_doctype) | `false` | + +### Sorting attributes / style classes + +Minifier options like `sortAttributes` and `sortClassName` won't impact the plain-text size of the output. However, they form long repetitive chains of characters that should improve compression ratio of gzip used in HTTP compression. + +## Special cases + +### Ignoring chunks of markup + +If you have chunks of markup you would like preserved, you can wrap them ``. + +### Preserving SVG tags + +SVG tags are automatically recognized, and when they are minified, both case-sensitivity and closing-slashes are preserved, regardless of the minification settings used for the rest of the file. + +### Working with invalid markup + +HTMLMinifier **can't work with invalid or partial chunks of markup**. This is because it parses markup into a tree structure, then modifies it (removing anything that was specified for removal, ignoring anything that was specified to be ignored, etc.), then it creates a markup out of that tree and returns it. + +Input markup (e.g. `

foo`) + +↓ + +Internal representation of markup in a form of tree (e.g. `{ tag: "p", attr: "id", children: ["foo"] }`) + +↓ + +Transformation of internal representation (e.g. removal of `id` attribute) + +↓ + +Output of resulting markup (e.g. `

foo

`) + +HTMLMinifier can't know that original markup was only half of the tree; it does its best to try to parse it as a full tree and it loses information about tree being malformed or partial in the beginning. As a result, it can't create a partial/malformed tree at the time of the output. + +## Installation Instructions + +From NPM for use as a command line app: + +```shell +npm install html-minifier -g +``` + +From NPM for programmatic use: + +```shell +npm install html-minifier +``` + +From Git: + +```shell +git clone git://github.com/kangax/html-minifier.git +cd html-minifier +npm link . +``` + +## Usage + +For command line usage please see `html-minifier --help` + +### Node.js + +```js +var minify = require('html-minifier').minify; +var result = minify('

foo

', { + removeAttributeQuotes: true +}); +result; // '

foo

' +``` + +## Running benchmarks + +Benchmarks for minified HTML: + +```shell +node benchmark.js +``` diff --git a/node_modules/express-minify-html/node_modules/html-minifier/cli.js b/node_modules/express-minify-html/node_modules/html-minifier/cli.js new file mode 100755 index 0000000..d38c41e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/cli.js @@ -0,0 +1,281 @@ +#!/usr/bin/env node +/** + * html-minifier CLI tool + * + * The MIT License (MIT) + * + * Copyright (c) 2014-2016 Zoltan Frombach + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +'use strict'; + +var changeCase = require('change-case'); +var fs = require('fs'); +var info = require('./package.json'); +var minify = require('./' + info.main).minify; +var path = require('path'); +var program = require('commander'); + +program._name = info.name; +program.version(info.version); + +function fatal(message) { + console.error(message); + process.exit(1); +} + +/** + * JSON does not support regexes, so, e.g., JSON.parse() will not create + * a RegExp from the JSON value `[ "/matchString/" ]`, which is + * technically just an array containing a string that begins and end with + * a forward slash. To get a RegExp from a JSON string, it must be + * constructed explicitly in JavaScript. + * + * The likelihood of actually wanting to match text that is enclosed in + * forward slashes is probably quite rare, so if forward slashes were + * included in an argument that requires a regex, the user most likely + * thought they were part of the syntax for specifying a regex. + * + * In the unlikely case that forward slashes are indeed desired in the + * search string, the user would need to enclose the expression in a + * second set of slashes: + * + * --customAttrSrround "[\"//matchString//\"]" + */ +function parseRegExp(value) { + if (value) { + return new RegExp(value.replace(/^\/(.*)\/$/, '$1')); + } +} + +function parseJSON(value) { + if (value) { + try { + return JSON.parse(value); + } + catch (e) { + if (/^{/.test(value)) { + fatal('Could not parse JSON value \'' + value + '\''); + } + return value; + } + } +} + +function parseJSONArray(value) { + if (value) { + value = parseJSON(value); + return Array.isArray(value) ? value : [value]; + } +} + +function parseJSONRegExpArray(value) { + value = parseJSONArray(value); + return value && value.map(parseRegExp); +} + +function parseString(value) { + return value; +} + +var mainOptions = { + caseSensitive: 'Treat attributes in case sensitive manner (useful for SVG; e.g. viewBox)', + collapseBooleanAttributes: 'Omit attribute values from boolean attributes', + collapseInlineTagWhitespace: 'Collapse white space around inline tag', + collapseWhitespace: 'Collapse white space that contributes to text nodes in a document tree.', + conservativeCollapse: 'Always collapse to 1 space (never remove it entirely)', + customAttrAssign: ['Arrays of regex\'es that allow to support custom attribute assign expressions (e.g. \'
\')', parseJSONRegExpArray], + customAttrCollapse: ['Regex that specifies custom attribute to strip newlines from (e.g. /ng-class/)', parseRegExp], + customAttrSurround: ['Arrays of regex\'es that allow to support custom attribute surround expressions (e.g. )', parseJSONRegExpArray], + customEventAttributes: ['Arrays of regex\'es that allow to support custom event attributes for minifyJS (e.g. ng-click)', parseJSONRegExpArray], + decodeEntities: 'Use direct Unicode characters whenever possible', + html5: 'Parse input according to HTML5 specifications', + ignoreCustomComments: ['Array of regex\'es that allow to ignore certain comments, when matched', parseJSONRegExpArray], + ignoreCustomFragments: ['Array of regex\'es that allow to ignore certain fragments, when matched (e.g. , {{ ... }})', parseJSONRegExpArray], + includeAutoGeneratedTags: 'Insert tags generated by HTML parser', + keepClosingSlash: 'Keep the trailing slash on singleton elements', + maxLineLength: ['Max line length', parseInt], + minifyCSS: ['Minify CSS in style elements and style attributes (uses clean-css)', parseJSON], + minifyJS: ['Minify Javascript in script elements and on* attributes (uses uglify-js)', parseJSON], + minifyURLs: ['Minify URLs in various attributes (uses relateurl)', parseJSON], + preserveLineBreaks: 'Always collapse to 1 line break (never remove it entirely) when whitespace between tags include a line break.', + preventAttributesEscaping: 'Prevents the escaping of the values of attributes.', + processConditionalComments: 'Process contents of conditional comments through minifier', + processScripts: ['Array of strings corresponding to types of script elements to process through minifier (e.g. "text/ng-template", "text/x-handlebars-template", etc.)', parseJSONArray], + quoteCharacter: ['Type of quote to use for attribute values (\' or ")', parseString], + removeAttributeQuotes: 'Remove quotes around attributes when possible.', + removeComments: 'Strip HTML comments', + removeEmptyAttributes: 'Remove all attributes with whitespace-only values', + removeEmptyElements: 'Remove all elements with empty contents', + removeOptionalTags: 'Remove unrequired tags', + removeRedundantAttributes: 'Remove attributes when value matches default.', + removeScriptTypeAttributes: 'Remove type="text/javascript" from script tags. Other type attribute values are left intact.', + removeStyleLinkTypeAttributes: 'Remove type="text/css" from style and link tags. Other type attribute values are left intact.', + removeTagWhitespace: 'Remove space between attributes whenever possible', + sortAttributes: 'Sort attributes by frequency', + sortClassName: 'Sort style classes by frequency', + useShortDoctype: 'Replaces the doctype with the short (HTML5) doctype' +}; +var mainOptionKeys = Object.keys(mainOptions); +mainOptionKeys.forEach(function(key) { + var option = mainOptions[key]; + key = '--' + changeCase.paramCase(key); + if (Array.isArray(option)) { + var optional = option[1] === parseJSON; + program.option(key + (optional ? ' [value]' : ' '), option[0], option[1]); + } + else { + program.option(key, option); + } +}); +program.option('-o --output ', 'Specify output file (if not specified STDOUT will be used for output)', function(outputPath) { + return fs.createWriteStream(outputPath).on('error', function(e) { + fatal('Cannot write ' + outputPath + '\n' + e.message); + }); +}, process.stdout); + +function readFile(file) { + try { + return fs.readFileSync(file, { encoding: 'utf8' }); + } + catch (e) { + fatal('Cannot read ' + file + '\n' + e.message); + } +} + +var config = {}; +program.option('-c --config-file ', 'Use config file', function(configPath) { + var data = readFile(configPath); + try { + config = JSON.parse(data); + } + catch (je) { + try { + config = require(path.resolve(configPath)); + } + catch (ne) { + fatal('Cannot read the specified config file.\nAs JSON: ' + je.message + '\nAs module: ' + ne.message); + } + } + mainOptionKeys.forEach(function(key) { + if (key in config) { + var option = mainOptions[key]; + if (Array.isArray(option)) { + var value = config[key]; + config[key] = option[1](typeof value === 'string' ? value : JSON.stringify(value)); + } + } + }); +}); +program.option('--input-dir ', 'Specify an input directory'); +program.option('--output-dir ', 'Specify an output directory'); +var content; +program.arguments('[files...]').action(function(files) { + content = files.map(readFile).join(''); +}).parse(process.argv); + +function createOptions() { + var options = {}; + mainOptionKeys.forEach(function(key) { + var param = program[changeCase.camelCase(key)]; + if (typeof param !== 'undefined') { + options[key] = param; + } + else if (key in config) { + options[key] = config[key]; + } + }); + return options; +} + +function processDirectory(inputDir, outputDir) { + fs.readdir(inputDir, function(err, files) { + if (err) { + fatal('Cannot read directory ' + inputDir + '\n' + err.message); + } + fs.mkdir(outputDir, function(err) { + if (err && err.code !== 'EEXIST') { + fatal('Cannot create directory ' + outputDir + '\n' + err.message); + } + files.forEach(function(file) { + var inputFile = path.join(inputDir, file); + var outputFile = path.join(outputDir, file); + fs.readFile(inputFile, { encoding: 'utf8' }, function(err, data) { + if (!err) { + var minified; + try { + minified = minify(data, createOptions()); + } + catch (e) { + fatal('Minification error on ' + inputFile + '\n' + e.message); + } + fs.writeFile(outputFile, minified, { encoding: 'utf8' }, function(err) { + if (err) { + fatal('Cannot write ' + outputFile + '\n' + err.message); + } + }); + } + else if (err.code === 'EISDIR') { + processDirectory(inputFile, outputFile); + } + else { + fatal('Cannot read ' + inputFile + '\n' + err.message); + } + }); + }); + }); + }); +} + +function writeMinify() { + var minified; + try { + minified = minify(content, createOptions()); + } + catch (e) { + fatal('Minification error:\n' + e.message); + } + program.output.write(minified); +} + +var inputDir = program.inputDir; +var outputDir = program.outputDir; +if (inputDir || outputDir) { + if (!inputDir) { + fatal('The option output-dir needs to be used with the option input-dir. If you are working with a single file, use -o.'); + } + else if (!outputDir) { + fatal('You need to specify where to write the output files with the option --output-dir'); + } + processDirectory(inputDir, outputDir); +} +// Minifying one or more files specified on the CMD line +else if (typeof content === 'string') { + writeMinify(); +} +// Minifying input coming from STDIN +else { + content = ''; + process.stdin.setEncoding('utf8'); + process.stdin.on('data', function(data) { + content += data; + }).on('end', writeMinify); +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/cleancss b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/cleancss new file mode 120000 index 0000000..2a3439e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/cleancss @@ -0,0 +1 @@ +../clean-css/bin/cleancss \ No newline at end of file diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/he b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/he new file mode 120000 index 0000000..2a8eb5e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/he @@ -0,0 +1 @@ +../he/bin/he \ No newline at end of file diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/uglifyjs b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/uglifyjs new file mode 120000 index 0000000..fef3468 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/.bin/uglifyjs @@ -0,0 +1 @@ +../uglify-js/bin/uglifyjs \ No newline at end of file diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/change-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/change-case.d.ts new file mode 100644 index 0000000..3a938fa --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/change-case.d.ts @@ -0,0 +1,37 @@ +import noCase = require('no-case') +import dotCase = require('dot-case') +import swapCase = require('swap-case') +import pathCase = require('path-case') +import upperCase = require('upper-case') +import lowerCase = require('lower-case') +import camelCase = require('camel-case') +import snakeCase = require('snake-case') +import titleCase = require('title-case') +import paramCase = require('param-case') +import headerCase = require('header-case') +import pascalCase = require('pascal-case') +import constantCase = require('constant-case') +import sentenceCase = require('sentence-case') +import isUpperCase = require('is-upper-case') +import isLowerCase = require('is-lower-case') +import upperCaseFirst = require('upper-case-first') +import lowerCaseFirst = require('lower-case-first') + +export { noCase, noCase as no } +export { dotCase, dotCase as dot } +export { swapCase, swapCase as swap } +export { pathCase, pathCase as path } +export { upperCase, upperCase as upper } +export { lowerCase, lowerCase as lower } +export { camelCase, camelCase as camel } +export { snakeCase, snakeCase as snake } +export { titleCase, titleCase as title } +export { paramCase, paramCase as param } +export { headerCase, headerCase as header } +export { pascalCase, pascalCase as pascal } +export { constantCase, constantCase as constant } +export { sentenceCase, sentenceCase as sentence } +export { isUpperCase, isUpperCase as isUpper } +export { isLowerCase, isLowerCase as isLower } +export { upperCaseFirst, upperCaseFirst as ucFirst } +export { lowerCaseFirst, lowerCaseFirst as lcFirst } diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/change-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/change-case.js new file mode 100644 index 0000000..4c100de --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/change-case.js @@ -0,0 +1,18 @@ +exports.no = exports.noCase = require('no-case') +exports.dot = exports.dotCase = require('dot-case') +exports.swap = exports.swapCase = require('swap-case') +exports.path = exports.pathCase = require('path-case') +exports.upper = exports.upperCase = require('upper-case') +exports.lower = exports.lowerCase = require('lower-case') +exports.camel = exports.camelCase = require('camel-case') +exports.snake = exports.snakeCase = require('snake-case') +exports.title = exports.titleCase = require('title-case') +exports.param = exports.paramCase = require('param-case') +exports.header = exports.headerCase = require('header-case') +exports.pascal = exports.pascalCase = require('pascal-case') +exports.constant = exports.constantCase = require('constant-case') +exports.sentence = exports.sentenceCase = require('sentence-case') +exports.isUpper = exports.isUpperCase = require('is-upper-case') +exports.isLower = exports.isLowerCase = require('is-lower-case') +exports.ucFirst = exports.upperCaseFirst = require('upper-case-first') +exports.lcFirst = exports.lowerCaseFirst = require('lower-case-first') diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/camel-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/camel-case.d.ts new file mode 100644 index 0000000..782ef3b --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/camel-case.d.ts @@ -0,0 +1,3 @@ +declare function camelCase (value: string, locale?: string, mergeNumbers?: boolean): string; + +export = camelCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/camel-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/camel-case.js new file mode 100644 index 0000000..1be652e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/camel-case.js @@ -0,0 +1,23 @@ +var upperCase = require('upper-case') +var noCase = require('no-case') + +/** + * Camel case a string. + * + * @param {string} value + * @param {string} [locale] + * @return {string} + */ +module.exports = function (value, locale, mergeNumbers) { + var result = noCase(value, locale) + + // Replace periods between numeric entities with an underscore. + if (!mergeNumbers) { + result = result.replace(/ (?=\d)/g, '_') + } + + // Replace spaces between words with an upper cased character. + return result.replace(/ (.)/g, function (m, $1) { + return upperCase($1, locale) + }) +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/package.json new file mode 100644 index 0000000..0ccbada --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/camel-case/package.json @@ -0,0 +1,82 @@ +{ + "name": "camel-case", + "version": "3.0.0", + "description": "Camel case a string", + "main": "camel-case.js", + "typings": "camel-case.d.ts", + "files": [ + "camel-case.js", + "camel-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-spec": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/camel-case.git" + }, + "keywords": [ + "camel", + "case", + "camelcase", + "camel-case", + "dash", + "hyphen", + "dot", + "underscore", + "lodash", + "separator", + "string", + "text", + "convert" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/camel-case/issues" + }, + "homepage": "https://github.com/blakeembrey/camel-case", + "devDependencies": { + "istanbul": "^0.4.3", + "mocha": "^2.2.1", + "standard": "^7.1.2" + }, + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + }, + "gitHead": "719ebc39a5bf828f794db64bb1a78c8dd8fef133", + "_id": "camel-case@3.0.0", + "_shasum": "ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73", + "_from": "camel-case@>=3.0.0 <4.0.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73", + "tarball": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/camel-case-3.0.0.tgz_1465692427226_0.6504076849669218" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/constant-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/constant-case.d.ts new file mode 100644 index 0000000..69f400c --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/constant-case.d.ts @@ -0,0 +1,3 @@ +declare function constantCase (value: string, locale?: string): string; + +export = constantCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/constant-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/constant-case.js new file mode 100644 index 0000000..880bcce --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/constant-case.js @@ -0,0 +1,13 @@ +var upperCase = require('upper-case') +var snakeCase = require('snake-case') + +/** + * Constant case a string. + * + * @param {string} value + * @param {string} [locale] + * @return {string} + */ +module.exports = function (value, locale) { + return upperCase(snakeCase(value, locale), locale) +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/package.json new file mode 100644 index 0000000..f28d8d3 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/constant-case/package.json @@ -0,0 +1,72 @@ +{ + "name": "constant-case", + "version": "2.0.0", + "description": "Constant case a string", + "main": "constant-case.js", + "typings": "constant-case.d.ts", + "files": [ + "constant-case.js", + "constant-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-std": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/constant-case.git" + }, + "keywords": [ + "constant", + "case", + "upper" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/constant-case/issues" + }, + "homepage": "https://github.com/blakeembrey/constant-case", + "devDependencies": { + "istanbul": "^0.4.3", + "mocha": "^2.2.1", + "standard": "^7.1.2" + }, + "dependencies": { + "snake-case": "^2.1.0", + "upper-case": "^1.1.1" + }, + "gitHead": "406d1772f9bbcc7ad1aa7abb1085096e440f17c9", + "_id": "constant-case@2.0.0", + "_shasum": "4175764d389d3fa9c8ecd29186ed6005243b6a46", + "_from": "constant-case@>=2.0.0 <3.0.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "4175764d389d3fa9c8ecd29186ed6005243b6a46", + "tarball": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/constant-case-2.0.0.tgz_1465693065584_0.4882398748304695" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/dot-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/dot-case.d.ts new file mode 100644 index 0000000..af4d977 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/dot-case.d.ts @@ -0,0 +1,3 @@ +declare function dotCase (value: string, locale?: string): string; + +export = dotCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/dot-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/dot-case.js new file mode 100644 index 0000000..15beb49 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/dot-case.js @@ -0,0 +1,12 @@ +var noCase = require('no-case') + +/** + * Dot case a string. + * + * @param {string} value + * @param {string} [locale] + * @return {string} + */ +module.exports = function (value, locale) { + return noCase(value, locale, '.') +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/package.json new file mode 100644 index 0000000..14eb9f4 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/dot-case/package.json @@ -0,0 +1,71 @@ +{ + "name": "dot-case", + "version": "2.1.0", + "description": "Dot case a string", + "main": "dot-case.js", + "typings": "dot-case.d.ts", + "files": [ + "dot-case.js", + "dot-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-spec": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/dot-case.git" + }, + "keywords": [ + "dot", + "case", + "period" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/dot-case/issues" + }, + "homepage": "https://github.com/blakeembrey/dot-case", + "devDependencies": { + "istanbul": "^0.4.3", + "mocha": "^2.1.0", + "standard": "^7.1.2" + }, + "dependencies": { + "no-case": "^2.2.0" + }, + "gitHead": "7b2cacea8176f4579b141de45a337a001abf17f1", + "_id": "dot-case@2.1.0", + "_shasum": "4b43dd0d7403c34cb645424add397e80bfe85ca6", + "_from": "dot-case@>=2.1.0 <3.0.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "4b43dd0d7403c34cb645424add397e80bfe85ca6", + "tarball": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/dot-case-2.1.0.tgz_1465691751033_0.8230400336906314" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/header-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/header-case.d.ts new file mode 100644 index 0000000..9d579e0 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/header-case.d.ts @@ -0,0 +1,3 @@ +declare function headerCase (value: string, locale?: string): string; + +export = headerCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/header-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/header-case.js new file mode 100644 index 0000000..3b7039b --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/header-case.js @@ -0,0 +1,15 @@ +var noCase = require('no-case') +var upperCase = require('upper-case') + +/** + * Header case a string. + * + * @param {string} value + * @param {string} [locale] + * @return {string} + */ +module.exports = function (value, locale) { + return noCase(value, locale, '-').replace(/^.|\-./g, function (m) { + return upperCase(m, locale) + }) +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/package.json new file mode 100644 index 0000000..9ae2307 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/header-case/package.json @@ -0,0 +1,73 @@ +{ + "name": "header-case", + "version": "1.0.0", + "description": "Header case a string", + "main": "header-case.js", + "typings": "header-case.d.ts", + "files": [ + "header-case.js", + "header-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-spec": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/header-case.git" + }, + "keywords": [ + "header", + "case", + "upper", + "http" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/header-case/issues" + }, + "homepage": "https://github.com/blakeembrey/header-case", + "devDependencies": { + "istanbul": "^0.4.3", + "mocha": "^2.2.1", + "standard": "^7.1.2" + }, + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.3" + }, + "gitHead": "9323b0d908a1bcbe52948c8a77896b5206d46a29", + "_id": "header-case@1.0.0", + "_shasum": "d9e335909505d56051ec16a0106821889e910781", + "_from": "header-case@>=1.0.0 <2.0.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "d9e335909505d56051ec16a0106821889e910781", + "tarball": "https://registry.npmjs.org/header-case/-/header-case-1.0.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/header-case-1.0.0.tgz_1465693933154_0.670644786208868" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/README.md b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/README.md new file mode 100644 index 0000000..ec555b8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/README.md @@ -0,0 +1,41 @@ +# Is Lower Case + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +Check if a string is lower case. + +## Installation + +``` +npm install is-lower-case --save +``` + +## Usage + +```js +var isLowerCase = require('is-lower-case') + +isLowerCase('string') //=> true +isLowerCase('String') //=> false +isLowerCase('STRING') //=> false +``` + +## Typings + +Includes a [TypeScript definition](is-lower-case.d.ts). + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/is-lower-case.svg?style=flat +[npm-url]: https://npmjs.org/package/is-lower-case +[downloads-image]: https://img.shields.io/npm/dm/lower-case.svg?style=flat +[downloads-url]: https://npmjs.org/package/lower-case +[travis-image]: https://img.shields.io/travis/blakeembrey/is-lower-case.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/is-lower-case +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/is-lower-case.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/is-lower-case?branch=master diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/is-lower-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/is-lower-case.d.ts new file mode 100644 index 0000000..0425a70 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/is-lower-case.d.ts @@ -0,0 +1,3 @@ +declare function isLowerCase (value: string, locale?: string): boolean; + +export = isLowerCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/is-lower-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/is-lower-case.js new file mode 100644 index 0000000..bea4003 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/is-lower-case.js @@ -0,0 +1,12 @@ +var lowerCase = require('lower-case') + +/** + * Check if a string is lower case. + * + * @param {String} string + * @param {String} [locale] + * @return {Boolean} + */ +module.exports = function (string, locale) { + return lowerCase(string, locale) === string +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/package.json new file mode 100644 index 0000000..760e673 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-lower-case/package.json @@ -0,0 +1,69 @@ +{ + "name": "is-lower-case", + "version": "1.1.3", + "description": "Check if a string is lower cased", + "main": "is-lower-case.js", + "typings": "is-lower-case.d.ts", + "files": [ + "is-lower-case.js", + "is-lower-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-std": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/is-lower-case.git" + }, + "keywords": [ + "cases", + "lower", + "lowercase", + "check" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/is-lower-case/issues" + }, + "homepage": "https://github.com/blakeembrey/is-lower-case", + "devDependencies": { + "istanbul": "^0.3.0", + "mocha": "^2.1.0", + "pre-commit": "^1.0.2", + "standard": "^2.4.5" + }, + "dependencies": { + "lower-case": "^1.1.0" + }, + "gitHead": "eebde9578b0d52f1fac46d34495e16a252a8fe30", + "_id": "is-lower-case@1.1.3", + "_shasum": "7e147be4768dc466db3bfb21cc60b31e6ad69393", + "_from": "is-lower-case@>=1.1.0 <2.0.0", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "7e147be4768dc466db3bfb21cc60b31e6ad69393", + "tarball": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "directories": {}, + "_resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/README.md b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/README.md new file mode 100644 index 0000000..27f9e41 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/README.md @@ -0,0 +1,41 @@ +# Is Upper Case + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +Check if a string is upper case. + +## Installation + +``` +npm install is-upper-case --save +``` + +## Usage + +```js +var isUpperCase = require('is-upper-case') + +isUpperCase('STRING') //=> true +isUpperCase('String') //=> false +isUpperCase('string') //=> false +``` + +## Typings + +Includes a [TypeScript definition](is-upper-case.d.ts). + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/is-upper-case.svg?style=flat +[npm-url]: https://npmjs.org/package/is-upper-case +[downloads-image]: https://img.shields.io/npm/dm/is-upper-case.svg?style=flat +[downloads-url]: https://npmjs.org/package/is-upper-case +[travis-image]: https://img.shields.io/travis/blakeembrey/is-upper-case.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/is-upper-case +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/is-upper-case.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/is-upper-case?branch=master diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/is-upper-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/is-upper-case.d.ts new file mode 100644 index 0000000..c3e2b57 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/is-upper-case.d.ts @@ -0,0 +1,3 @@ +declare function isUpperCase (value: string, locale?: string): string; + +export = isUpperCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/is-upper-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/is-upper-case.js new file mode 100644 index 0000000..ea63cb8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/is-upper-case.js @@ -0,0 +1,12 @@ +var upperCase = require('upper-case') + +/** + * Check if a string is upper case. + * + * @param {String} string + * @param {String} [locale] + * @return {Boolean} + */ +module.exports = function (string, locale) { + return upperCase(string, locale) === string +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/package.json new file mode 100644 index 0000000..8ddabc8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/is-upper-case/package.json @@ -0,0 +1,76 @@ +{ + "name": "is-upper-case", + "version": "1.1.2", + "description": "Check if a string is upper cased", + "main": "is-upper-case.js", + "typings": "is-upper-case.d.ts", + "files": [ + "is-upper-case.js", + "is-upper-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-std": "mocha -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "standard": { + "ignore": [ + "coverage/**", + "node_modules/**", + "bower_components/**" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/is-upper-case.git" + }, + "keywords": [ + "cases", + "upper", + "uppercase", + "check" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/is-upper-case/issues" + }, + "homepage": "https://github.com/blakeembrey/is-upper-case", + "devDependencies": { + "istanbul": "^0.3.0", + "mocha": "^1.18.2", + "pre-commit": "^1.0.2", + "standard": "^2.4.5" + }, + "dependencies": { + "upper-case": "^1.1.0" + }, + "gitHead": "ee6460fb590b22a49a0e25a3e2b901d35a795050", + "_id": "is-upper-case@1.1.2", + "_shasum": "8d0b1fa7e7933a1e58483600ec7d9661cbaf756f", + "_from": "is-upper-case@>=1.1.0 <2.0.0", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "8d0b1fa7e7933a1e58483600ec7d9661cbaf756f", + "tarball": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "directories": {}, + "_resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/README.md b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/README.md new file mode 100644 index 0000000..7dd7471 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/README.md @@ -0,0 +1,42 @@ +# Lower Case First + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +Lower case the first character of a string. + +Supports Unicode (non-ASCII characters) and non-string entities, such as objects with a `toString` property, numbers and booleans. Empty values (`null` and `undefined`) will result in an empty string. + +## Installation + +``` +npm install lower-case-first --save +``` + +## Usage + +```js +var lowerCaseFirst = require('lower-case-first') + +lowerCaseFirst(null) //=> "" +lowerCaseFirst('STRING') //=> "sTRING" +``` + +## Typings + +Includes a [TypeScript definition](lower-case-first.d.ts). + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/lower-case-first.svg?style=flat +[npm-url]: https://npmjs.org/package/lower-case-first +[downloads-image]: https://img.shields.io/npm/dm/lower-case-first.svg?style=flat +[downloads-url]: https://npmjs.org/package/lower-case-first +[travis-image]: https://img.shields.io/travis/blakeembrey/lower-case-first.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/lower-case-first +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/lower-case-first.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/lower-case-first?branch=master diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/lower-case-first.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/lower-case-first.d.ts new file mode 100644 index 0000000..2195cef --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/lower-case-first.d.ts @@ -0,0 +1,3 @@ +declare function lowerCaseFirst (value: string, locale?: string): string; + +export = lowerCaseFirst; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/lower-case-first.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/lower-case-first.js new file mode 100644 index 0000000..7c9c632 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/lower-case-first.js @@ -0,0 +1,17 @@ +var lowerCase = require('lower-case') + +/** + * Lower case the first character of a string. + * + * @param {String} str + * @return {String} + */ +module.exports = function (str, locale) { + if (str == null) { + return '' + } + + str = String(str) + + return lowerCase(str.charAt(0), locale) + str.substr(1) +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/package.json new file mode 100644 index 0000000..c935964 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case-first/package.json @@ -0,0 +1,70 @@ +{ + "name": "lower-case-first", + "version": "1.0.2", + "description": "Lower case the first character of a string", + "main": "lower-case-first.js", + "typings": "lower-case-first.d.ts", + "files": [ + "lower-case-first.js", + "lower-case-first.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-std": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/lower-case-first.git" + }, + "keywords": [ + "cases", + "first", + "lower", + "lowercase", + "case" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/lower-case-first/issues" + }, + "homepage": "https://github.com/blakeembrey/lower-case-first", + "devDependencies": { + "istanbul": "^0.3.0", + "mocha": "^1.18.2", + "pre-commit": "0.0.9", + "standard": "^3.3.0" + }, + "dependencies": { + "lower-case": "^1.1.2" + }, + "gitHead": "c54d3d27cce14d9a700c9a608fd722f209d79feb", + "_id": "lower-case-first@1.0.2", + "_shasum": "e5da7c26f29a7073be02d52bac9980e5922adfa1", + "_from": "lower-case-first@>=1.0.0 <2.0.0", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "e5da7c26f29a7073be02d52bac9980e5922adfa1", + "tarball": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "directories": {}, + "_resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/README.md b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/README.md new file mode 100644 index 0000000..c28e13e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/README.md @@ -0,0 +1,45 @@ +# Lower Case + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +Lower case a string. + +Supports Unicode (non-ASCII characters) and non-string entities, such as objects with a `toString` property, numbers and booleans. Empty values (`null` and `undefined`) will result in an empty string. + +## Installation + +``` +npm install lower-case --save +``` + +## Usage + +```js +var lowerCase = require('lower-case') + +lowerCase(null) //=> "" +lowerCase('STRING') //=> "string" +lowerCase('STRING', 'tr') //=> "strıng" + +upperCase({ toString: function () { return 'TEST' } }) //=> "test" +``` + +## Typings + +Includes a [TypeScript definition](lower-case.d.ts). + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/lower-case.svg?style=flat +[npm-url]: https://npmjs.org/package/lower-case +[downloads-image]: https://img.shields.io/npm/dm/lower-case.svg?style=flat +[downloads-url]: https://npmjs.org/package/lower-case +[travis-image]: https://img.shields.io/travis/blakeembrey/lower-case.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/lower-case +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/lower-case.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/lower-case?branch=master diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/lower-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/lower-case.d.ts new file mode 100644 index 0000000..5b68a8f --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/lower-case.d.ts @@ -0,0 +1,3 @@ +declare function lowerCase (value: string, locale: string): string; + +export = lowerCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/lower-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/lower-case.js new file mode 100644 index 0000000..93b7bf9 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/lower-case.js @@ -0,0 +1,54 @@ +/** + * Special language-specific overrides. + * + * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt + * + * @type {Object} + */ +var LANGUAGES = { + tr: { + regexp: /\u0130|\u0049|\u0049\u0307/g, + map: { + '\u0130': '\u0069', + '\u0049': '\u0131', + '\u0049\u0307': '\u0069' + } + }, + az: { + regexp: /[\u0130]/g, + map: { + '\u0130': '\u0069', + '\u0049': '\u0131', + '\u0049\u0307': '\u0069' + } + }, + lt: { + regexp: /[\u0049\u004A\u012E\u00CC\u00CD\u0128]/g, + map: { + '\u0049': '\u0069\u0307', + '\u004A': '\u006A\u0307', + '\u012E': '\u012F\u0307', + '\u00CC': '\u0069\u0307\u0300', + '\u00CD': '\u0069\u0307\u0301', + '\u0128': '\u0069\u0307\u0303' + } + } +} + +/** + * Lowercase a string. + * + * @param {String} str + * @return {String} + */ +module.exports = function (str, locale) { + var lang = LANGUAGES[locale] + + str = str == null ? '' : String(str) + + if (lang) { + str = str.replace(lang.regexp, function (m) { return lang.map[m] }) + } + + return str.toLowerCase() +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/package.json new file mode 100644 index 0000000..56d523f --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/lower-case/package.json @@ -0,0 +1,74 @@ +{ + "name": "lower-case", + "version": "1.1.3", + "description": "Lowercase a string", + "main": "lower-case.js", + "typings": "lower-case.d.ts", + "files": [ + "lower-case.js", + "lower-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-std": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "standard": { + "ignore": [ + "coverage/**", + "node_modules/**", + "bower_components/**" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/lower-case.git" + }, + "keywords": [ + "cases", + "lower", + "lowercase", + "case" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/lower-case/issues" + }, + "homepage": "https://github.com/blakeembrey/lower-case", + "devDependencies": { + "istanbul": "^0.3.5", + "mocha": "^2.1.0", + "pre-commit": "^1.0.2", + "standard": "^2.4.5" + }, + "dependencies": {}, + "gitHead": "eea14afbff76859fc936cc5524796cbcf4964055", + "_id": "lower-case@1.1.3", + "_shasum": "c92393d976793eee5ba4edb583cf8eae35bd9bfb", + "_from": "lower-case@>=1.1.1 <2.0.0", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "c92393d976793eee5ba4edb583cf8eae35bd9bfb", + "tarball": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.3.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "directories": {}, + "_resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.3.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/no-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/no-case.d.ts new file mode 100644 index 0000000..3acd2c2 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/no-case.d.ts @@ -0,0 +1,3 @@ +declare function noCase (value: string, locale?: string, replacement?: string): string; + +export = noCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/no-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/no-case.js new file mode 100644 index 0000000..fc1da9e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/no-case.js @@ -0,0 +1,40 @@ +var lowerCase = require('lower-case') + +var NON_WORD_REGEXP = require('./vendor/non-word-regexp') +var CAMEL_CASE_REGEXP = require('./vendor/camel-case-regexp') +var CAMEL_CASE_UPPER_REGEXP = require('./vendor/camel-case-upper-regexp') + +/** + * Sentence case a string. + * + * @param {string} str + * @param {string} locale + * @param {string} replacement + * @return {string} + */ +module.exports = function (str, locale, replacement) { + if (str == null) { + return '' + } + + replacement = replacement || ' ' + + function replace (match, index, value) { + if (index === 0 || index === (value.length - match.length)) { + return '' + } + + return replacement + } + + str = String(str) + // Support camel case ("camelCase" -> "camel Case"). + .replace(CAMEL_CASE_REGEXP, '$1 $2') + // Support odd camel case ("CAMELCase" -> "CAMEL Case"). + .replace(CAMEL_CASE_UPPER_REGEXP, '$1 $2') + // Remove all non-word characters and replace with a single space. + .replace(NON_WORD_REGEXP, replace) + + // Lower case the entire string. + return lowerCase(str, locale) +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/package.json new file mode 100644 index 0000000..d7f4d9c --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/package.json @@ -0,0 +1,82 @@ +{ + "name": "no-case", + "version": "2.3.0", + "description": "Remove case from a string", + "main": "no-case.js", + "typings": "no-case.d.ts", + "files": [ + "no-case.js", + "no-case.d.ts", + "vendor", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run build && npm run lint && npm run test-cov", + "build": "node build.js" + }, + "standard": { + "ignore": [ + "coverage/**" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/no-case.git" + }, + "keywords": [ + "no", + "case", + "space", + "lower", + "trim" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/no-case/issues" + }, + "homepage": "https://github.com/blakeembrey/no-case", + "devDependencies": { + "chai": "^3.5.0", + "istanbul": "^0.4.3", + "jsesc": "^2.2.0", + "mocha": "^2.1.0", + "standard": "^7.1.2", + "xregexp": "^3.1.1" + }, + "dependencies": { + "lower-case": "^1.1.1" + }, + "gitHead": "651f544bf864011205b48736ebc3029ace0af563", + "_id": "no-case@2.3.0", + "_shasum": "ca2825ccb76b18e6f79d573dcfbf1eace33dd164", + "_from": "no-case@>=2.2.0 <3.0.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "ca2825ccb76b18e6f79d573dcfbf1eace33dd164", + "tarball": "https://registry.npmjs.org/no-case/-/no-case-2.3.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/no-case-2.3.0.tgz_1466439491980_0.6107419265899807" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/camel-case-regexp.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/camel-case-regexp.js new file mode 100644 index 0000000..01e9e06 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/camel-case-regexp.js @@ -0,0 +1 @@ +module.exports = /([a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19])([A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A])/g diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/camel-case-upper-regexp.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/camel-case-upper-regexp.js new file mode 100644 index 0000000..5fb3b91 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/camel-case-upper-regexp.js @@ -0,0 +1 @@ +module.exports = /([A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A]+)([A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A][a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A])/g diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/non-word-regexp.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/non-word-regexp.js new file mode 100644 index 0000000..33064e3 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/no-case/vendor/non-word-regexp.js @@ -0,0 +1 @@ +module.exports = /[^A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]+/g diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/package.json new file mode 100644 index 0000000..d9040be --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/package.json @@ -0,0 +1,72 @@ +{ + "name": "param-case", + "version": "2.1.0", + "description": "Param case a string", + "main": "param-case.js", + "typings": "param-case.d.ts", + "files": [ + "param-case.js", + "param-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-std": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/param-case.git" + }, + "keywords": [ + "param", + "case", + "dash", + "hyphen" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/param-case/issues" + }, + "homepage": "https://github.com/blakeembrey/param-case", + "devDependencies": { + "istanbul": "^0.4.3", + "mocha": "^2.1.0", + "standard": "^7.1.2" + }, + "dependencies": { + "no-case": "^2.2.0" + }, + "gitHead": "ab3e48eeba047ec15f43b3c3e2c25ff83f4147bb", + "_id": "param-case@2.1.0", + "_shasum": "2619f90fd6c829ed0b958f1c84ed03a745a6d70a", + "_from": "param-case@>=2.1.0 <3.0.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "2619f90fd6c829ed0b958f1c84ed03a745a6d70a", + "tarball": "https://registry.npmjs.org/param-case/-/param-case-2.1.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/param-case-2.1.0.tgz_1465690191189_0.3026751666329801" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/param-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/param-case.d.ts new file mode 100644 index 0000000..1a4ba2e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/param-case.d.ts @@ -0,0 +1,3 @@ +declare function paramCase (value: string, locale?: string): string; + +export = paramCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/param-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/param-case.js new file mode 100644 index 0000000..1c884a0 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/param-case/param-case.js @@ -0,0 +1,12 @@ +var noCase = require('no-case') + +/** + * Param case a string. + * + * @param {string} value + * @param {string} [locale] + * @return {string} + */ +module.exports = function (value, locale) { + return noCase(value, locale, '-') +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/package.json new file mode 100644 index 0000000..e9e610e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/package.json @@ -0,0 +1,71 @@ +{ + "name": "pascal-case", + "version": "2.0.0", + "description": "Pascal case a string", + "main": "pascal-case.js", + "typings": "pascal-case.d.ts", + "scripts": { + "lint": "standard", + "test-std": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "files": [ + "pascal-case.js", + "pascal-case.d.ts", + "LICENSE" + ], + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/pascal-case.git" + }, + "keywords": [ + "pascal", + "case" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/pascal-case/issues" + }, + "homepage": "https://github.com/blakeembrey/pascal-case", + "devDependencies": { + "istanbul": "^0.4.3", + "mocha": "^2.2.1", + "standard": "^7.1.2" + }, + "dependencies": { + "camel-case": "^3.0.0", + "upper-case-first": "^1.1.0" + }, + "gitHead": "d39cb9182d90faf4154979e070532edc51b3ae39", + "_id": "pascal-case@2.0.0", + "_shasum": "39c248bde5a8dc02d5160696bdb01e044d016ee1", + "_from": "pascal-case@>=2.0.0 <3.0.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "39c248bde5a8dc02d5160696bdb01e044d016ee1", + "tarball": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/pascal-case-2.0.0.tgz_1465692777291_0.48514753696508706" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/pascal-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/pascal-case.d.ts new file mode 100644 index 0000000..3da9606 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/pascal-case.d.ts @@ -0,0 +1,3 @@ +declare function pascalCase (value: string, locale?: string, mergeNumbers?: boolean): string; + +export = pascalCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/pascal-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/pascal-case.js new file mode 100644 index 0000000..8f2908e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/pascal-case/pascal-case.js @@ -0,0 +1,14 @@ +var camelCase = require('camel-case') +var upperCaseFirst = require('upper-case-first') + +/** + * Pascal case a string. + * + * @param {string} value + * @param {string} [locale] + * @param {boolean} [mergeNumbers] + * @return {string} + */ +module.exports = function (value, locale, mergeNumbers) { + return upperCaseFirst(camelCase(value, locale, mergeNumbers), locale) +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/package.json new file mode 100644 index 0000000..54dccc9 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/package.json @@ -0,0 +1,71 @@ +{ + "name": "path-case", + "version": "2.1.0", + "description": "Path case a string", + "main": "path-case.js", + "typings": "path-case.d.ts", + "files": [ + "path-case.js", + "path-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-spec": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/path-case.git" + }, + "keywords": [ + "path", + "case", + "slash" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/path-case/issues" + }, + "homepage": "https://github.com/blakeembrey/path-case", + "devDependencies": { + "istanbul": "^0.4.3", + "mocha": "^2.1.0", + "standard": "^7.1.2" + }, + "dependencies": { + "no-case": "^2.2.0" + }, + "gitHead": "0dd33536d8b2d5b02bd53c1feacebeb5a13ba0aa", + "_id": "path-case@2.1.0", + "_shasum": "5ac491de642936e5dfe0e18d16c461b8be8cf073", + "_from": "path-case@>=2.1.0 <3.0.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "5ac491de642936e5dfe0e18d16c461b8be8cf073", + "tarball": "https://registry.npmjs.org/path-case/-/path-case-2.1.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/path-case-2.1.0.tgz_1465690090889_0.9875110087450594" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/path-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/path-case.d.ts new file mode 100644 index 0000000..61a5de6 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/path-case.d.ts @@ -0,0 +1,3 @@ +declare function pathCase (value: string, locale?: string): string; + +export = pathCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/path-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/path-case.js new file mode 100644 index 0000000..d6d6139 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/path-case/path-case.js @@ -0,0 +1,12 @@ +var noCase = require('no-case') + +/** + * Path case a string. + * + * @param {string} value + * @param {string} [locale] + * @return {string} + */ +module.exports = function (value, locale) { + return noCase(value, locale, '/') +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/LICENSE new file mode 100644 index 0000000..9e1feb0 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/package.json new file mode 100644 index 0000000..d9077aa --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/package.json @@ -0,0 +1,74 @@ +{ + "name": "sentence-case", + "version": "2.1.0", + "description": "Sentence case a string", + "main": "sentence-case.js", + "typings": "sentence-case.d.ts", + "files": [ + "sentence-case.js", + "sentence-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-spec": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/sentence-case.git" + }, + "keywords": [ + "sentence", + "case", + "upper-case", + "first", + "lower-case" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/sentence-case/issues" + }, + "homepage": "https://github.com/blakeembrey/sentence-case", + "devDependencies": { + "istanbul": "^0.4.3", + "mocha": "^2.2.1", + "standard": "^7.1.2" + }, + "dependencies": { + "no-case": "^2.2.0", + "upper-case-first": "^1.1.2" + }, + "gitHead": "4ced710fbaebc14f24e18bb13af45411b5fd0d0b", + "_id": "sentence-case@2.1.0", + "_shasum": "d592fbed457fd1a59e3af0ee17e99f6fd70d7efd", + "_from": "sentence-case@>=2.1.0 <3.0.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "d592fbed457fd1a59e3af0ee17e99f6fd70d7efd", + "tarball": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/sentence-case-2.1.0.tgz_1465692062463_0.5940663432702422" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/sentence-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/sentence-case.d.ts new file mode 100644 index 0000000..86dc24e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/sentence-case.d.ts @@ -0,0 +1,3 @@ +declare function sentenceCase (value: string, locale?: string, mergeNumbers?: boolean): string; + +export = sentenceCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/sentence-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/sentence-case.js new file mode 100644 index 0000000..aa37dce --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/sentence-case/sentence-case.js @@ -0,0 +1,13 @@ +var noCase = require('no-case') +var upperCaseFirst = require('upper-case-first') + +/** + * Sentence case a string. + * + * @param {string} value + * @param {string} [locale] + * @return {string} + */ +module.exports = function (value, locale) { + return upperCaseFirst(noCase(value, locale), locale) +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/package.json new file mode 100644 index 0000000..f0791c6 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/package.json @@ -0,0 +1,71 @@ +{ + "name": "snake-case", + "version": "2.1.0", + "description": "Snake case a string", + "main": "snake-case.js", + "typings": "snake-case.d.ts", + "files": [ + "snake-case.js", + "snake-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-spec": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/snake-case.git" + }, + "keywords": [ + "snake", + "case", + "underscore" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/snake-case/issues" + }, + "homepage": "https://github.com/blakeembrey/snake-case", + "devDependencies": { + "istanbul": "^0.4.3", + "mocha": "^2.1.0", + "standard": "^7.1.2" + }, + "dependencies": { + "no-case": "^2.2.0" + }, + "gitHead": "915432773b1dc136e380ad7c5b6a206387d206e7", + "_id": "snake-case@2.1.0", + "_shasum": "41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f", + "_from": "snake-case@>=2.1.0 <3.0.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f", + "tarball": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/snake-case-2.1.0.tgz_1465691899446_0.366250887978822" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/snake-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/snake-case.d.ts new file mode 100644 index 0000000..73fa86e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/snake-case.d.ts @@ -0,0 +1,3 @@ +declare function snakeCase (value: string, locale?: string): string; + +export = snakeCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/snake-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/snake-case.js new file mode 100644 index 0000000..7660fab --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/snake-case/snake-case.js @@ -0,0 +1,12 @@ +var noCase = require('no-case') + +/** + * Snake case a string. + * + * @param {string} value + * @param {string} [locale] + * @return {string} + */ +module.exports = function (value, locale) { + return noCase(value, locale, '_') +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/README.md b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/README.md new file mode 100644 index 0000000..887d2c1 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/README.md @@ -0,0 +1,46 @@ +# Swap Case + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +Swap the case of a string. + +Supports Unicode (non-ASCII characters) and non-string entities, such as objects with a `toString` property, numbers and booleans. Empty values (`null` and `undefined`) will result in an empty string. + +## Installation + +``` +npm install swap-case --save +``` + +## Usage + +```javascript +var swapCase = require('swap-case') + +swapCase(null) //=> "" +swapCase('string') //=> "STRING" +swapCase('PascalCase') //=> "pASCALcASE" +swapCase('Iñtërnâtiônàlizætiøn') //=> "iÑTËRNÂTIÔNÀLIZÆTIØN" + +swapCase('My String', 'tr') //=> "mY sTRİNG" +``` + +## Typings + +Includes a [TypeScript definition](swap-case.d.ts). + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/swap-case.svg?style=flat +[npm-url]: https://npmjs.org/package/swap-case +[downloads-image]: https://img.shields.io/npm/dm/swap-case.svg?style=flat +[downloads-url]: https://npmjs.org/package/swap-case +[travis-image]: https://img.shields.io/travis/blakeembrey/swap-case.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/swap-case +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/swap-case.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/swap-case?branch=master diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/package.json new file mode 100644 index 0000000..b6aea72 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/package.json @@ -0,0 +1,70 @@ +{ + "name": "swap-case", + "version": "1.1.2", + "description": "Swap the case of a string", + "main": "swap-case.js", + "typings": "swap-case.d.ts", + "files": [ + "swap-case.js", + "swap-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-std": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/swap-case.git" + }, + "keywords": [ + "swap", + "case", + "reverse", + "switch" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/swap-case/issues" + }, + "homepage": "https://github.com/blakeembrey/swap-case", + "devDependencies": { + "istanbul": "^0.3.0", + "mocha": "^2.2.1", + "pre-commit": "^1.0.6", + "standard": "^3.3.0" + }, + "dependencies": { + "lower-case": "^1.1.1", + "upper-case": "^1.1.1" + }, + "gitHead": "eaaa7e37d03c6d29bd2287caa5a1d1d25c3056af", + "_id": "swap-case@1.1.2", + "_shasum": "c39203a4587385fad3c850a0bd1bcafa081974e3", + "_from": "swap-case@>=1.1.0 <2.0.0", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "c39203a4587385fad3c850a0bd1bcafa081974e3", + "tarball": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "directories": {}, + "_resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/swap-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/swap-case.d.ts new file mode 100644 index 0000000..6c54dc5 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/swap-case.d.ts @@ -0,0 +1,3 @@ +declare function swapCase (value: string, locale?: string): string; + +export = swapCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/swap-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/swap-case.js new file mode 100644 index 0000000..bb5873e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/swap-case/swap-case.js @@ -0,0 +1,27 @@ +var upperCase = require('upper-case') +var lowerCase = require('lower-case') + +/** + * Swap the case of a string. Manually iterate over every character and check + * instead of replacing certain characters for better unicode support. + * + * @param {String} str + * @param {String} [locale] + * @return {String} + */ +module.exports = function (str, locale) { + if (str == null) { + return '' + } + + var result = '' + + for (var i = 0; i < str.length; i++) { + var c = str[i] + var u = upperCase(c, locale) + + result += u === c ? lowerCase(c, locale) : u + } + + return result +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/package.json new file mode 100644 index 0000000..a35f579 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/package.json @@ -0,0 +1,71 @@ +{ + "name": "title-case", + "version": "2.1.0", + "description": "Title case a string", + "main": "title-case.js", + "typings": "title-case.d.ts", + "files": [ + "title-case.js", + "title-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-std": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/title-case.git" + }, + "keywords": [ + "title", + "case" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/title-case/issues" + }, + "homepage": "https://github.com/blakeembrey/title-case", + "devDependencies": { + "istanbul": "^0.4.3", + "mocha": "^2.2.1", + "standard": "^7.1.2" + }, + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.0.3" + }, + "gitHead": "9dcbb1a559f21087949d138005c58a34c779b7c6", + "_id": "title-case@2.1.0", + "_shasum": "c68ccb4232079ded64f94b91b4941ade91391979", + "_from": "title-case@>=2.1.0 <3.0.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "c68ccb4232079ded64f94b91b4941ade91391979", + "tarball": "https://registry.npmjs.org/title-case/-/title-case-2.1.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/title-case-2.1.0.tgz_1465691829638_0.47868762188591063" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/title-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/title-case.d.ts new file mode 100644 index 0000000..eba862e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/title-case.d.ts @@ -0,0 +1,3 @@ +declare function titleCase (value: string, locale?: string): string; + +export = titleCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/title-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/title-case.js new file mode 100644 index 0000000..440adfd --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/title-case/title-case.js @@ -0,0 +1,15 @@ +var noCase = require('no-case') +var upperCase = require('upper-case') + +/** + * Title case a string. + * + * @param {string} value + * @param {string} [locale] + * @return {string} + */ +module.exports = function (value, locale) { + return noCase(value, locale).replace(/^.| ./g, function (m) { + return upperCase(m, locale) + }) +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/README.md b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/README.md new file mode 100644 index 0000000..34a4bb5 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/README.md @@ -0,0 +1,42 @@ +# Upper Case First + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +Upper case the first character of a string. + +Supports Unicode (non-ASCII characters) and non-string entities, such as objects with a `toString` property, numbers and booleans. Empty values (`null` and `undefined`) will result in an empty string. + +## Installation + +``` +npm install upper-case-first --save +``` + +## Usage + +```js +var upperCaseFirst = require('upper-case-first') + +upperCaseFirst(null) //=> "" +upperCaseFirst('string') //=> "String" +``` + +## Typings + +Includes a [TypeScript definition](upper-case-first.d.ts). + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/upper-case-first.svg?style=flat +[npm-url]: https://npmjs.org/package/upper-case-first +[downloads-image]: https://img.shields.io/npm/dm/upper-case-first.svg?style=flat +[downloads-url]: https://npmjs.org/package/upper-case-first +[travis-image]: https://img.shields.io/travis/blakeembrey/upper-case-first.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/upper-case-first +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/upper-case-first.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/upper-case-first?branch=master diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/package.json new file mode 100644 index 0000000..ff38397 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/package.json @@ -0,0 +1,70 @@ +{ + "name": "upper-case-first", + "version": "1.1.2", + "description": "Upper case the first character of a string", + "main": "upper-case-first.js", + "typings": "upper-case-first.d.ts", + "files": [ + "upper-case-first.js", + "upper-case-first.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-std": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/upper-case-first.git" + }, + "keywords": [ + "cases", + "first", + "upper", + "uppercase", + "case" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/upper-case-first/issues" + }, + "homepage": "https://github.com/blakeembrey/upper-case-first", + "devDependencies": { + "istanbul": "^0.3.0", + "mocha": "^2.2.1", + "pre-commit": "^1.0.6", + "standard": "^3.3.0" + }, + "dependencies": { + "upper-case": "^1.1.1" + }, + "gitHead": "f7018f69b99ea9ab60fa132a93400b92bbbada68", + "_id": "upper-case-first@1.1.2", + "_shasum": "5d79bedcff14419518fd2edb0a0507c9b6859115", + "_from": "upper-case-first@>=1.1.0 <2.0.0", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "5d79bedcff14419518fd2edb0a0507c9b6859115", + "tarball": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "directories": {}, + "_resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/upper-case-first.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/upper-case-first.d.ts new file mode 100644 index 0000000..545c951 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/upper-case-first.d.ts @@ -0,0 +1,3 @@ +declare function upperCaseFirst (value: string, locale?: string): string; + +export = upperCaseFirst; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/upper-case-first.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/upper-case-first.js new file mode 100644 index 0000000..d1fa49f --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case-first/upper-case-first.js @@ -0,0 +1,17 @@ +var upperCase = require('upper-case') + +/** + * Upper case the first character of a string. + * + * @param {String} str + * @return {String} + */ +module.exports = function (str, locale) { + if (str == null) { + return '' + } + + str = String(str) + + return upperCase(str.charAt(0), locale) + str.substr(1) +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/README.md b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/README.md new file mode 100644 index 0000000..7e23978 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/README.md @@ -0,0 +1,45 @@ +# Upper Case + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +Upper case a string. + +Supports Unicode (non-ASCII characters) and non-string entities, such as objects with a `toString` property, numbers and booleans. Empty values (`null` and `undefined`) will result in an empty string. + +## Installation + +``` +npm install upper-case --save +``` + +## Usage + +```js +var upperCase = require('upper-case') + +upperCase(null) //=> "" +upperCase('string') //=> "STRING" +upperCase('string', 'tr') //=> "STRİNG" + +upperCase({ toString: function () { return 'test' } }) //=> "TEST" +``` + +## Typings + +Includes a [TypeScript definition](upper-case.d.ts). + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/upper-case.svg?style=flat +[npm-url]: https://npmjs.org/package/upper-case +[downloads-image]: https://img.shields.io/npm/dm/upper-case.svg?style=flat +[downloads-url]: https://npmjs.org/package/upper-case +[travis-image]: https://img.shields.io/travis/blakeembrey/upper-case.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/upper-case +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/upper-case.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/upper-case?branch=master diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/package.json new file mode 100644 index 0000000..71fa517 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/package.json @@ -0,0 +1,73 @@ +{ + "name": "upper-case", + "version": "1.1.3", + "description": "Upper case a string", + "main": "upper-case.js", + "typings": "upper-case.d.ts", + "files": [ + "upper-case.js", + "upper-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-std": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "standard": { + "ignore": [ + "coverage/**", + "node_modules/**", + "bower_components/**" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/upper-case.git" + }, + "keywords": [ + "cases", + "upper", + "uppercase", + "case" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/upper-case/issues" + }, + "homepage": "https://github.com/blakeembrey/upper-case", + "devDependencies": { + "istanbul": "^0.3.5", + "mocha": "^2.1.0", + "pre-commit": "^1.0.2", + "standard": "^2.4.5" + }, + "gitHead": "9df13a7ee6dad5c984f7e9c0fc3f15cef382d425", + "_id": "upper-case@1.1.3", + "_shasum": "f6b4501c2ec4cdd26ba78be7222961de77621598", + "_from": "upper-case@>=1.1.1 <2.0.0", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "f6b4501c2ec4cdd26ba78be7222961de77621598", + "tarball": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "directories": {}, + "_resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/upper-case.d.ts b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/upper-case.d.ts new file mode 100644 index 0000000..a3e83b3 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/upper-case.d.ts @@ -0,0 +1,3 @@ +declare function upperCase (value: string, locale?: string): string; + +export = upperCase; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/upper-case.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/upper-case.js new file mode 100644 index 0000000..768a387 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/node_modules/upper-case/upper-case.js @@ -0,0 +1,50 @@ +/** + * Special language-specific overrides. + * + * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt + * + * @type {Object} + */ +var LANGUAGES = { + tr: { + regexp: /[\u0069]/g, + map: { + '\u0069': '\u0130' + } + }, + az: { + regexp: /[\u0069]/g, + map: { + '\u0069': '\u0130' + } + }, + lt: { + regexp: /[\u0069\u006A\u012F]\u0307|\u0069\u0307[\u0300\u0301\u0303]/g, + map: { + '\u0069\u0307': '\u0049', + '\u006A\u0307': '\u004A', + '\u012F\u0307': '\u012E', + '\u0069\u0307\u0300': '\u00CC', + '\u0069\u0307\u0301': '\u00CD', + '\u0069\u0307\u0303': '\u0128' + } + } +} + +/** + * Upper case a string. + * + * @param {String} str + * @return {String} + */ +module.exports = function (str, locale) { + var lang = LANGUAGES[locale] + + str = str == null ? '' : String(str) + + if (lang) { + str = str.replace(lang.regexp, function (m) { return lang.map[m] }) + } + + return str.toUpperCase() +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/package.json b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/package.json new file mode 100644 index 0000000..1b8ecc8 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/change-case/package.json @@ -0,0 +1,97 @@ +{ + "name": "change-case", + "version": "3.0.0", + "description": "Convert a string between camelCase, PascalCase, Title Case, snake_case and more.", + "main": "change-case.js", + "typings": "change-case.d.ts", + "files": [ + "change-case.js", + "change-case.d.ts", + "LICENSE" + ], + "scripts": { + "lint": "standard", + "test-std": "mocha -- -R spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail", + "test": "npm run lint && npm run test-cov" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/blakeembrey/change-case.git" + }, + "keywords": [ + "camel", + "pascal", + "title", + "case", + "lower", + "upper", + "param", + "dot", + "path", + "constant", + "cases", + "check" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "devDependencies": { + "istanbul": "^0.4.3", + "mocha": "^2.2.1", + "standard": "^7.1.2" + }, + "dependencies": { + "camel-case": "^3.0.0", + "constant-case": "^2.0.0", + "dot-case": "^2.1.0", + "header-case": "^1.0.0", + "is-lower-case": "^1.1.0", + "is-upper-case": "^1.1.0", + "lower-case": "^1.1.1", + "lower-case-first": "^1.0.0", + "no-case": "^2.2.0", + "param-case": "^2.1.0", + "pascal-case": "^2.0.0", + "path-case": "^2.1.0", + "sentence-case": "^2.1.0", + "snake-case": "^2.1.0", + "swap-case": "^1.1.0", + "title-case": "^2.1.0", + "upper-case": "^1.1.1", + "upper-case-first": "^1.1.0" + }, + "gitHead": "002a45c7666948512480dd300e324d2ca8aca9b2", + "bugs": { + "url": "https://github.com/blakeembrey/change-case/issues" + }, + "homepage": "https://github.com/blakeembrey/change-case#readme", + "_id": "change-case@3.0.0", + "_shasum": "6c9c8e35f8790870a82b6b0745be8c3cbef9b081", + "_from": "change-case@>=3.0.0 <3.1.0", + "_npmVersion": "3.9.3", + "_nodeVersion": "6.2.1", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "dist": { + "shasum": "6c9c8e35f8790870a82b6b0745be8c3cbef9b081", + "tarball": "https://registry.npmjs.org/change-case/-/change-case-3.0.0.tgz" + }, + "maintainers": [ + { + "name": "blakeembrey", + "email": "me@blakeembrey.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/change-case-3.0.0.tgz_1465695183429_0.9269023495726287" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/change-case/-/change-case-3.0.0.tgz" +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/History.md b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/History.md new file mode 100644 index 0000000..127ea7b --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/History.md @@ -0,0 +1,1090 @@ +[3.4.19 / 2016-07-25](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.18...v3.4.19) +================== + +* Fixed issue [#795](https://github.com/jakubpawlowicz/clean-css/issues/795) - `!important` and override compacting. + +[3.4.18 / 2016-06-15](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.17...v3.4.18) +================== + +* Fixed issue [#787](https://github.com/jakubpawlowicz/clean-css/issues/787) - regression in processing data URIs. + +[3.4.17 / 2016-06-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.16...v3.4.17) +================== + +* Fixed issue [#783](https://github.com/jakubpawlowicz/clean-css/issues/783) - regression in processing data URIs. + +[3.4.16 / 2016-06-02](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.15...v3.4.16) +================== + +* Fixed issue [#781](https://github.com/jakubpawlowicz/clean-css/issues/781) - regression in override compacting. +* Fixed issue [#782](https://github.com/jakubpawlowicz/clean-css/issues/782) - regression in processing data URIs. + +[3.4.15 / 2016-06-01](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.14...v3.4.15) +================== + +* Fixed issue [#776](https://github.com/jakubpawlowicz/clean-css/issues/776) - edge case in quoted data URIs. +* Fixed issue [#779](https://github.com/jakubpawlowicz/clean-css/issues/779) - merging `background-(position|size)`. +* Fixed issue [#780](https://github.com/jakubpawlowicz/clean-css/issues/780) - space after inlined variables. + +[3.4.14 / 2016-05-31](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.13...v3.4.14) +================== + +* Fixed issue [#751](https://github.com/jakubpawlowicz/clean-css/issues/751) - stringifying CSS variables. +* Fixed issue [#763](https://github.com/jakubpawlowicz/clean-css/issues/763) - data URI SVG and quoting. +* Fixed issue [#765](https://github.com/jakubpawlowicz/clean-css/issues/765) - two values of border-radius. +* Fixed issue [#768](https://github.com/jakubpawlowicz/clean-css/issues/768) - invalid border-radius property. + +[3.4.13 / 2016-05-23](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.12...v3.4.13) +================== + +* Fixed issue [#734](https://github.com/jakubpawlowicz/clean-css/issues/769) - Node.js 6.x support. + +[3.4.12 / 2016-04-09](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.11...v3.4.12) +================== + +* Fixed issue [#734](https://github.com/jakubpawlowicz/clean-css/issues/734) - `--root` option edge case. +* Fixed issue [#758](https://github.com/jakubpawlowicz/clean-css/issues/758) - treats empty rule as unmergeable. + +[3.4.11 / 2016-04-01](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.10...v3.4.11) +================== + +* Fixed issue [#738](https://github.com/jakubpawlowicz/clean-css/issues/738) - edge case in comment processing. +* Fixed issue [#741](https://github.com/jakubpawlowicz/clean-css/issues/741) - HTTP proxy with HTTPS inlining. +* Fixed issue [#743](https://github.com/jakubpawlowicz/clean-css/issues/743) - background shorthand and source maps. +* Fixed issue [#745](https://github.com/jakubpawlowicz/clean-css/issues/745) - matching mixed case `!important`. + +[3.4.10 / 2016-02-29](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.9...v3.4.10) +================== + +* Fixed issue [#735](https://github.com/jakubpawlowicz/clean-css/issues/735) - whitespace removal with escaped chars. + +[3.4.9 / 2016-01-03](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.8...v3.4.9) +================== + +* Sped up merging by body advanced optimization. +* Fixed issue [#693](https://github.com/jakubpawlowicz/clean-css/issues/693) - restructuring edge case. +* Fixed issue [#711](https://github.com/jakubpawlowicz/clean-css/issues/711) - border fuzzy matching. +* Fixed issue [#714](https://github.com/jakubpawlowicz/clean-css/issues/714) - stringifying property level at rules. +* Fixed issue [#715](https://github.com/jakubpawlowicz/clean-css/issues/715) - stack too deep in comment scan. + +[3.4.8 / 2015-11-13](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.7...v3.4.8) +================== + +* Fixed issue [#676](https://github.com/jakubpawlowicz/clean-css/issues/676) - fuzzy matching unqoted data URIs. + +[3.4.7 / 2015-11-10](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.6...v3.4.7) +================== + +* Fixed issue [#692](https://github.com/jakubpawlowicz/clean-css/issues/692) - edge case in URL quoting. +* Fixed issue [#695](https://github.com/jakubpawlowicz/clean-css/issues/695) - shorthand overriding edge case. +* Fixed issue [#699](https://github.com/jakubpawlowicz/clean-css/issues/699) - IE9 transparent hack. +* Fixed issue [#701](https://github.com/jakubpawlowicz/clean-css/issues/701) - `url` quoting with hash arguments. + +[3.4.6 / 2015-10-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.5...v3.4.6) +================== + +* Fixed issue [#679](https://github.com/jakubpawlowicz/clean-css/issues/679) - wrong rebasing of remote URLs. + +[3.4.5 / 2015-09-28](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.4...v3.4.5) +================== + +* Fixed issue [#681](https://github.com/jakubpawlowicz/clean-css/issues/681) - property inheritance & restructuring. +* Fixed issue [#675](https://github.com/jakubpawlowicz/clean-css/issues/675) - overriding with `!important`. + +[3.4.4 / 2015-09-21](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.3...v3.4.4) +================== + +* Fixed issue [#626](https://github.com/jakubpawlowicz/clean-css/issues/626) - edge case in import rebasing. +* Fixed issue [#674](https://github.com/jakubpawlowicz/clean-css/issues/674) - adjacent merging order. + +[3.4.3 / 2015-09-15](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.2...v3.4.3) +================== + +* Fixed issue [#668](https://github.com/jakubpawlowicz/clean-css/issues/668) - node v4 path.join. +* Fixed issue [#669](https://github.com/jakubpawlowicz/clean-css/issues/669) - adjacent overriding with `!important`. + +[3.4.2 / 2015-09-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.1...v3.4.2) +================== + +* Fixed issue [#598](https://github.com/jakubpawlowicz/clean-css/issues/598) - restructuring border properties. +* Fixed issue [#654](https://github.com/jakubpawlowicz/clean-css/issues/654) - disables length optimizations. +* Fixed issue [#655](https://github.com/jakubpawlowicz/clean-css/issues/655) - shorthands override merging. +* Fixed issue [#660](https://github.com/jakubpawlowicz/clean-css/issues/660) - !important token overriding. +* Fixed issue [#662](https://github.com/jakubpawlowicz/clean-css/issues/662) - !important selector reducing. +* Fixed issue [#667](https://github.com/jakubpawlowicz/clean-css/issues/667) - rebasing remote URLs. + +[3.4.1 / 2015-08-27](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.0...v3.4.1) +================== + +* Fixed issue [#652](https://github.com/jakubpawlowicz/clean-css/issues/652) - order of restoring and removing tokens. + +[3.4.0 / 2015-08-27](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.10...v3.4.0) +================== + +* Adds an option for a fine-grained `@import` control. +* Adds unit compatibility switches to disable length optimizations. +* Adds inferring proxy settings from HTTP_PROXY environment variable. +* Adds support for Polymer / Web Components special selectors. +* Adds support for Polymer mixins. +* Adds testing source maps in batch mode. +* Unifies wrappers for simple & advanced optimizations. +* Fixed issue [#596](https://github.com/jakubpawlowicz/clean-css/issues/596) - support for !ie IE<8 hack. +* Fixed issue [#599](https://github.com/jakubpawlowicz/clean-css/issues/599) - support for inlined source maps. +* Fixed issue [#607](https://github.com/jakubpawlowicz/clean-css/issues/607) - adds better rule reordering. +* Fixed issue [#612](https://github.com/jakubpawlowicz/clean-css/issues/612) - adds HTTP proxy support. +* Fixed issue [#618](https://github.com/jakubpawlowicz/clean-css/issues/618) - adds safer function validation. +* Fixed issue [#625](https://github.com/jakubpawlowicz/clean-css/issues/625) - adds length unit optimizations. +* Fixed issue [#632](https://github.com/jakubpawlowicz/clean-css/issues/632) - adds disabling remote `import`s. +* Fixed issue [#635](https://github.com/jakubpawlowicz/clean-css/issues/635) - adds safer `0%` optimizations. +* Fixed issue [#644](https://github.com/jakubpawlowicz/clean-css/issues/644) - adds time unit optimizations. +* Fixed issue [#645](https://github.com/jakubpawlowicz/clean-css/issues/645) - adds bottom to top `media` merging. +* Fixed issue [#648](https://github.com/jakubpawlowicz/clean-css/issues/648) - adds property level at-rule support. + +[3.3.10 / 2015-08-27](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.9...v3.3.10) +================== + +* Adds better comments + keepBreaks handling. +* Adds better text normalizing in source maps mode. +* Fixes non-adjacent optimizations for source maps. +* Fixes removing unused items. +* Improves `outline` break up with source maps. +* Refixed issue [#629](https://github.com/jakubpawlowicz/clean-css/issues/629) - source maps & background shorthands. + +[3.3.9 / 2015-08-09](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.8...v3.3.9) +================== + +* Fixed issue [#640](https://github.com/jakubpawlowicz/clean-css/issues/640) - URI processing regression. + +[3.3.8 / 2015-08-06](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.7...v3.3.8) +================== + +* Fixed issue [#629](https://github.com/jakubpawlowicz/clean-css/issues/629) - source maps & background shorthands. +* Fixed issue [#630](https://github.com/jakubpawlowicz/clean-css/issues/630) - vendor prefixed flex optimizations. +* Fixed issue [#633](https://github.com/jakubpawlowicz/clean-css/issues/633) - handling data URI with brackets. +* Fixed issue [#634](https://github.com/jakubpawlowicz/clean-css/issues/634) - merging :placeholder selectors. + +[3.3.7 / 2015-07-29](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.6...v3.3.7) +================== + +* Fixed issue [#616](https://github.com/jakubpawlowicz/clean-css/issues/616) - ordering in restructuring. + +[3.3.6 / 2015-07-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.5...v3.3.6) +================== + +* Fixed issue [#620](https://github.com/jakubpawlowicz/clean-css/issues/620) - `bold` style in font shorthands. + +[3.3.5 / 2015-07-01](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.4...v3.3.5) +================== + +* Fixed issue [#608](https://github.com/jakubpawlowicz/clean-css/issues/608) - custom URI protocols handling. + +[3.3.4 / 2015-06-24](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.3...v3.3.4) +================== + +* Fixed issue [#610](https://github.com/jakubpawlowicz/clean-css/issues/610) - `border:inherit` restoring. +* Fixed issue [#611](https://github.com/jakubpawlowicz/clean-css/issues/611) - edge case in quote stripping. + +[3.3.3 / 2015-06-16](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.2...v3.3.3) +================== + +* Fixed issue [#603](https://github.com/jakubpawlowicz/clean-css/issues/603) - IE suffix hack defaults to on. + +[3.3.2 / 2015-06-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.1...v3.3.2) +================== + +* Fixed issue [#595](https://github.com/jakubpawlowicz/clean-css/issues/595) - more relaxed block matching. +* Fixed issue [#601](https://github.com/jakubpawlowicz/clean-css/issues/601) - percentage minifying inside `flex`. +* Fixed issue [#602](https://github.com/jakubpawlowicz/clean-css/issues/602) - backslash IE hacks after a space. + +[3.3.1 / 2015-06-02](https://github.com/jakubpawlowicz/clean-css/compare/v3.3.0...v3.3.1) +================== + +* Fixed issue [#590](https://github.com/jakubpawlowicz/clean-css/issues/590) - edge case in `@import` processing. + +[3.3.0 / 2015-05-31](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.11...v3.3.0) +================== + +* Cleans up url rebase code getting rid of unnecessary state. +* Cleans up tokenizer code getting rid of unnecessary state. +* Moves source maps tracker into lib/source-maps/track. +* Moves tokenizer code into lib/tokenizer. +* Moves URL scanner into lib/urls/reduce (was named incorrectly before). +* Moves URL rebasing & rewriting into lib/urls. +* Fixed issue [#375](https://github.com/jakubpawlowicz/clean-css/issues/375) - unit compatibility switches. +* Fixed issue [#436](https://github.com/jakubpawlowicz/clean-css/issues/436) - refactors URI rewriting. +* Fixed issue [#448](https://github.com/jakubpawlowicz/clean-css/issues/448) - rebasing no protocol URIs. +* Fixed issue [#517](https://github.com/jakubpawlowicz/clean-css/issues/517) - turning off color optimizations. +* Fixed issue [#542](https://github.com/jakubpawlowicz/clean-css/issues/542) - space after closing brace in IE. +* Fixed issue [#562](https://github.com/jakubpawlowicz/clean-css/issues/562) - optimizing invalid color values. +* Fixed issue [#563](https://github.com/jakubpawlowicz/clean-css/issues/563) - `background:inherit` restoring. +* Fixed issue [#570](https://github.com/jakubpawlowicz/clean-css/issues/570) - rebasing "no-url()" imports. +* Fixed issue [#574](https://github.com/jakubpawlowicz/clean-css/issues/574) - rewriting internal URLs. +* Fixed issue [#575](https://github.com/jakubpawlowicz/clean-css/issues/575) - missing directory as a `target`. +* Fixed issue [#577](https://github.com/jakubpawlowicz/clean-css/issues/577) - `background-clip` into shorthand. +* Fixed issue [#579](https://github.com/jakubpawlowicz/clean-css/issues/579) - `background-origin` into shorthand. +* Fixed issue [#580](https://github.com/jakubpawlowicz/clean-css/issues/580) - mixed `@import` processing. +* Fixed issue [#582](https://github.com/jakubpawlowicz/clean-css/issues/582) - overriding with prefixed values. +* Fixed issue [#583](https://github.com/jakubpawlowicz/clean-css/issues/583) - URL quoting for SVG data. +* Fixed issue [#587](https://github.com/jakubpawlowicz/clean-css/issues/587) - too aggressive `border` reordering. + +[3.2.11 / 2015-05-31](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.10...v3.2.11) +================== + +* Fixed issue [#563](https://github.com/jakubpawlowicz/clean-css/issues/563) - `background:inherit` restoring. +* Fixed issue [#582](https://github.com/jakubpawlowicz/clean-css/issues/582) - overriding with prefixed values. +* Fixed issue [#583](https://github.com/jakubpawlowicz/clean-css/issues/583) - URL quoting for SVG data. +* Fixed issue [#587](https://github.com/jakubpawlowicz/clean-css/issues/587) - too aggressive `border` reordering. + +[3.2.10 / 2015-05-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.9...v3.2.10) +================== + +* Fixed issue [#572](https://github.com/jakubpawlowicz/clean-css/issues/572) - empty elements removal. + +[3.2.9 / 2015-05-08](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.8...v3.2.9) +================== + +* Fixed issue [#567](https://github.com/jakubpawlowicz/clean-css/issues/567) - merging colors as functions. + +[3.2.8 / 2015-05-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.7...v3.2.8) +================== + +* Fixed issue [#561](https://github.com/jakubpawlowicz/clean-css/issues/561) - restructuring special selectors. + +[3.2.7 / 2015-05-03](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.6...v3.2.7) +================== + +* Fixed issue [#551](https://github.com/jakubpawlowicz/clean-css/issues/551) - edge case in restructuring. +* Fixed issue [#553](https://github.com/jakubpawlowicz/clean-css/issues/553) - another style of SVG fallback. +* Fixed issue [#558](https://github.com/jakubpawlowicz/clean-css/issues/558) - units in same selector merging. + +[3.2.6 / 2015-04-28](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.5...v3.2.6) +================== + +* Fixed issue [#550](https://github.com/jakubpawlowicz/clean-css/issues/550) - proper `contentSources` tracking. +* Fixed issue [#556](https://github.com/jakubpawlowicz/clean-css/issues/556) - regression in IE backslash hacks. + +[3.2.5 / 2015-04-25](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.4...v3.2.5) +================== + +* Fixed issue [#543](https://github.com/jakubpawlowicz/clean-css/issues/543) - better "comment in body" handling. +* Fixed issue [#548](https://github.com/jakubpawlowicz/clean-css/issues/548) - regression in font minifying. +* Fixed issue [#549](https://github.com/jakubpawlowicz/clean-css/issues/549) - special comments in source maps. + +[3.2.4 / 2015-04-24](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.3...v3.2.4) +================== + +* Fixed issue [#544](https://github.com/jakubpawlowicz/clean-css/issues/544) - regression in same value merging. +* Fixed issue [#546](https://github.com/jakubpawlowicz/clean-css/issues/546) - IE<11 `calc()` issue. + +[3.2.3 / 2015-04-22](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.2...v3.2.3) +================== + +* Fixed issue [#541](https://github.com/jakubpawlowicz/clean-css/issues/541) - `outline-style:auto` in shorthand. + +[3.2.2 / 2015-04-21](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.1...v3.2.2) +================== + +* Fixed issue [#537](https://github.com/jakubpawlowicz/clean-css/issues/537) - regression in simple optimizer. + +[3.2.1 / 2015-04-20](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.0...v3.2.1) +================== + +* Fixed issue [#534](https://github.com/jakubpawlowicz/clean-css/issues/534) - wrong `@font-face` stringifying. + +[3.2.0 / 2015-04-19](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.9...v3.2.0) +================== + +* Bumps commander to 2.8.x. +* Fixes remote asset rebasing when passing data as a hash. +* Improves path resolution inside source maps. +* Makes `root` option implicitely default to `process.cwd()`. +* Fixed issue [#371](https://github.com/jakubpawlowicz/clean-css/issues/371) - `background` fallback with `none`. +* Fixed issue [#376](https://github.com/jakubpawlowicz/clean-css/issues/376) - option to disable `0[unit]` -> `0`. +* Fixed issue [#396](https://github.com/jakubpawlowicz/clean-css/issues/396) - better input source maps tracking. +* Fixed issue [#397](https://github.com/jakubpawlowicz/clean-css/issues/397) - support for source map sources. +* Fixed issue [#399](https://github.com/jakubpawlowicz/clean-css/issues/399) - support compacting with source maps. +* Fixed issue [#429](https://github.com/jakubpawlowicz/clean-css/issues/429) - unifies data tokenization. +* Fixed issue [#446](https://github.com/jakubpawlowicz/clean-css/issues/446) - `list-style` fuzzy matching. +* Fixed issue [#468](https://github.com/jakubpawlowicz/clean-css/issues/468) - bumps `source-map` to 0.4.x. +* Fixed issue [#480](https://github.com/jakubpawlowicz/clean-css/issues/480) - extracting uppercase property names. +* Fixed issue [#487](https://github.com/jakubpawlowicz/clean-css/issues/487) - source map paths under Windows. +* Fixed issue [#490](https://github.com/jakubpawlowicz/clean-css/issues/490) - vendor prefixed multivalue `background`. +* Fixed issue [#500](https://github.com/jakubpawlowicz/clean-css/issues/500) - merging duplicate adjacent properties. +* Fixed issue [#504](https://github.com/jakubpawlowicz/clean-css/issues/504) - keeping `url()` quotes. +* Fixed issue [#507](https://github.com/jakubpawlowicz/clean-css/issues/507) - merging longhands into many shorthands. +* Fixed issue [#508](https://github.com/jakubpawlowicz/clean-css/issues/508) - removing duplicate media queries. +* Fixed issue [#521](https://github.com/jakubpawlowicz/clean-css/issues/521) - unit optimizations inside `calc()`. +* Fixed issue [#524](https://github.com/jakubpawlowicz/clean-css/issues/524) - timeouts in `@import` inlining. +* Fixed issue [#526](https://github.com/jakubpawlowicz/clean-css/issues/526) - shorthand overriding into a function. +* Fixed issue [#528](https://github.com/jakubpawlowicz/clean-css/issues/528) - better support for IE<9 hacks. +* Fixed issue [#529](https://github.com/jakubpawlowicz/clean-css/issues/529) - wrong font weight minification. + +[3.1.9 / 2015-04-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.8...v3.1.9) +================== + +* Fixes issue [#511](https://github.com/jakubpawlowicz/clean-css/issues/511) - `)` advanced processing. + +[3.1.8 / 2015-03-17](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.7...v3.1.8) +================== + +* Fixes issue [#498](https://github.com/jakubpawlowicz/clean-css/issues/498) - reordering and flexbox. +* Fixes issue [#499](https://github.com/jakubpawlowicz/clean-css/issues/499) - too aggressive `-` removal. + +[3.1.7 / 2015-03-16](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.6...v3.1.7) +================== + +* Backports fix to [#480](https://github.com/jakubpawlowicz/clean-css/issues/480) - reordering and uppercase properties. +* Fixes issue [#496](https://github.com/jakubpawlowicz/clean-css/issues/496) - space after bracket removal. + +[3.1.6 / 2015-03-12](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.5...v3.1.6) +================== + +* Fixes issue [#489](https://github.com/jakubpawlowicz/clean-css/issues/489) - `AlphaImageLoader` IE filter. + +[3.1.5 / 2015-03-06](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.4...v3.1.5) +================== + +* Fixes issue [#483](https://github.com/jakubpawlowicz/clean-css/issues/483) - property order in restructuring. + +[3.1.4 / 2015-03-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.3...v3.1.4) +================== + +* Fixes issue [#472](https://github.com/jakubpawlowicz/clean-css/issues/472) - broken function minification. +* Fixes issue [#477](https://github.com/jakubpawlowicz/clean-css/issues/477) - `@import`s order in restructuring. +* Fixes issue [#478](https://github.com/jakubpawlowicz/clean-css/issues/478) - ultimate fix to brace whitespace. + +[3.1.3 / 2015-03-03](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.2...v3.1.3) +================== + +* Fixes issue [#464](https://github.com/jakubpawlowicz/clean-css/issues/464) - data URI with quoted braces. +* Fixes issue [#475](https://github.com/jakubpawlowicz/clean-css/issues/475) - whitespace after closing brace. + +[3.1.2 / 2015-03-01](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.1...v3.1.2) +================== + +* Refixed issue [#471](https://github.com/jakubpawlowicz/clean-css/issues/471) - correct order after restructuring. +* Fixes issue [#466](https://github.com/jakubpawlowicz/clean-css/issues/466) - rebuilding background shorthand. +* Fixes issue [#462](https://github.com/jakubpawlowicz/clean-css/issues/462) - escaped apostrophes in selectors. + +[3.1.1 / 2015-02-27](https://github.com/jakubpawlowicz/clean-css/compare/v3.1.0...v3.1.1) +================== + +* Fixed issue [#469](https://github.com/jakubpawlowicz/clean-css/issues/469) - extracting broken property. +* Fixed issue [#470](https://github.com/jakubpawlowicz/clean-css/issues/470) - negative padding removal. +* Fixed issue [#471](https://github.com/jakubpawlowicz/clean-css/issues/471) - correct order after restructuring. + +[3.1.0 / 2015-02-26](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.10...v3.1.0) +================== + +* Adds `0deg` to `0` minification where possible. +* Adds better non-adjacent selector merging when body is the same. +* Adds official support for node.js 0.12. +* Adds official support for io.js 1.0. +* Adds restructuring optimizations to reorganize selectors, which vastly improves minification. +* Fixed issue [#158](https://github.com/jakubpawlowicz/clean-css/issues/158) - adds body-based selectors reduction. +* Fixed issue [#182](https://github.com/jakubpawlowicz/clean-css/issues/182) - removing space after closing brace. +* Fixed issue [#204](https://github.com/jakubpawlowicz/clean-css/issues/204) - `@media` merging. +* Fixed issue [#351](https://github.com/jakubpawlowicz/clean-css/issues/351) - remote `@import`s after content. +* Fixed issue [#357](https://github.com/jakubpawlowicz/clean-css/issues/357) - non-standard but valid URLs. +* Fixed issue [#416](https://github.com/jakubpawlowicz/clean-css/issues/416) - accepts hash as `minify` argument. +* Fixed issue [#419](https://github.com/jakubpawlowicz/clean-css/issues/419) - multiple input source maps. +* Fixed issue [#435](https://github.com/jakubpawlowicz/clean-css/issues/435) - `background-clip` in shorthand. +* Fixed issue [#439](https://github.com/jakubpawlowicz/clean-css/issues/439) - `background-origin` in shorthand. +* Fixed issue [#442](https://github.com/jakubpawlowicz/clean-css/issues/442) - space before adjacent `nav`. +* Fixed issue [#445](https://github.com/jakubpawlowicz/clean-css/issues/445) - regression issue in url processor. +* Fixed issue [#449](https://github.com/jakubpawlowicz/clean-css/issues/449) - warns of missing close braces. +* Fixed issue [#463](https://github.com/jakubpawlowicz/clean-css/issues/463) - relative remote `@import` URLs. + +[3.0.10 / 2015-02-07](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.9...v3.0.10) +================== + +* Fixed issue [#453](https://github.com/jakubpawlowicz/clean-css/issues/453) - double `background-repeat`. +* Fixed issue [#455](https://github.com/jakubpawlowicz/clean-css/issues/455) - property extracting regression. + +[3.0.9 / 2015-02-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.8...v3.0.9) +================== + +* Fixed issue [#452](https://github.com/jakubpawlowicz/clean-css/issues/452) - regression in advanced merging. + +[3.0.8 / 2015-01-31](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.7...v3.0.8) +================== + +* Fixed issue [#447](https://github.com/jakubpawlowicz/clean-css/issues/447) - `background-color` in shorthands. +* Fixed issue [#450](https://github.com/jakubpawlowicz/clean-css/issues/450) - name to hex color converting. + +[3.0.7 / 2015-01-22](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.6...v3.0.7) +================== + +* Fixed issue [#441](https://github.com/jakubpawlowicz/clean-css/issues/441) - hex to name color converting. + +[3.0.6 / 2015-01-20](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.5...v3.0.6) +================== + +* Refixed issue [#414](https://github.com/jakubpawlowicz/clean-css/issues/414) - source maps position fallback. + +[3.0.5 / 2015-01-18](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.4...v3.0.5) +================== + +* Fixed issue [#414](https://github.com/jakubpawlowicz/clean-css/issues/414) - source maps position fallback. +* Fixed issue [#433](https://github.com/jakubpawlowicz/clean-css/issues/433) - meging `!important` in shorthands. + +[3.0.4 / 2015-01-11](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.3...v3.0.4) +================== + +* Fixed issue [#314](https://github.com/jakubpawlowicz/clean-css/issues/314) - spaces inside `calc`. + +[3.0.3 / 2015-01-07](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.2...v3.0.3) +================== + +* Just a version bump as npm incorrectly things 2.2.23 is the latest one. + +[3.0.2 / 2015-01-04](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.1...v3.0.2) +================== + +* Fixed issue [#422](https://github.com/jakubpawlowicz/clean-css/issues/422) - handling `calc` as a unit. + +[3.0.1 / 2014-12-19](https://github.com/jakubpawlowicz/clean-css/compare/v3.0.0...v3.0.1) +================== + +* Fixed issue [#410](https://github.com/jakubpawlowicz/clean-css/issues/410) - advanced merging and comments. +* Fixed issue [#411](https://github.com/jakubpawlowicz/clean-css/issues/411) - properties and important comments. + +[3.0.0 / 2014-12-18](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.22...v3.0.0) +================== + +* Adds more granular control over compatibility settings. +* Adds support for @counter-style at-rule. +* Adds `--source-map`/`sourceMap` switch for building input's source map. +* Adds `--skip-shorthand-compacting`/`shorthandComacting` option for disabling shorthand compacting. +* Allows `target` option to be a path to a folder instead of a file. +* Allows disabling rounding precision. By [@superlukas](https://github.com/superlukas). +* Breaks 2.x compatibility for using CleanCSS as a function. +* Changes `minify` method output to handle multiple outputs. +* Reworks minification to tokenize first then minify. + See [changes](https://github.com/jakubpawlowicz/clean-css/compare/b06f37d...dd8c14a). +* Removes support for node.js 0.8.x. +* Renames `noAdvanced` option into `advanced`. +* Renames `noAggressiveMerging` option into `aggressiveMerging`. +* Renames `noRebase` option into `rebase`. +* Speeds up advanced processing by shortening optimize loop. +* Fixed issue [#125](https://github.com/jakubpawlowicz/clean-css/issues/125) - source maps! +* Fixed issue [#344](https://github.com/jakubpawlowicz/clean-css/issues/344) - merging `background-size` into shorthand. +* Fixed issue [#352](https://github.com/jakubpawlowicz/clean-css/issues/352) - honors rebasing in imported stylesheets. +* Fixed issue [#360](https://github.com/jakubpawlowicz/clean-css/issues/360) - adds 7 extra CSS colors. +* Fixed issue [#363](https://github.com/jakubpawlowicz/clean-css/issues/363) - `rem` units overriding `px`. +* Fixed issue [#373](https://github.com/jakubpawlowicz/clean-css/issues/373) - proper `background` shorthand merging. +* Fixed issue [#395](https://github.com/jakubpawlowicz/clean-css/issues/395) - unescaped brackets in data URIs. +* Fixed issue [#398](https://github.com/jakubpawlowicz/clean-css/issues/398) - restoring important comments. +* Fixed issue [#400](https://github.com/jakubpawlowicz/clean-css/issues/400) - API to accept an array of filenames. +* Fixed issue [#403](https://github.com/jakubpawlowicz/clean-css/issues/403) - tracking input files in source maps. +* Fixed issue [#404](https://github.com/jakubpawlowicz/clean-css/issues/404) - no state sharing in API. +* Fixed issue [#405](https://github.com/jakubpawlowicz/clean-css/issues/405) - disables default `background-size` merging. +* Refixed issue [#304](https://github.com/jakubpawlowicz/clean-css/issues/304) - `background-position` merging. + +[2.2.22 / 2014-12-13](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.21...v2.2.22) +================== + +* Backports fix to issue [#304](https://github.com/jakubpawlowicz/clean-css/issues/304) - `background-position` merging. + +[2.2.21 / 2014-12-10](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.20...v2.2.21) +================== + +* Backports fix to issue [#373](https://github.com/jakubpawlowicz/clean-css/issues/373) - `background` shorthand merging. + +[2.2.20 / 2014-12-02](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.19...v2.2.20) +================== + +* Backports fix to issue [#390](https://github.com/jakubpawlowicz/clean-css/issues/390) - pseudo-class merging. + +[2.2.19 / 2014-11-20](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.18...v2.2.19) +================== + +* Fixed issue [#385](https://github.com/jakubpawlowicz/clean-css/issues/385) - edge cases in processing cut off data. + +[2.2.18 / 2014-11-17](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.17...v2.2.18) +================== + +* Fixed issue [#383](https://github.com/jakubpawlowicz/clean-css/issues/383) - rounding fractions once again. + +[2.2.17 / 2014-11-09](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.16...v2.2.17) +================== + +* Fixed issue [#380](https://github.com/jakubpawlowicz/clean-css/issues/380) - rounding fractions to a whole number. + +[2.2.16 / 2014-09-16](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.15...v2.2.16) +================== + +* Fixed issue [#359](https://github.com/jakubpawlowicz/clean-css/issues/359) - handling escaped double backslash. +* Fixed issue [#358](https://github.com/jakubpawlowicz/clean-css/issues/358) - property merging in compatibility mode. +* Fixed issue [#356](https://github.com/jakubpawlowicz/clean-css/issues/356) - preserving `*+html` hack. +* Fixed issue [#354](https://github.com/jakubpawlowicz/clean-css/issues/354) - `!important` overriding in shorthands. + +[2.2.15 / 2014-09-01](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.14...v2.2.15) +================== + +* Fixed issue [#343](https://github.com/jakubpawlowicz/clean-css/issues/343) - too aggressive `rgba`/`hsla` minification. +* Fixed issue [#345](https://github.com/jakubpawlowicz/clean-css/issues/345) - URL rebasing for document relative ones. +* Fixed issue [#346](https://github.com/jakubpawlowicz/clean-css/issues/346) - overriding `!important` by `!important`. +* Fixed issue [#350](https://github.com/jakubpawlowicz/clean-css/issues/350) - edge cases in `@import` processing. + +[2.2.14 / 2014-08-25](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.13...v2.2.14) +================== + +* Makes multival operations idempotent. +* Fixed issue [#339](https://github.com/jakubpawlowicz/clean-css/issues/339) - skips invalid properties. +* Fixed issue [#341](https://github.com/jakubpawlowicz/clean-css/issues/341) - ensure output is shorter than input. + +[2.2.13 / 2014-08-12](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.12...v2.2.13) +================== + +* Fixed issue [#337](https://github.com/jakubpawlowicz/clean-css/issues/337) - handling component importance. + +[2.2.12 / 2014-08-02](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.11...v2.2.12) +================== + +* Fixed issue with tokenizer removing first selector after an unknown @ rule. +* Fixed issue [#329](https://github.com/jakubpawlowicz/clean-css/issues/329) - `font` shorthands incorrectly processed. +* Fixed issue [#332](https://github.com/jakubpawlowicz/clean-css/issues/332) - `background` shorthand with colors. +* Refixed issue [#325](https://github.com/jakubpawlowicz/clean-css/issues/325) - invalid charset declarations. + +[2.2.11 / 2014-07-28](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.10...v2.2.11) +================== + +* Fixed issue [#326](https://github.com/jakubpawlowicz/clean-css/issues/326) - `background-size` regression. + +[2.2.10 / 2014-07-27](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.9...v2.2.10) +================== + +* Improved performance of advanced mode validators. +* Fixed issue [#307](https://github.com/jakubpawlowicz/clean-css/issues/307) - `background-color` in multiple backgrounds. +* Fixed issue [#322](https://github.com/jakubpawlowicz/clean-css/issues/322) - adds `background-size` support. +* Fixed issue [#323](https://github.com/jakubpawlowicz/clean-css/issues/323) - stripping variable references. +* Fixed issue [#325](https://github.com/jakubpawlowicz/clean-css/issues/325) - removing invalid `@charset` declarations. + +[2.2.9 / 2014-07-23](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.8...v2.2.9) +================== + +* Adds `background` normalization according to W3C spec. +* Fixed issue [#316](https://github.com/jakubpawlowicz/clean-css/issues/316) - incorrect `background` processing. + +[2.2.8 / 2014-07-14](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.7...v2.2.8) +================== + +* Fixed issue [#313](https://github.com/jakubpawlowicz/clean-css/issues/313) - processing comment marks in URLs. +* Fixed issue [#315](https://github.com/jakubpawlowicz/clean-css/issues/315) - `rgba`/`hsla` -> `transparent` in gradients. + +[2.2.7 / 2014-07-10](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.6...v2.2.7) +================== + +* Fixed issue [#304](https://github.com/jakubpawlowicz/clean-css/issues/304) - merging multiple backgrounds. +* Fixed issue [#312](https://github.com/jakubpawlowicz/clean-css/issues/312) - merging with mixed repeat. + +[2.2.6 / 2014-07-05](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.5...v2.2.6) +================== + +* Adds faster quote matching in QuoteScanner. +* Improves QuoteScanner to handle comments correctly. +* Fixed issue [#308](https://github.com/jakubpawlowicz/clean-css/issues/308) - parsing comments in quoted URLs. +* Fixed issue [#311](https://github.com/jakubpawlowicz/clean-css/issues/311) - leading/trailing decimal points. + +[2.2.5 / 2014-06-29](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.4...v2.2.5) +================== + +* Adds removing extra spaces around / in border-radius. +* Adds replacing same horizontal & vertical value in border-radius. +* Fixed issue [#305](https://github.com/jakubpawlowicz/clean-css/issues/305) - allows width keywords in `border-width`. + +[2.2.4 / 2014-06-27](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.3...v2.2.4) +================== + +* Fixed issue [#301](https://github.com/jakubpawlowicz/clean-css/issues/301) - proper `border-radius` processing. +* Fixed issue [#303](https://github.com/jakubpawlowicz/clean-css/issues/303) - correctly preserves viewport units. + +[2.2.3 / 2014-06-24](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.2...v2.2.3) +================== + +* Fixed issue [#302](https://github.com/jakubpawlowicz/clean-css/issues/302) - handling of `outline-style: auto`. + +[2.2.2 / 2014-06-18](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.1...v2.2.2) +================== + +* Fixed issue [#297](https://github.com/jakubpawlowicz/clean-css/issues/297) - `box-shadow` zeros minification. + +[2.2.1 / 2014-06-14](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.0...v2.2.1) +================== + +* Fixes new property optimizer for 'none' values. +* Fixed issue [#294](https://github.com/jakubpawlowicz/clean-css/issues/294) - space after `rgba`/`hsla` in IE<=11. + +[2.2.0 / 2014-06-11](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.8...v2.2.0) +================== + +* Adds a better algorithm for quotation marks' removal. +* Adds a better non-adjacent optimizer compatible with the upcoming new property optimizer. +* Adds minifying remote files directly from CLI. +* Adds `--rounding-precision` to control rounding precision. +* Moves quotation matching into a `QuoteScanner` class. +* Adds `npm run browserify` for creating embeddable version of clean-css. +* Fixed list-style-* advanced processing. +* Fixed issue [#134](https://github.com/jakubpawlowicz/clean-css/issues/134) - merges properties into shorthand form. +* Fixed issue [#164](https://github.com/jakubpawlowicz/clean-css/issues/164) - removes default values if not needed. +* Fixed issue [#168](https://github.com/jakubpawlowicz/clean-css/issues/168) - adds better property merging algorithm. +* Fixed issue [#173](https://github.com/jakubpawlowicz/clean-css/issues/173) - merges same properties if grouped. +* Fixed issue [#184](https://github.com/jakubpawlowicz/clean-css/issues/184) - uses `!important` for optimization opportunities. +* Fixed issue [#190](https://github.com/jakubpawlowicz/clean-css/issues/190) - uses shorthand to override another shorthand. +* Fixed issue [#197](https://github.com/jakubpawlowicz/clean-css/issues/197) - adds borders merging by understandability. +* Fixed issue [#210](https://github.com/jakubpawlowicz/clean-css/issues/210) - adds temporary workaround for aggressive merging. +* Fixed issue [#246](https://github.com/jakubpawlowicz/clean-css/issues/246) - removes IE hacks when not in compatibility mode. +* Fixed issue [#247](https://github.com/jakubpawlowicz/clean-css/issues/247) - removes deprecated `selectorsMergeMode` switch. +* Refixed issue [#250](https://github.com/jakubpawlowicz/clean-css/issues/250) - based on new quotation marks removal. +* Fixed issue [#257](https://github.com/jakubpawlowicz/clean-css/issues/257) - turns `rgba`/`hsla` to `transparent` if possible. +* Fixed issue [#265](https://github.com/jakubpawlowicz/clean-css/issues/265) - adds support for multiple input files. +* Fixed issue [#275](https://github.com/jakubpawlowicz/clean-css/issues/275) - handling transform properties. +* Fixed issue [#276](https://github.com/jakubpawlowicz/clean-css/issues/276) - corrects unicode handling. +* Fixed issue [#288](https://github.com/jakubpawlowicz/clean-css/issues/288) - adds smarter expression parsing. +* Fixed issue [#293](https://github.com/jakubpawlowicz/clean-css/issues/293) - handles escaped `@` symbols in class names and IDs. + +[2.1.8 / 2014-03-28](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.7...v2.1.8) +================== + +* Fixed issue [#267](https://github.com/jakubpawlowicz/clean-css/issues/267) - incorrect non-adjacent selector merging. + +[2.1.7 / 2014-03-24](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.6...v2.1.7) +================== + +* Fixed issue [#264](https://github.com/jakubpawlowicz/clean-css/issues/264) - `@import` statements inside comments. + +[2.1.6 / 2014-03-10](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.5...v2.1.6) +================== + +* Fixed issue [#258](https://github.com/jakubpawlowicz/clean-css/issues/258) - wrong `@import` handling in `EmptyRemoval`. + +[2.1.5 / 2014-03-07](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.4...v2.1.5) +================== + +* Fixed issue [#255](https://github.com/jakubpawlowicz/clean-css/issues/255) - incorrect processing of a trailing `-0`. + +[2.1.4 / 2014-03-01](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.3...v2.1.4) +================== + +* Fixed issue [#250](https://github.com/jakubpawlowicz/clean-css/issues/250) - correctly handle JSON data in quotations. + +[2.1.3 / 2014-02-26](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.2...v2.1.3) +================== + +* Fixed issue [#248](https://github.com/jakubpawlowicz/clean-css/issues/248) - incorrect merging for vendor selectors. + +[2.1.2 / 2014-02-25](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.1...v2.1.2) +================== + +* Fixed issue [#245](https://github.com/jakubpawlowicz/clean-css/issues/245) - incorrect handling of backslash IE hack. + +[2.1.1 / 2014-02-18](https://github.com/jakubpawlowicz/clean-css/compare/v2.1.0...v2.1.1) +================== + +* Adds faster selectors processing in advanced optimizer. +* Fixed issue [#241](https://github.com/jakubpawlowicz/clean-css/issues/241) - incorrect handling of `:not()` selectors. + +[2.1.0 / 2014-02-13](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.8...v2.1.0) +================== + +* Adds an optional callback to minify method. +* Deprecates `--selectors-merge-mode` / `selectorsMergeMode` in favor to `--compatibility` / `compatibility`. +* Fixes debug mode stats for stylesheets using `@import` statements. +* Skips empty removal if advanced processing is enabled. +* Fixed issue [#85](https://github.com/jakubpawlowicz/clean-css/issues/85) - resolving protocol `@import`s. +* Fixed issue [#160](https://github.com/jakubpawlowicz/clean-css/issues/160) - re-runs optimizer until a clean pass. +* Fixed issue [#161](https://github.com/jakubpawlowicz/clean-css/issues/161) - improves tokenizer performance. +* Fixed issue [#163](https://github.com/jakubpawlowicz/clean-css/issues/163) - round pixels to 2nd decimal place. +* Fixed issue [#165](https://github.com/jakubpawlowicz/clean-css/issues/165) - extra space after trailing parenthesis. +* Fixed issue [#186](https://github.com/jakubpawlowicz/clean-css/issues/186) - strip unit from `0rem`. +* Fixed issue [#207](https://github.com/jakubpawlowicz/clean-css/issues/207) - bug in parsing protocol `@import`s. +* Fixed issue [#213](https://github.com/jakubpawlowicz/clean-css/issues/213) - faster `rgb` to `hex` transforms. +* Fixed issue [#215](https://github.com/jakubpawlowicz/clean-css/issues/215) - leading zeros in numerical values. +* Fixed issue [#217](https://github.com/jakubpawlowicz/clean-css/issues/217) - whitespace inside attribute selectors and URLs. +* Fixed issue [#218](https://github.com/jakubpawlowicz/clean-css/issues/218) - `@import` statements cleanup. +* Fixed issue [#220](https://github.com/jakubpawlowicz/clean-css/issues/220) - selector between comments. +* Fixed issue [#223](https://github.com/jakubpawlowicz/clean-css/issues/223) - two-pass adjacent selectors merging. +* Fixed issue [#226](https://github.com/jakubpawlowicz/clean-css/issues/226) - don't minify `border:none` to `border:0`. +* Fixed issue [#229](https://github.com/jakubpawlowicz/clean-css/issues/229) - improved processing of fraction numbers. +* Fixed issue [#230](https://github.com/jakubpawlowicz/clean-css/issues/230) - better handling of zero values. +* Fixed issue [#235](https://github.com/jakubpawlowicz/clean-css/issues/235) - IE7 compatibility mode. +* Fixed issue [#236](https://github.com/jakubpawlowicz/clean-css/issues/236) - incorrect rebasing with nested `import`s. + +[2.0.8 / 2014-02-07](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.7...v2.0.8) +================== + +* Fixed issue [#232](https://github.com/jakubpawlowicz/clean-css/issues/232) - edge case in non-adjacent selectors merging. + +[2.0.7 / 2014-01-16](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.6...v2.0.7) +================== + +* Fixed issue [#208](https://github.com/jakubpawlowicz/clean-css/issues/208) - don't swallow `@page` and `@viewport`. + +[2.0.6 / 2014-01-04](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.5...v2.0.6) +================== + +* Fixed issue [#198](https://github.com/jakubpawlowicz/clean-css/issues/198) - process comments and `@import`s correctly. +* Fixed issue [#205](https://github.com/jakubpawlowicz/clean-css/issues/205) - freeze on broken `@import` declaration. + +[2.0.5 / 2014-01-03](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.4...v2.0.5) +================== + +* Fixed issue [#199](https://github.com/jakubpawlowicz/clean-css/issues/199) - keep line breaks with no advanced optimizations. +* Fixed issue [#203](https://github.com/jakubpawlowicz/clean-css/issues/203) - Buffer as a first argument to minify method. + +[2.0.4 / 2013-12-19](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.3...v2.0.4) +================== + +* Fixed issue [#193](https://github.com/jakubpawlowicz/clean-css/issues/193) - HSL color space normalization. + +[2.0.3 / 2013-12-18](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.2...v2.0.3) +================== + +* Fixed issue [#191](https://github.com/jakubpawlowicz/clean-css/issues/191) - leading numbers in `font`/`animation` names. +* Fixed issue [#192](https://github.com/jakubpawlowicz/clean-css/issues/192) - many `@import`s inside a comment. + +[2.0.2 / 2013-11-18](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.1...v2.0.2) +================== + +* Fixed issue [#177](https://github.com/jakubpawlowicz/clean-css/issues/177) - process broken content correctly. + +[2.0.1 / 2013-11-14](https://github.com/jakubpawlowicz/clean-css/compare/v2.0.0...v2.0.1) +================== + +* Fixed issue [#176](https://github.com/jakubpawlowicz/clean-css/issues/176) - hangs on `undefined` keyword. + +[2.0.0 / 2013-11-04](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.7...v2.0.0) +================== + +* Adds simplified and more advanced text escaping / restoring via `EscapeStore` class. +* Adds simplified and much faster empty elements removal. +* Adds missing `@import` processing to our benchmark (run via `npm run bench`). +* Adds CSS tokenizer which will make it possible to optimize content by reordering and/or merging selectors. +* Adds basic optimizer removing duplicate selectors from a list. +* Adds merging duplicate properties within a single selector's body. +* Adds merging adjacent selectors within a scope (single and multiple ones). +* Changes behavior of `--keep-line-breaks`/`keepBreaks` option to keep breaks after trailing braces only. +* Makes all multiple selectors ordered alphabetically (aids merging). +* Adds property overriding so more coarse properties override more granular ones. +* Adds reducing non-adjacent selectors. +* Adds `--skip-advanced`/`noAdvanced` switch to disable advanced optimizations. +* Adds reducing non-adjacent selectors when overridden by more complex selectors. +* Fixed issue [#138](https://github.com/jakubpawlowicz/clean-css/issues/138) - makes CleanCSS interface OO. +* Fixed issue [#139](https://github.com/jakubpawlowicz/clean-css/issues/138) - consistent error & warning handling. +* Fixed issue [#145](https://github.com/jakubpawlowicz/clean-css/issues/145) - debug mode in library too. +* Fixed issue [#157](https://github.com/jakubpawlowicz/clean-css/issues/157) - gets rid of `removeEmpty` option. +* Fixed issue [#159](https://github.com/jakubpawlowicz/clean-css/issues/159) - escaped quotes inside content. +* Fixed issue [#162](https://github.com/jakubpawlowicz/clean-css/issues/162) - strip quotes from Base64 encoded URLs. +* Fixed issue [#166](https://github.com/jakubpawlowicz/clean-css/issues/166) - `debug` formatting in CLI +* Fixed issue [#167](https://github.com/jakubpawlowicz/clean-css/issues/167) - `background:transparent` minification. + +[1.1.7 / 2013-10-28](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.6...v1.1.7) +================== + +* Fixed issue [#156](https://github.com/jakubpawlowicz/clean-css/issues/156) - `@import`s inside comments. + +[1.1.6 / 2013-10-26](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.5...v1.1.6) +================== + +* Fixed issue [#155](https://github.com/jakubpawlowicz/clean-css/issues/155) - broken irregular CSS content. + +[1.1.5 / 2013-10-24](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.4...v1.1.5) +================== + +* Fixed issue [#153](https://github.com/jakubpawlowicz/clean-css/issues/153) - `keepSpecialComments` `0`/`1` as a string. + +[1.1.4 / 2013-10-23](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.3...v1.1.4) +================== + +* Fixed issue [#152](https://github.com/jakubpawlowicz/clean-css/issues/152) - adds an option to disable rebasing. + +[1.1.3 / 2013-10-04](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.2...v1.1.3) +================== + +* Fixed issue [#150](https://github.com/jakubpawlowicz/clean-css/issues/150) - minifying `background:none`. + +[1.1.2 / 2013-09-29](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.1...v1.1.2) +================== + +* Fixed issue [#149](https://github.com/jakubpawlowicz/clean-css/issues/149) - shorthand `font` property. + +[1.1.1 / 2013-09-07](https://github.com/jakubpawlowicz/clean-css/compare/v1.1.0...v1.1.1) +================== + +* Fixed issue [#144](https://github.com/jakubpawlowicz/clean-css/issues/144) - skip URLs rebasing by default. + +[1.1.0 / 2013-09-06](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.12...v1.1.0) +================== + +* Renamed lib's `debug` option to `benchmark` when doing per-minification benchmarking. +* Added simplified comments processing & imports. +* Fixed issue [#43](https://github.com/jakubpawlowicz/clean-css/issues/43) - `--debug` switch for minification stats. +* Fixed issue [#65](https://github.com/jakubpawlowicz/clean-css/issues/65) - full color name / hex shortening. +* Fixed issue [#84](https://github.com/jakubpawlowicz/clean-css/issues/84) - support for `@import` with media queries. +* Fixed issue [#124](https://github.com/jakubpawlowicz/clean-css/issues/124) - raise error on broken imports. +* Fixed issue [#126](https://github.com/jakubpawlowicz/clean-css/issues/126) - proper CSS expressions handling. +* Fixed issue [#129](https://github.com/jakubpawlowicz/clean-css/issues/129) - rebasing imported URLs. +* Fixed issue [#130](https://github.com/jakubpawlowicz/clean-css/issues/130) - better code modularity. +* Fixed issue [#135](https://github.com/jakubpawlowicz/clean-css/issues/135) - require node.js 0.8+. + +[1.0.12 / 2013-07-19](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.11...v1.0.12) +=================== + +* Fixed issue [#121](https://github.com/jakubpawlowicz/clean-css/issues/121) - ability to skip `@import` processing. + +[1.0.11 / 2013-07-08](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.10...v1.0.11) +=================== + +* Fixed issue [#117](https://github.com/jakubpawlowicz/clean-css/issues/117) - line break escaping in comments. + +[1.0.10 / 2013-06-13](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.9...v1.0.10) +=================== + +* Fixed issue [#114](https://github.com/jakubpawlowicz/clean-css/issues/114) - comments in imported stylesheets. + +[1.0.9 / 2013-06-11](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.8...v1.0.9) +================== + +* Fixed issue [#113](https://github.com/jakubpawlowicz/clean-css/issues/113) - `@import` in comments. + +[1.0.8 / 2013-06-10](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.7...v1.0.8) +================== + +* Fixed issue [#112](https://github.com/jakubpawlowicz/clean-css/issues/112) - reducing `box-shadow` zeros. + +[1.0.7 / 2013-06-05](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.6...v1.0.7) +================== + +* Support for `@import` URLs starting with `//`. By [@petetak](https://github.com/petetak). + +[1.0.6 / 2013-06-04](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.5...v1.0.6) +================== + +* Fixed issue [#110](https://github.com/jakubpawlowicz/clean-css/issues/110) - data URIs in URLs. + +[1.0.5 / 2013-05-26](https://github.com/jakubpawlowicz/clean-css/compare/v1.0.4...v1.0.5) +================== + +* Fixed issue [#107](https://github.com/jakubpawlowicz/clean-css/issues/107) - data URIs in imported stylesheets. + +1.0.4 / 2013-05-23 +================== + +* Rewrite relative URLs in imported stylesheets. By [@bluej100](https://github.com/bluej100). + +1.0.3 / 2013-05-20 +================== + +* Support alternative `@import` syntax with file name not wrapped inside `url()` statement. + By [@bluej100](https://github.com/bluej100). + +1.0.2 / 2013-04-29 +================== + +* Fixed issue [#97](https://github.com/jakubpawlowicz/clean-css/issues/97) - `--remove-empty` & FontAwesome. + +1.0.1 / 2013-04-08 +================== + +* Do not pick up `bench` and `test` while building `npm` package. + By [@sindresorhus](https://https://github.com/sindresorhus). + +1.0.0 / 2013-03-30 +================== + +* Fixed issue [#2](https://github.com/jakubpawlowicz/clean-css/issues/2) - resolving `@import` rules. +* Fixed issue [#44](https://github.com/jakubpawlowicz/clean-css/issues/44) - examples in `--help`. +* Fixed issue [#46](https://github.com/jakubpawlowicz/clean-css/issues/46) - preserving special characters in URLs and attributes. +* Fixed issue [#80](https://github.com/jakubpawlowicz/clean-css/issues/80) - quotation in multi line strings. +* Fixed issue [#83](https://github.com/jakubpawlowicz/clean-css/issues/83) - HSL to hex color conversions. +* Fixed issue [#86](https://github.com/jakubpawlowicz/clean-css/issues/86) - broken `@charset` replacing. +* Fixed issue [#88](https://github.com/jakubpawlowicz/clean-css/issues/88) - removes space in `! important`. +* Fixed issue [#92](https://github.com/jakubpawlowicz/clean-css/issues/92) - uppercase hex to short versions. + +0.10.2 / 2013-03-19 +=================== + +* Fixed issue [#79](https://github.com/jakubpawlowicz/clean-css/issues/79) - node.js 0.10.x compatibility. + +0.10.1 / 2013-02-14 +=================== + +* Fixed issue [#66](https://github.com/jakubpawlowicz/clean-css/issues/66) - line breaks without extra spaces should + be handled correctly. + +0.10.0 / 2013-02-09 +=================== + +* Switched from [optimist](https://github.com/substack/node-optimist) to + [commander](https://github.com/visionmedia/commander.js) for CLI processing. +* Changed long options from `--removeempty` to `--remove-empty` and from `--keeplinebreaks` to `--keep-line-breaks`. +* Fixed performance issue with replacing multiple `@charset` declarations and issue + with line break after `@charset` when using `keepLineBreaks` option. By [@rrjaime](https://github.com/rrjamie). +* Removed Makefile in favor to `npm run` commands (e.g. `make check` -> `npm run check`). +* Fixed issue [#47](https://github.com/jakubpawlowicz/clean-css/issues/47) - commandline issues on Windows. +* Fixed issue [#49](https://github.com/jakubpawlowicz/clean-css/issues/49) - remove empty selectors from media query. +* Fixed issue [#52](https://github.com/jakubpawlowicz/clean-css/issues/52) - strip fraction zeros if not needed. +* Fixed issue [#58](https://github.com/jakubpawlowicz/clean-css/issues/58) - remove colon where possible. +* Fixed issue [#59](https://github.com/jakubpawlowicz/clean-css/issues/59) - content property handling. + +0.9.1 / 2012-12-19 +================== + +* Fixed issue [#37](https://github.com/jakubpawlowicz/clean-css/issues/37) - converting + `white` and other colors in class names (reported by [@malgorithms](https://github.com/malgorithms)). + +0.9.0 / 2012-12-15 +================== + +* Added stripping quotation from font names (if possible). +* Added stripping quotation from `@keyframes` declaration, `animation` and + `animation-name` property. +* Added stripping quotations from attributes' value (e.g. `[data-target='x']`). +* Added better hex->name and name->hex color shortening. +* Added `font: normal` and `font: bold` shortening the same way as `font-weight` is. +* Refactored shorthand selectors and added `border-radius`, `border-style` + and `border-color` shortening. +* Added `margin`, `padding` and `border-width` shortening. +* Added removing line break after commas. +* Fixed removing whitespace inside media query definition. +* Added removing line breaks after a comma, so all declarations are one-liners now. +* Speed optimizations (~10% despite many new features). +* Added [JSHint](https://github.com/jshint/jshint/) validation rules via `make check`. + +0.8.3 / 2012-11-29 +================== + +* Fixed HSL/HSLA colors processing. + +0.8.2 / 2012-10-31 +================== + +* Fixed shortening hex colors and their relation to hashes in URLs. +* Cleanup by [@XhmikosR](https://github.com/XhmikosR). + +0.8.1 / 2012-10-28 +================== + +* Added better zeros processing for `rect(...)` syntax (clip property). + +0.8.0 / 2012-10-21 +================== + +* Added removing URLs quotation if possible. +* Rewrote breaks processing. +* Added `keepBreaks`/`-b` option to keep line breaks in the minimized file. +* Reformatted [lib/clean.js](/lib/clean.js) so it's easier to follow the rules. +* Minimized test data is now minimized with line breaks so it's easier to + compare the changes line by line. + +0.7.0 / 2012-10-14 +================== + +* Added stripping special comments to CLI (`--s0` and `--s1` options). +* Added stripping special comments to programmatic interface + (`keepSpecialComments` option). + +0.6.0 / 2012-08-05 +================== + +* Full Windows support with tests (./test.bat). + +0.5.0 / 2012-08-02 +================== + +* Made path to vows local. +* Explicit node.js 0.6 requirement. + +0.4.2 / 2012-06-28 +================== + +* Updated binary `-v` option (version). +* Updated binary to output help when no options given (but not in piped mode). +* Added binary tests. + +0.4.1 / 2012-06-10 +================== + +* Fixed stateless mode where calling `CleanCSS#process` directly was giving + errors (reported by [@facelessuser](https://github.com/facelessuser)). + +0.4.0 / 2012-06-04 +================== + +* Speed improvements up to 4x thanks to the rewrite of comments and CSS' content + processing. +* Stripping empty CSS tags is now optional (see [bin/cleancss](/bin/cleancss) for details). +* Improved debugging mode (see [test/bench.js](/test/bench.js)) +* Added `make bench` for a one-pass benchmark. + +0.3.3 / 2012-05-27 +================== + +* Fixed tests, [package.json](/package.json) for development, and regex + for removing empty declarations (thanks to [@vvo](https://github.com/vvo)). + +0.3.2 / 2012-01-17 +================== + +* Fixed output method under node.js 0.6 which incorrectly tried to close + `process.stdout`. + +0.3.1 / 2011-12-16 +================== + +* Fixed cleaning up `0 0 0 0` expressions. + +0.3.0 / 2011-11-29 +================== + +* Clean-css requires node.js 0.4.0+ to run. +* Removed node.js's 0.2.x 'sys' package dependency + (thanks to [@jmalonzo](https://github.com/jmalonzo) for a patch). + +0.2.6 / 2011-11-27 +================== + +* Fixed expanding `+` signs in `calc()` when mixed up with adjacent `+` selector. + +0.2.5 / 2011-11-27 +================== + +* Fixed issue with cleaning up spaces inside `calc`/`-moz-calc` declarations + (thanks to [@cvan](https://github.com/cvan) for reporting it). +* Fixed converting `#f00` to `red` in borders and gradients. + +0.2.4 / 2011-05-25 +================== + +* Fixed problem with expanding `none` to `0` in partial/full background + declarations. +* Fixed including clean-css library from binary (global to local). + +0.2.3 / 2011-04-18 +================== + +* Fixed problem with optimizing IE filters. + +0.2.2 / 2011-04-17 +================== + +* Fixed problem with space before color in `border` property. + +0.2.1 / 2011-03-19 +================== + +* Added stripping space before `!important` keyword. +* Updated repository location and author information in [package.json](/package.json). + +0.2.0 / 2011-03-02 +================== + +* Added options parsing via optimist. +* Changed code inclusion (thus the version bump). + +0.1.0 / 2011-02-27 +================== + +* First version of clean-css library. +* Implemented all basic CSS transformations. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/LICENSE b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/LICENSE new file mode 100644 index 0000000..32bb13f --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2015 JakubPawlowicz.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/README.md b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/README.md new file mode 100644 index 0000000..05e2504 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/README.md @@ -0,0 +1,369 @@ +[![NPM version](https://img.shields.io/npm/v/clean-css.svg?style=flat)](https://www.npmjs.com/package/clean-css) +[![Linux Build Status](https://img.shields.io/travis/jakubpawlowicz/clean-css/master.svg?style=flat&label=Linux%20build)](https://travis-ci.org/jakubpawlowicz/clean-css) +[![Windows Build status](https://img.shields.io/appveyor/ci/jakubpawlowicz/clean-css/master.svg?style=flat&label=Windows%20build)](https://ci.appveyor.com/project/jakubpawlowicz/clean-css/branch/master) +[![Dependency Status](https://img.shields.io/david/jakubpawlowicz/clean-css.svg?style=flat)](https://david-dm.org/jakubpawlowicz/clean-css) +[![devDependency Status](https://img.shields.io/david/dev/jakubpawlowicz/clean-css.svg?style=flat)](https://david-dm.org/jakubpawlowicz/clean-css#info=devDependencies) + +## What is clean-css? + +Clean-css is a fast and efficient [Node.js](http://nodejs.org/) library for minifying CSS files. + +According to [tests](http://goalsmashers.github.io/css-minification-benchmark/) it is one of the best available. + + +## Usage + +### What are the requirements? + +``` +Node.js 0.10+ (tested on CentOS, Ubuntu, OS X 10.6+, and Windows 7+) or io.js 3.0+ +``` + +### How to install clean-css? + +``` +npm install clean-css +``` + +### How to use clean-css CLI? + +Clean-css accepts the following command line arguments (please make sure +you use `` as the very last argument to avoid potential issues): + +``` +cleancss [options] source-file, [source-file, ...] + +-h, --help output usage information +-v, --version output the version number +-b, --keep-line-breaks Keep line breaks +-c, --compatibility [ie7|ie8] Force compatibility mode (see Readme for advanced examples) +-d, --debug Shows debug information (minification time & compression efficiency) +-o, --output [output-file] Use [output-file] as output instead of STDOUT +-r, --root [root-path] Set a root path to which resolve absolute @import rules +-s, --skip-import Disable @import processing +-t, --timeout [seconds] Per connection timeout when fetching remote @imports (defaults to 5 seconds) +--rounding-precision [n] Rounds to `N` decimal places. Defaults to 2. -1 disables rounding +--s0 Remove all special comments, i.e. /*! comment */ +--s1 Remove all special comments but the first one +--semantic-merging Enables unsafe mode by assuming BEM-like semantic stylesheets (warning, this may break your styling!) +--skip-advanced Disable advanced optimizations - ruleset reordering & merging +--skip-aggressive-merging Disable properties merging based on their order +--skip-import-from [rules] Disable @import processing for specified rules +--skip-media-merging Disable @media merging +--skip-rebase Disable URLs rebasing +--skip-restructuring Disable restructuring optimizations +--skip-shorthand-compacting Disable shorthand compacting +--source-map Enables building input's source map +--source-map-inline-sources Enables inlining sources inside source maps +``` + +#### Examples: + +To minify a **public.css** file into **public-min.css** do: + +``` +cleancss -o public-min.css public.css +``` + +To minify the same **public.css** into the standard output skip the `-o` parameter: + +``` +cleancss public.css +``` + +More likely you would like to concatenate a couple of files. +If you are on a Unix-like system: + +```bash +cat one.css two.css three.css | cleancss -o merged-and-minified.css +``` + +On Windows: + +```bat +type one.css two.css three.css | cleancss -o merged-and-minified.css +``` + +Or even gzip the result at once: + +```bash +cat one.css two.css three.css | cleancss | gzip -9 -c > merged-minified-and-gzipped.css.gz +``` + +### How to use clean-css API? + +```js +var CleanCSS = require('clean-css'); +var source = 'a{font-weight:bold;}'; +var minified = new CleanCSS().minify(source).styles; +``` + +CleanCSS constructor accepts a hash as a parameter, i.e., +`new CleanCSS(options)` with the following options available: + +* `advanced` - set to false to disable advanced optimizations - selector & property merging, reduction, etc. +* `aggressiveMerging` - set to false to disable aggressive merging of properties. +* `benchmark` - turns on benchmarking mode measuring time spent on cleaning up (run `npm run bench` to see example) +* `compatibility` - enables compatibility mode, see [below for more examples](#how-to-set-compatibility-mode) +* `debug` - set to true to get minification statistics under `stats` property (see `test/custom-test.js` for examples) +* `inliner` - a hash of options for `@import` inliner, see [test/protocol-imports-test.js](https://github.com/jakubpawlowicz/clean-css/blob/master/test/protocol-imports-test.js#L372) for examples, or [this comment](https://github.com/jakubpawlowicz/clean-css/issues/612#issuecomment-119594185) for a proxy use case. +* `keepBreaks` - whether to keep line breaks (default is false) +* `keepSpecialComments` - `*` for keeping all (default), `1` for keeping first one only, `0` for removing all +* `mediaMerging` - whether to merge `@media` at-rules (default is true) +* `processImport` - whether to process `@import` rules +* `processImportFrom` - a list of `@import` rules, can be `['all']` (default), `['local']`, `['remote']`, or a blacklisted path e.g. `['!fonts.googleapis.com']` +* `rebase` - set to false to skip URL rebasing +* `relativeTo` - path to **resolve** relative `@import` rules and URLs +* `restructuring` - set to false to disable restructuring in advanced optimizations +* `root` - path to **resolve** absolute `@import` rules and **rebase** relative URLs +* `roundingPrecision` - rounding precision; defaults to `2`; `-1` disables rounding +* `semanticMerging` - set to true to enable semantic merging mode which assumes BEM-like content (default is false as it's highly likely this will break your stylesheets - **use with caution**!) +* `shorthandCompacting` - set to false to skip shorthand compacting (default is true unless sourceMap is set when it's false) +* `sourceMap` - exposes source map under `sourceMap` property, e.g. `new CleanCSS().minify(source).sourceMap` (default is false) + If input styles are a product of CSS preprocessor (Less, Sass) an input source map can be passed as a string. +* `sourceMapInlineSources` - set to true to inline sources inside a source map's `sourcesContent` field (defaults to false) + It is also required to process inlined sources from input source maps. +* `target` - path to a folder or an output file to which **rebase** all URLs + +The output of `minify` method (or the 2nd argument to passed callback) is a hash containing the following fields: + +* `styles` - optimized output CSS as a string +* `sourceMap` - output source map (if requested with `sourceMap` option) +* `errors` - a list of errors raised +* `warnings` - a list of warnings raised +* `stats` - a hash of statistic information (if requested with `debug` option): + * `originalSize` - original content size (after import inlining) + * `minifiedSize` - optimized content size + * `timeSpent` - time spent on optimizations + * `efficiency` - a ratio of output size to input size (e.g. 25% if content was reduced from 100 bytes to 75 bytes) + +#### How to make sure remote `@import`s are processed correctly? + +In order to inline remote `@import` statements you need to provide a callback to minify method, e.g.: + +```js +var CleanCSS = require('clean-css'); +var source = '@import url(http://path/to/remote/styles);'; +new CleanCSS().minify(source, function (errors, minified) { + // minified.styles +}); +``` + +This is due to a fact, that, while local files can be read synchronously, remote resources can only be processed asynchronously. +If you don't provide a callback, then remote `@import`s will be left intact. + +### How to use clean-css with build tools? + +* [Broccoli](https://github.com/broccolijs/broccoli#broccoli): [broccoli-clean-css](https://github.com/shinnn/broccoli-clean-css) +* [Brunch](http://brunch.io/): [clean-css-brunch](https://github.com/brunch/clean-css-brunch) +* [Grunt](http://gruntjs.com): [grunt-contrib-cssmin](https://github.com/gruntjs/grunt-contrib-cssmin) +* [Gulp](http://gulpjs.com/): [gulp-minify-css](https://github.com/jonathanepollack/gulp-minify-css) +* [Gulp](http://gulpjs.com/): [using vinyl-map as a wrapper - courtesy of @sogko](https://github.com/jakubpawlowicz/clean-css/issues/342) +* [component-builder2](https://github.com/component/builder2.js): [builder-clean-css](https://github.com/poying/builder-clean-css) +* [Metalsmith](http://metalsmith.io): [metalsmith-clean-css](https://github.com/aymericbeaumet/metalsmith-clean-css) +* [Lasso](https://github.com/lasso-js/lasso): [lasso-clean-css](https://github.com/yomed/lasso-clean-css) + +### What are the clean-css' dev commands? + +First clone the source, then run: + +* `npm run bench` for clean-css benchmarks (see [test/bench.js](https://github.com/jakubpawlowicz/clean-css/blob/master/test/bench.js) for details) +* `npm run browserify` to create the browser-ready clean-css version +* `npm run check` to check JS sources with [JSHint](https://github.com/jshint/jshint/) +* `npm test` for the test suite + +## How to contribute to clean-css? + +See [CONTRIBUTING.md](https://github.com/jakubpawlowicz/clean-css/blob/master/CONTRIBUTING.md). + +## Tips & Tricks + +### How to preserve a comment block? + +Use the `/*!` notation instead of the standard one `/*`: + +```css +/*! + Important comments included in minified output. +*/ +``` + +### How to rebase relative image URLs? + +Clean-css will handle it automatically for you (since version 1.1) in the following cases: + +* When using the CLI: + 1. Use an output path via `-o`/`--output` to rebase URLs as relative to the output file. + 2. Use a root path via `-r`/`--root` to rebase URLs as absolute from the given root path. + 3. If you specify both then `-r`/`--root` takes precendence. +* When using clean-css as a library: + 1. Use a combination of `relativeTo` and `target` options for relative rebase (same as 1 in CLI). + 2. Use a combination of `relativeTo` and `root` options for absolute rebase (same as 2 in CLI). + 3. `root` takes precendence over `target` as in CLI. + +### How to generate source maps? + +Source maps are supported since version 3.0. + +Additionally to mapping original CSS files, clean-css also supports input source maps, so minified styles can be mapped into their [Less](http://lesscss.org/) or [Sass](http://sass-lang.com/) sources directly. + +Source maps are generated using [source-map](https://github.com/mozilla/source-map/) module from Mozilla. + +#### Using CLI + +To generate a source map, use `--source-map` switch, e.g.: + +``` +cleancss --source-map --output styles.min.css styles.css +``` + +Name of the output file is required, so a map file, named by adding `.map` suffix to output file name, can be created (styles.min.css.map in this case). + +#### Using API + +To generate a source map, use `sourceMap: true` option, e.g.: + +```js +new CleanCSS({ sourceMap: true, target: pathToOutputDirectory }) + .minify(source, function (minified) { + // access minified.sourceMap for SourceMapGenerator object + // see https://github.com/mozilla/source-map/#sourcemapgenerator for more details + // see https://github.com/jakubpawlowicz/clean-css/blob/master/bin/cleancss#L114 on how it's used in clean-css' CLI +}); +``` + +Using API you can also pass an input source map directly: + +```js +new CleanCSS({ sourceMap: inputSourceMapAsString, target: pathToOutputDirectory }) + .minify(source, function (minified) { + // access minified.sourceMap to access SourceMapGenerator object + // see https://github.com/mozilla/source-map/#sourcemapgenerator for more details + // see https://github.com/jakubpawlowicz/clean-css/blob/master/bin/cleancss#L114 on how it's used in clean-css' CLI +}); +``` + +Or even multiple input source maps at once (available since version 3.1): + +```js +new CleanCSS({ sourceMap: true, target: pathToOutputDirectory }).minify({ + 'path/to/source/1': { + styles: '...styles...', + sourceMap: '...source-map...' + }, + 'path/to/source/2': { + styles: '...styles...', + sourceMap: '...source-map...' + } +}, function (minified) { + // access minified.sourceMap as above +}); +``` + +### How to minify multiple files with API? + +#### Passing an array + +```js +new CleanCSS().minify(['path/to/file/one', 'path/to/file/two']); +``` + +#### Passing a hash + +```js +new CleanCSS().minify({ + 'path/to/file/one': { + styles: 'contents of file one' + }, + 'path/to/file/two': { + styles: 'contents of file two' + } +}); +``` + +### How to set a compatibility mode? + +Compatibility settings are controlled by `--compatibility` switch (CLI) and `compatibility` option (library mode). + +In both modes the following values are allowed: + +* `'ie7'` - Internet Explorer 7 compatibility mode +* `'ie8'` - Internet Explorer 8 compatibility mode +* `''` or `'*'` (default) - Internet Explorer 9+ compatibility mode + +Since clean-css 3 a fine grained control is available over +[those settings](https://github.com/jakubpawlowicz/clean-css/blob/master/lib/utils/compatibility.js), +with the following options available: + +* `'[+-]colors.opacity'` - - turn on (+) / off (-) `rgba()` / `hsla()` declarations removal +* `'[+-]properties.backgroundClipMerging'` - turn on / off background-clip merging into shorthand +* `'[+-]properties.backgroundOriginMerging'` - turn on / off background-origin merging into shorthand +* `'[+-]properties.backgroundSizeMerging'` - turn on / off background-size merging into shorthand +* `'[+-]properties.colors'` - turn on / off any color optimizations +* `'[+-]properties.ieBangHack'` - turn on / off IE bang hack removal +* `'[+-]properties.iePrefixHack'` - turn on / off IE prefix hack removal +* `'[+-]properties.ieSuffixHack'` - turn on / off IE suffix hack removal +* `'[+-]properties.merging'` - turn on / off property merging based on understandability +* `'[+-]properties.spaceAfterClosingBrace'` - turn on / off removing space after closing brace - `url() no-repeat` into `url()no-repeat` +* `'[+-]properties.urlQuotes'` - turn on / off `url()` quoting +* `'[+-]properties.zeroUnits'` - turn on / off units removal after a `0` value +* `'[+-]selectors.adjacentSpace'` - turn on / off extra space before `nav` element +* `'[+-]selectors.ie7Hack'` - turn on / off IE7 selector hack removal (`*+html...`) +* `'[+-]selectors.special'` - a regular expression with all special, unmergeable selectors (leave it empty unless you know what you are doing) +* `'[+-]units.ch'` - turn on / off treating `ch` as a proper unit +* `'[+-]units.in'` - turn on / off treating `in` as a proper unit +* `'[+-]units.pc'` - turn on / off treating `pc` as a proper unit +* `'[+-]units.pt'` - turn on / off treating `pt` as a proper unit +* `'[+-]units.rem'` - turn on / off treating `rem` as a proper unit +* `'[+-]units.vh'` - turn on / off treating `vh` as a proper unit +* `'[+-]units.vm'` - turn on / off treating `vm` as a proper unit +* `'[+-]units.vmax'` - turn on / off treating `vmax` as a proper unit +* `'[+-]units.vmin'` - turn on / off treating `vmin` as a proper unit +* `'[+-]units.vm'` - turn on / off treating `vm` as a proper unit + +For example, using `--compatibility 'ie8,+units.rem'` will ensure IE8 compatibility while enabling `rem` units so the following style `margin:0px 0rem` can be shortened to `margin:0`, while in pure IE8 mode it can't be. + +To pass a single off (-) switch in CLI please use the following syntax `--compatibility *,-units.rem`. + +In library mode you can also pass `compatibility` as a hash of options. + +### What advanced optimizations are applied? + +All advanced optimizations are dispatched [here](https://github.com/jakubpawlowicz/clean-css/blob/master/lib/selectors/advanced.js#L59), and this is what they do: + +* `recursivelyOptimizeBlocks` - does all the following operations on a block (think `@media` or `@keyframe` at-rules); +* `recursivelyOptimizeProperties` - optimizes properties in rulesets and "flat at-rules" (like @font-face) by splitting them into components (e.g. `margin` into `margin-(*)`), optimizing, and rebuilding them back. You may want to use `shorthandCompacting` option to control whether you want to turn multiple (long-hand) properties into a shorthand ones; +* `removeDuplicates` - gets rid of duplicate rulesets with exactly the same set of properties (think of including the same Sass / Less partial twice for no good reason); +* `mergeAdjacent` - merges adjacent rulesets with the same selector or rules; +* `reduceNonAdjacent` - identifies which properties are overridden in same-selector non-adjacent rulesets, and removes them; +* `mergeNonAdjacentBySelector` - identifies same-selector non-adjacent rulesets which can be moved (!) to be merged, requires all intermediate rulesets to not redefine the moved properties, or if redefined to be either more coarse grained (e.g. `margin` vs `margin-top`) or have the same value; +* `mergeNonAdjacentByBody` - same as the one above but for same-rules non-adjacent rulesets; +* `restructure` - tries to reorganize different-selector different-rules rulesets so they take less space, e.g. `.one{padding:0}.two{margin:0}.one{margin-bottom:3px}` into `.two{margin:0}.one{padding:0;margin-bottom:3px}`; +* `removeDuplicateMediaQueries` - removes duplicated `@media` at-rules; +* `mergeMediaQueries` - merges non-adjacent `@media` at-rules by same rules as `mergeNonAdjacentBy*` above; + +## Acknowledgments (sorted alphabetically) + +* Anthony Barre ([@abarre](https://github.com/abarre)) for improvements to + `@import` processing, namely introducing the `--skip-import` / + `processImport` options. +* Simon Altschuler ([@altschuler](https://github.com/altschuler)) for fixing + `@import` processing inside comments. +* Isaac ([@facelessuser](https://github.com/facelessuser)) for pointing out + a flaw in clean-css' stateless mode. +* Jan Michael Alonzo ([@jmalonzo](https://github.com/jmalonzo)) for a patch + removing node.js' old `sys` package. +* Luke Page ([@lukeapage](https://github.com/lukeapage)) for suggestions and testing the source maps feature. + Plus everyone else involved in [#125](https://github.com/jakubpawlowicz/clean-css/issues/125) for pushing it forward. +* Timur Kristóf ([@Venemo](https://github.com/Venemo)) for an outstanding + contribution of advanced property optimizer for 2.2 release. +* Vincent Voyer ([@vvo](https://github.com/vvo)) for a patch with better + empty element regex and for inspiring us to do many performance improvements + in 0.4 release. +* [@XhmikosR](https://github.com/XhmikosR) for suggesting new features + (option to remove special comments and strip out URLs quotation) and + pointing out numerous improvements (JSHint, media queries). + +## License + +Clean-css is released under the [MIT License](https://github.com/jakubpawlowicz/clean-css/blob/master/LICENSE). diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/bin/cleancss b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/bin/cleancss new file mode 100755 index 0000000..afe7c84 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/bin/cleancss @@ -0,0 +1,183 @@ +#!/usr/bin/env node + +var fs = require('fs'); +var path = require('path'); +var CleanCSS = require('../index'); + +var commands = require('commander'); + +var packageConfig = fs.readFileSync(path.join(path.dirname(fs.realpathSync(process.argv[1])), '../package.json')); +var buildVersion = JSON.parse(packageConfig).version; + +var isWindows = process.platform == 'win32'; + +// Specify commander options to parse command line params correctly +commands + .version(buildVersion, '-v, --version') + .usage('[options] source-file, [source-file, ...]') + .option('-b, --keep-line-breaks', 'Keep line breaks') + .option('-c, --compatibility [ie7|ie8]', 'Force compatibility mode (see Readme for advanced examples)') + .option('-d, --debug', 'Shows debug information (minification time & compression efficiency)') + .option('-o, --output [output-file]', 'Use [output-file] as output instead of STDOUT') + .option('-r, --root [root-path]', 'Set a root path to which resolve absolute @import rules') + .option('-s, --skip-import', 'Disable @import processing') + .option('-t, --timeout [seconds]', 'Per connection timeout when fetching remote @imports (defaults to 5 seconds)') + .option('--rounding-precision [n]', 'Rounds to `N` decimal places. Defaults to 2. -1 disables rounding', parseInt) + .option('--s0', 'Remove all special comments, i.e. /*! comment */') + .option('--s1', 'Remove all special comments but the first one') + .option('--semantic-merging', 'Enables unsafe mode by assuming BEM-like semantic stylesheets (warning, this may break your styling!)') + .option('--skip-advanced', 'Disable advanced optimizations - ruleset reordering & merging') + .option('--skip-aggressive-merging', 'Disable properties merging based on their order') + .option('--skip-import-from [rules]', 'Disable @import processing for specified rules', function (val) { return val.split(','); }, []) + .option('--skip-media-merging', 'Disable @media merging') + .option('--skip-rebase', 'Disable URLs rebasing') + .option('--skip-restructuring', 'Disable restructuring optimizations') + .option('--skip-shorthand-compacting', 'Disable shorthand compacting') + .option('--source-map', 'Enables building input\'s source map') + .option('--source-map-inline-sources', 'Enables inlining sources inside source maps'); + +commands.on('--help', function () { + console.log(' Examples:\n'); + console.log(' %> cleancss one.css'); + console.log(' %> cleancss -o one-min.css one.css'); + if (isWindows) { + console.log(' %> type one.css two.css three.css | cleancss -o merged-and-minified.css'); + } else { + console.log(' %> cat one.css two.css three.css | cleancss -o merged-and-minified.css'); + console.log(' %> cat one.css two.css three.css | cleancss | gzip -9 -c > merged-minified-and-gzipped.css.gz'); + } + console.log(''); + process.exit(); +}); + +commands.parse(process.argv); + +// If no sensible data passed in just print help and exit +var fromStdin = !process.env.__DIRECT__ && !process.stdin.isTTY; +if (!fromStdin && commands.args.length === 0) { + commands.outputHelp(); + return 0; +} + +// Now coerce commands into CleanCSS configuration... +var options = { + advanced: commands.skipAdvanced ? false : true, + aggressiveMerging: commands.skipAggressiveMerging ? false : true, + compatibility: commands.compatibility, + debug: commands.debug, + inliner: commands.timeout ? { timeout: parseFloat(commands.timeout) * 1000 } : undefined, + keepBreaks: !!commands.keepLineBreaks, + keepSpecialComments: commands.s0 ? 0 : (commands.s1 ? 1 : '*'), + mediaMerging: commands.skipMediaMerging ? false : true, + processImport: commands.skipImport ? false : true, + processImportFrom: processImportFrom(commands.skipImportFrom), + rebase: commands.skipRebase ? false : true, + restructuring: commands.skipRestructuring ? false : true, + root: commands.root, + roundingPrecision: commands.roundingPrecision, + semanticMerging: commands.semanticMerging ? true : false, + shorthandCompacting: commands.skipShorthandCompacting ? false : true, + sourceMap: commands.sourceMap, + sourceMapInlineSources: commands.sourceMapInlineSources, + target: commands.output +}; + +if (options.root || commands.args.length > 0) { + var relativeTo = options.root || commands.args[0]; + + if (isRemote(relativeTo)) { + options.relativeTo = relativeTo; + } else { + var resolvedRelativeTo = path.resolve(relativeTo); + + options.relativeTo = fs.statSync(resolvedRelativeTo).isFile() ? + path.dirname(resolvedRelativeTo) : + resolvedRelativeTo; + } +} + +if (options.sourceMap && !options.target) { + outputFeedback(['Source maps will not be built because you have not specified an output file.'], true); + options.sourceMap = false; +} + +// ... and do the magic! +if (commands.args.length > 0) { + minify(commands.args); +} else { + var stdin = process.openStdin(); + stdin.setEncoding('utf-8'); + var data = ''; + stdin.on('data', function (chunk) { + data += chunk; + }); + stdin.on('end', function () { + minify(data); + }); +} + +function isRemote(path) { + return /^https?:\/\//.test(path) || /^\/\//.test(path); +} + +function processImportFrom(rules) { + if (rules.length === 0) { + return ['all']; + } else if (rules.length == 1 && rules[0] == 'all') { + return []; + } else { + return rules.map(function (rule) { + if (rule == 'local') + return 'remote'; + else if (rule == 'remote') + return 'local'; + else + return '!' + rule; + }); + } +} + +function minify(data) { + new CleanCSS(options).minify(data, function (errors, minified) { + if (options.debug) { + console.error('Original: %d bytes', minified.stats.originalSize); + console.error('Minified: %d bytes', minified.stats.minifiedSize); + console.error('Efficiency: %d%', ~~(minified.stats.efficiency * 10000) / 100.0); + console.error('Time spent: %dms', minified.stats.timeSpent); + } + + outputFeedback(minified.errors, true); + outputFeedback(minified.warnings); + + if (minified.errors.length > 0) + process.exit(1); + + if (minified.sourceMap) { + var mapFilename = path.basename(options.target) + '.map'; + output(minified.styles + '/*# sourceMappingURL=' + mapFilename + ' */'); + outputMap(minified.sourceMap, mapFilename); + } else { + output(minified.styles); + } + }); +} + +function output(minified) { + if (options.target) + fs.writeFileSync(options.target, minified, 'utf8'); + else + process.stdout.write(minified); +} + +function outputMap(sourceMap, mapFilename) { + var mapPath = path.join(path.dirname(options.target), mapFilename); + fs.writeFileSync(mapPath, sourceMap.toString(), 'utf-8'); +} + +function outputFeedback(messages, isError) { + var prefix = isError ? '\x1B[31mERROR\x1B[39m:' : 'WARNING:'; + + messages.forEach(function (message) { + console.error('%s %s', prefix, message); + }); +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/index.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/index.js new file mode 100644 index 0000000..d7b0503 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/clean'); diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/clean.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/clean.js new file mode 100644 index 0000000..9e4180d --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/clean.js @@ -0,0 +1,231 @@ +/** + * Clean-css - https://github.com/jakubpawlowicz/clean-css + * Released under the terms of MIT license + * + * Copyright (C) 2015 JakubPawlowicz.com + */ + +var ImportInliner = require('./imports/inliner'); +var rebaseUrls = require('./urls/rebase'); + +var tokenize = require('./tokenizer/tokenize'); +var simpleOptimize = require('./selectors/simple'); +var advancedOptimize = require('./selectors/advanced'); + +var simpleStringify = require('./stringifier/simple'); +var sourceMapStringify = require('./stringifier/source-maps'); + +var CommentsProcessor = require('./text/comments-processor'); +var ExpressionsProcessor = require('./text/expressions-processor'); +var FreeTextProcessor = require('./text/free-text-processor'); +var UrlsProcessor = require('./text/urls-processor'); + +var Compatibility = require('./utils/compatibility'); +var InputSourceMapTracker = require('./utils/input-source-map-tracker'); +var SourceTracker = require('./utils/source-tracker'); +var SourceReader = require('./utils/source-reader'); +var Validator = require('./properties/validator'); + +var fs = require('fs'); +var path = require('path'); +var url = require('url'); + +var override = require('./utils/object').override; + +var DEFAULT_TIMEOUT = 5000; + +var CleanCSS = module.exports = function CleanCSS(options) { + options = options || {}; + + this.options = { + advanced: undefined === options.advanced ? true : !!options.advanced, + aggressiveMerging: undefined === options.aggressiveMerging ? true : !!options.aggressiveMerging, + benchmark: options.benchmark, + compatibility: new Compatibility(options.compatibility).toOptions(), + debug: options.debug, + explicitRoot: !!options.root, + explicitTarget: !!options.target, + inliner: options.inliner || {}, + keepBreaks: options.keepBreaks || false, + keepSpecialComments: 'keepSpecialComments' in options ? options.keepSpecialComments : '*', + mediaMerging: undefined === options.mediaMerging ? true : !!options.mediaMerging, + processImport: undefined === options.processImport ? true : !!options.processImport, + processImportFrom: importOptionsFrom(options.processImportFrom), + rebase: undefined === options.rebase ? true : !!options.rebase, + relativeTo: options.relativeTo, + restructuring: undefined === options.restructuring ? true : !!options.restructuring, + root: options.root || process.cwd(), + roundingPrecision: options.roundingPrecision, + semanticMerging: undefined === options.semanticMerging ? false : !!options.semanticMerging, + shorthandCompacting: undefined === options.shorthandCompacting ? true : !!options.shorthandCompacting, + sourceMap: options.sourceMap, + sourceMapInlineSources: !!options.sourceMapInlineSources, + target: !options.target || missingDirectory(options.target) || presentDirectory(options.target) ? options.target : path.dirname(options.target) + }; + + this.options.inliner.timeout = this.options.inliner.timeout || DEFAULT_TIMEOUT; + this.options.inliner.request = override( + /* jshint camelcase: false */ + proxyOptionsFrom(process.env.HTTP_PROXY || process.env.http_proxy), + this.options.inliner.request || {} + ); +}; + +function importOptionsFrom(rules) { + return undefined === rules ? ['all'] : rules; +} + +function missingDirectory(filepath) { + return !fs.existsSync(filepath) && !/\.css$/.test(filepath); +} + +function presentDirectory(filepath) { + return fs.existsSync(filepath) && fs.statSync(filepath).isDirectory(); +} + +function proxyOptionsFrom(httpProxy) { + return httpProxy ? + { + hostname: url.parse(httpProxy).hostname, + port: parseInt(url.parse(httpProxy).port) + } : + {}; +} + +CleanCSS.prototype.minify = function (data, callback) { + var context = { + stats: {}, + errors: [], + warnings: [], + options: this.options, + debug: this.options.debug, + localOnly: !callback, + sourceTracker: new SourceTracker(), + validator: new Validator(this.options.compatibility) + }; + + if (context.options.sourceMap) + context.inputSourceMapTracker = new InputSourceMapTracker(context); + + context.sourceReader = new SourceReader(context, data); + data = context.sourceReader.toString(); + + if (context.options.processImport || data.indexOf('@shallow') > 0) { + // inline all imports + var runner = callback ? + process.nextTick : + function (callback) { return callback(); }; + + return runner(function () { + return new ImportInliner(context).process(data, { + localOnly: context.localOnly, + imports: context.options.processImportFrom, + whenDone: runMinifier(callback, context) + }); + }); + } else { + return runMinifier(callback, context)(data); + } +}; + +function runMinifier(callback, context) { + function whenSourceMapReady (data) { + data = context.options.debug ? + minifyWithDebug(context, data) : + minify(context, data); + data = withMetadata(context, data); + + return callback ? + callback.call(null, context.errors.length > 0 ? context.errors : null, data) : + data; + } + + return function (data) { + if (context.options.sourceMap) { + return context.inputSourceMapTracker.track(data, function () { + if (context.options.sourceMapInlineSources) { + return context.inputSourceMapTracker.resolveSources(function () { + return whenSourceMapReady(data); + }); + } else { + return whenSourceMapReady(data); + } + }); + } else { + return whenSourceMapReady(data); + } + }; +} + +function withMetadata(context, data) { + data.stats = context.stats; + data.errors = context.errors; + data.warnings = context.warnings; + return data; +} + +function minifyWithDebug(context, data) { + var startedAt = process.hrtime(); + context.stats.originalSize = context.sourceTracker.removeAll(data).length; + + data = minify(context, data); + + var elapsed = process.hrtime(startedAt); + context.stats.timeSpent = ~~(elapsed[0] * 1e3 + elapsed[1] / 1e6); + context.stats.efficiency = 1 - data.styles.length / context.stats.originalSize; + context.stats.minifiedSize = data.styles.length; + + return data; +} + +function benchmark(runner) { + return function (processor, action) { + var name = processor.constructor.name + '#' + action; + var start = process.hrtime(); + runner(processor, action); + var itTook = process.hrtime(start); + console.log('%d ms: ' + name, 1000 * itTook[0] + itTook[1] / 1000000); + }; +} + +function minify(context, data) { + var options = context.options; + + var commentsProcessor = new CommentsProcessor(context, options.keepSpecialComments, options.keepBreaks, options.sourceMap); + var expressionsProcessor = new ExpressionsProcessor(options.sourceMap); + var freeTextProcessor = new FreeTextProcessor(options.sourceMap); + var urlsProcessor = new UrlsProcessor(context, options.sourceMap, options.compatibility.properties.urlQuotes); + + var stringify = options.sourceMap ? sourceMapStringify : simpleStringify; + + var run = function (processor, action) { + data = typeof processor == 'function' ? + processor(data) : + processor[action](data); + }; + + if (options.benchmark) + run = benchmark(run); + + run(commentsProcessor, 'escape'); + run(expressionsProcessor, 'escape'); + run(urlsProcessor, 'escape'); + run(freeTextProcessor, 'escape'); + + function restoreEscapes(data, prefixContent) { + data = freeTextProcessor.restore(data, prefixContent); + data = urlsProcessor.restore(data); + data = options.rebase ? rebaseUrls(data, context) : data; + data = expressionsProcessor.restore(data); + return commentsProcessor.restore(data); + } + + var tokens = tokenize(data, context); + + simpleOptimize(tokens, options); + + if (options.advanced) + advancedOptimize(tokens, options, context, true); + + return stringify(tokens, options, restoreEscapes, context.inputSourceMapTracker); +} diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/hex-name-shortener.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/hex-name-shortener.js new file mode 100644 index 0000000..2af2f4e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/hex-name-shortener.js @@ -0,0 +1,186 @@ +var HexNameShortener = {}; + +var COLORS = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#0ff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000', + blanchedalmond: '#ffebcd', + blue: '#00f', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#0ff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgreen: '#006400', + darkgrey: '#a9a9a9', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkslategrey: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#f0f', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + gold: '#ffd700', + goldenrod: '#daa520', + gray: '#808080', + green: '#008000', + greenyellow: '#adff2f', + grey: '#808080', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + indianred: '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + lavender: '#e6e6fa', + lavenderblush: '#fff0f5', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrodyellow: '#fafad2', + lightgray: '#d3d3d3', + lightgreen: '#90ee90', + lightgrey: '#d3d3d3', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#0f0', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#ff00ff', + maroon: '#800000', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370db', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#db7093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + rebeccapurple: '#663399', + red: '#f00', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + slategrey: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#fff', + whitesmoke: '#f5f5f5', + yellow: '#ff0', + yellowgreen: '#9acd32' +}; + +var toHex = {}; +var toName = {}; + +for (var name in COLORS) { + var hex = COLORS[name]; + if (name.length < hex.length) + toName[hex] = name; + else + toHex[name] = hex; +} + +var toHexPattern = new RegExp('(^| |,|\\))(' + Object.keys(toHex).join('|') + ')( |,|\\)|$)', 'ig'); +var toNamePattern = new RegExp('(' + Object.keys(toName).join('|') + ')([^a-f0-9]|$)', 'ig'); + +function hexConverter(match, prefix, colorValue, suffix) { + return prefix + toHex[colorValue.toLowerCase()] + suffix; +} + +function nameConverter(match, colorValue, suffix) { + return toName[colorValue.toLowerCase()] + suffix; +} + +HexNameShortener.shorten = function (value) { + var hasHex = value.indexOf('#') > -1; + var shortened = value.replace(toHexPattern, hexConverter); + + if (shortened != value) + shortened = shortened.replace(toHexPattern, hexConverter); + + return hasHex ? shortened.replace(toNamePattern, nameConverter) : shortened; +}; + +module.exports = HexNameShortener; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/hsl.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/hsl.js new file mode 100644 index 0000000..5c76b6e --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/hsl.js @@ -0,0 +1,67 @@ +// HSL to RGB converter. Both methods adapted from: +// http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript + +function HSLColor(hue, saturation, lightness) { + this.hue = hue; + this.saturation = saturation; + this.lightness = lightness; +} + +function hslToRgb(h, s, l) { + var r, g, b; + + // normalize hue orientation b/w 0 and 360 degrees + h = h % 360; + if (h < 0) + h += 360; + h = ~~h / 360; + + if (s < 0) + s = 0; + else if (s > 100) + s = 100; + s = ~~s / 100; + + if (l < 0) + l = 0; + else if (l > 100) + l = 100; + l = ~~l / 100; + + if (s === 0) { + r = g = b = l; // achromatic + } else { + var q = l < 0.5 ? + l * (1 + s) : + l + s - l * s; + var p = 2 * l - q; + r = hueToRgb(p, q, h + 1/3); + g = hueToRgb(p, q, h); + b = hueToRgb(p, q, h - 1/3); + } + + return [~~(r * 255), ~~(g * 255), ~~(b * 255)]; +} + +function hueToRgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1/6) return p + (q - p) * 6 * t; + if (t < 1/2) return q; + if (t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; +} + +HSLColor.prototype.toHex = function () { + var asRgb = hslToRgb(this.hue, this.saturation, this.lightness); + var redAsHex = asRgb[0].toString(16); + var greenAsHex = asRgb[1].toString(16); + var blueAsHex = asRgb[2].toString(16); + + return '#' + + ((redAsHex.length == 1 ? '0' : '') + redAsHex) + + ((greenAsHex.length == 1 ? '0' : '') + greenAsHex) + + ((blueAsHex.length == 1 ? '0' : '') + blueAsHex); +}; + +module.exports = HSLColor; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/rgb.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/rgb.js new file mode 100644 index 0000000..2f94548 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/colors/rgb.js @@ -0,0 +1,16 @@ +function RGB(red, green, blue) { + this.red = red; + this.green = green; + this.blue = blue; +} + +RGB.prototype.toHex = function () { + var red = Math.max(0, Math.min(~~this.red, 255)); + var green = Math.max(0, Math.min(~~this.green, 255)); + var blue = Math.max(0, Math.min(~~this.blue, 255)); + + // Credit: Asen http://jsbin.com/UPUmaGOc/2/edit?js,console + return '#' + ('00000' + (red << 16 | green << 8 | blue).toString(16)).slice(-6); +}; + +module.exports = RGB; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/imports/inliner.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/imports/inliner.js new file mode 100644 index 0000000..cca126b --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/imports/inliner.js @@ -0,0 +1,399 @@ +var fs = require('fs'); +var path = require('path'); +var http = require('http'); +var https = require('https'); +var url = require('url'); + +var rewriteUrls = require('../urls/rewrite'); +var split = require('../utils/split'); +var override = require('../utils/object.js').override; + +var MAP_MARKER = /\/\*# sourceMappingURL=(\S+) \*\//; +var REMOTE_RESOURCE = /^(https?:)?\/\//; +var NO_PROTOCOL_RESOURCE = /^\/\//; + +function ImportInliner (context) { + this.outerContext = context; +} + +ImportInliner.prototype.process = function (data, context) { + var root = this.outerContext.options.root; + + context = override(context, { + baseRelativeTo: this.outerContext.options.relativeTo || root, + debug: this.outerContext.options.debug, + done: [], + errors: this.outerContext.errors, + left: [], + inliner: this.outerContext.options.inliner, + rebase: this.outerContext.options.rebase, + relativeTo: this.outerContext.options.relativeTo || root, + root: root, + sourceReader: this.outerContext.sourceReader, + sourceTracker: this.outerContext.sourceTracker, + warnings: this.outerContext.warnings, + visited: [] + }); + + return importFrom(data, context); +}; + +function importFrom(data, context) { + if (context.shallow) { + context.shallow = false; + context.done.push(data); + return processNext(context); + } + + var nextStart = 0; + var nextEnd = 0; + var cursor = 0; + var isComment = commentScanner(data); + + for (; nextEnd < data.length;) { + nextStart = nextImportAt(data, cursor); + if (nextStart == -1) + break; + + if (isComment(nextStart)) { + cursor = nextStart + 1; + continue; + } + + nextEnd = data.indexOf(';', nextStart); + if (nextEnd == -1) { + cursor = data.length; + data = ''; + break; + } + + var noImportPart = data.substring(0, nextStart); + context.done.push(noImportPart); + context.left.unshift([data.substring(nextEnd + 1), context]); + context.afterContent = hasContent(noImportPart); + return inline(data, nextStart, nextEnd, context); + } + + // no @import matched in current data + context.done.push(data); + return processNext(context); +} + +function rebaseMap(data, source) { + return data.replace(MAP_MARKER, function (match, sourceMapUrl) { + return REMOTE_RESOURCE.test(sourceMapUrl) ? + match : + match.replace(sourceMapUrl, url.resolve(source, sourceMapUrl)); + }); +} + +function nextImportAt(data, cursor) { + var nextLowerCase = data.indexOf('@import', cursor); + var nextUpperCase = data.indexOf('@IMPORT', cursor); + + if (nextLowerCase > -1 && nextUpperCase == -1) + return nextLowerCase; + else if (nextLowerCase == -1 && nextUpperCase > -1) + return nextUpperCase; + else + return Math.min(nextLowerCase, nextUpperCase); +} + +function processNext(context) { + return context.left.length > 0 ? + importFrom.apply(null, context.left.shift()) : + context.whenDone(context.done.join('')); +} + +function commentScanner(data) { + var commentRegex = /(\/\*(?!\*\/)[\s\S]*?\*\/)/; + var lastStartIndex = 0; + var lastEndIndex = 0; + var noComments = false; + + // test whether an index is located within a comment + return function scanner(idx) { + var comment; + var localStartIndex = 0; + var localEndIndex = 0; + var globalStartIndex = 0; + var globalEndIndex = 0; + + // return if we know there are no more comments + if (noComments) + return false; + + do { + // idx can be still within last matched comment (many @import statements inside one comment) + if (idx > lastStartIndex && idx < lastEndIndex) + return true; + + comment = data.match(commentRegex); + + if (!comment) { + noComments = true; + return false; + } + + // get the indexes relative to the current data chunk + lastStartIndex = localStartIndex = comment.index; + localEndIndex = localStartIndex + comment[0].length; + + // calculate the indexes relative to the full original data + globalEndIndex = localEndIndex + lastEndIndex; + globalStartIndex = globalEndIndex - comment[0].length; + + // chop off data up to and including current comment block + data = data.substring(localEndIndex); + lastEndIndex = globalEndIndex; + } while (globalEndIndex < idx); + + return globalEndIndex > idx && idx > globalStartIndex; + }; +} + +function hasContent(data) { + var isComment = commentScanner(data); + var firstContentIdx = -1; + while (true) { + firstContentIdx = data.indexOf('{', firstContentIdx + 1); + if (firstContentIdx == -1 || !isComment(firstContentIdx)) + break; + } + + return firstContentIdx > -1; +} + +function inline(data, nextStart, nextEnd, context) { + context.shallow = data.indexOf('@shallow') > 0; + + var importDeclaration = data + .substring(nextImportAt(data, nextStart) + '@import'.length + 1, nextEnd) + .replace(/@shallow\)$/, ')') + .trim(); + + var viaUrl = importDeclaration.indexOf('url(') === 0; + var urlStartsAt = viaUrl ? 4 : 0; + var isQuoted = /^['"]/.exec(importDeclaration.substring(urlStartsAt, urlStartsAt + 2)); + var urlEndsAt = isQuoted ? + importDeclaration.indexOf(isQuoted[0], urlStartsAt + 1) : + split(importDeclaration, ' ')[0].length - (viaUrl ? 1 : 0); + + var importedFile = importDeclaration + .substring(urlStartsAt, urlEndsAt) + .replace(/['"]/g, '') + .replace(/\)$/, '') + .trim(); + + var mediaQuery = importDeclaration + .substring(urlEndsAt + 1) + .replace(/^\)/, '') + .trim(); + + var isRemote = context.isRemote || REMOTE_RESOURCE.test(importedFile); + + if (isRemote && (context.localOnly || !allowedResource(importedFile, true, context.imports))) { + if (context.afterContent || hasContent(context.done.join(''))) + context.warnings.push('Ignoring remote @import of "' + importedFile + '" as no callback given.'); + else + restoreImport(importedFile, mediaQuery, context); + + return processNext(context); + } + + if (!isRemote && !allowedResource(importedFile, false, context.imports)) { + if (context.afterImport) + context.warnings.push('Ignoring local @import of "' + importedFile + '" as after other inlined content.'); + else + restoreImport(importedFile, mediaQuery, context); + return processNext(context); + } + + if (!isRemote && context.afterContent) { + context.warnings.push('Ignoring local @import of "' + importedFile + '" as after other CSS content.'); + return processNext(context); + } + + var method = isRemote ? inlineRemoteResource : inlineLocalResource; + return method(importedFile, mediaQuery, context); +} + +function allowedResource(importedFile, isRemote, rules) { + if (rules.length === 0) + return false; + + if (isRemote && NO_PROTOCOL_RESOURCE.test(importedFile)) + importedFile = 'http:' + importedFile; + + var match = isRemote ? + url.parse(importedFile).host : + importedFile; + var allowed = true; + + for (var i = 0; i < rules.length; i++) { + var rule = rules[i]; + + if (rule == 'all') + allowed = true; + else if (isRemote && rule == 'local') + allowed = false; + else if (isRemote && rule == 'remote') + allowed = true; + else if (!isRemote && rule == 'remote') + allowed = false; + else if (!isRemote && rule == 'local') + allowed = true; + else if (rule[0] == '!' && rule.substring(1) === match) + allowed = false; + } + + return allowed; +} + +function inlineRemoteResource(importedFile, mediaQuery, context) { + var importedUrl = REMOTE_RESOURCE.test(importedFile) ? + importedFile : + url.resolve(context.relativeTo, importedFile); + var originalUrl = importedUrl; + + if (NO_PROTOCOL_RESOURCE.test(importedUrl)) + importedUrl = 'http:' + importedUrl; + + if (context.visited.indexOf(importedUrl) > -1) + return processNext(context); + + + if (context.debug) + console.error('Inlining remote stylesheet: ' + importedUrl); + + context.visited.push(importedUrl); + + var proxyProtocol = context.inliner.request.protocol || context.inliner.request.hostname; + var get = + ((proxyProtocol && proxyProtocol.indexOf('https://') !== 0 ) || + importedUrl.indexOf('http://') === 0) ? + http.get : + https.get; + + var errorHandled = false; + function handleError(message) { + if (errorHandled) + return; + + errorHandled = true; + context.errors.push('Broken @import declaration of "' + importedUrl + '" - ' + message); + restoreImport(importedUrl, mediaQuery, context); + + process.nextTick(function () { + processNext(context); + }); + } + + var requestOptions = override(url.parse(importedUrl), context.inliner.request); + if (context.inliner.request.hostname !== undefined) { + + //overwrite as we always expect a http proxy currently + requestOptions.protocol = context.inliner.request.protocol || 'http:'; + requestOptions.path = requestOptions.href; + } + + + get(requestOptions, function (res) { + if (res.statusCode < 200 || res.statusCode > 399) { + return handleError('error ' + res.statusCode); + } else if (res.statusCode > 299) { + var movedUrl = url.resolve(importedUrl, res.headers.location); + return inlineRemoteResource(movedUrl, mediaQuery, context); + } + + var chunks = []; + var parsedUrl = url.parse(importedUrl); + res.on('data', function (chunk) { + chunks.push(chunk.toString()); + }); + res.on('end', function () { + var importedData = chunks.join(''); + if (context.rebase) + importedData = rewriteUrls(importedData, { toBase: originalUrl }, context); + context.sourceReader.trackSource(importedUrl, importedData); + importedData = context.sourceTracker.store(importedUrl, importedData); + importedData = rebaseMap(importedData, importedUrl); + + if (mediaQuery.length > 0) + importedData = '@media ' + mediaQuery + '{' + importedData + '}'; + + context.afterImport = true; + + var newContext = override(context, { + isRemote: true, + relativeTo: parsedUrl.protocol + '//' + parsedUrl.host + parsedUrl.pathname + }); + + process.nextTick(function () { + importFrom(importedData, newContext); + }); + }); + }) + .on('error', function (res) { + handleError(res.message); + }) + .on('timeout', function () { + handleError('timeout'); + }) + .setTimeout(context.inliner.timeout); +} + +function inlineLocalResource(importedFile, mediaQuery, context) { + var relativeTo = importedFile[0] == '/' ? + context.root : + context.relativeTo; + + var fullPath = path.resolve(path.join(relativeTo, importedFile)); + + if (!fs.existsSync(fullPath) || !fs.statSync(fullPath).isFile()) { + context.errors.push('Broken @import declaration of "' + importedFile + '"'); + return processNext(context); + } + + if (context.visited.indexOf(fullPath) > -1) + return processNext(context); + + + if (context.debug) + console.error('Inlining local stylesheet: ' + fullPath); + + context.visited.push(fullPath); + + var importRelativeTo = path.dirname(fullPath); + var importedData = fs.readFileSync(fullPath, 'utf8'); + if (context.rebase) { + var rewriteOptions = { + relative: true, + fromBase: importRelativeTo, + toBase: context.baseRelativeTo + }; + importedData = rewriteUrls(importedData, rewriteOptions, context); + } + + var relativePath = path.relative(context.root, fullPath); + context.sourceReader.trackSource(relativePath, importedData); + importedData = context.sourceTracker.store(relativePath, importedData); + + if (mediaQuery.length > 0) + importedData = '@media ' + mediaQuery + '{' + importedData + '}'; + + context.afterImport = true; + + var newContext = override(context, { + relativeTo: importRelativeTo + }); + + return importFrom(importedData, newContext); +} + +function restoreImport(importedUrl, mediaQuery, context) { + var restoredImport = '@import url(' + importedUrl + ')' + (mediaQuery.length > 0 ? ' ' + mediaQuery : '') + ';'; + context.done.push(restoredImport); +} + +module.exports = ImportInliner; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/break-up.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/break-up.js new file mode 100644 index 0000000..6657b7a --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/break-up.js @@ -0,0 +1,335 @@ +var wrapSingle = require('./wrap-for-optimizing').single; +var InvalidPropertyError = require('./invalid-property-error'); + +var split = require('../utils/split'); +var MULTIPLEX_SEPARATOR = ','; + +function _colorFilter(validator) { + return function (value) { + return value[0] == 'invert' || validator.isValidColor(value[0]); + }; +} + +function _styleFilter(validator) { + return function (value) { + return value[0] != 'inherit' && validator.isValidStyle(value[0]) && !validator.isValidColorValue(value[0]); + }; +} + +function _wrapDefault(name, property, compactable) { + var descriptor = compactable[name]; + if (descriptor.doubleValues && descriptor.defaultValue.length == 2) + return wrapSingle([[name, property.important], [descriptor.defaultValue[0]], [descriptor.defaultValue[1]]]); + else if (descriptor.doubleValues && descriptor.defaultValue.length == 1) + return wrapSingle([[name, property.important], [descriptor.defaultValue[0]]]); + else + return wrapSingle([[name, property.important], [descriptor.defaultValue]]); +} + +function _widthFilter(validator) { + return function (value) { + return value[0] != 'inherit' && validator.isValidWidth(value[0]) && !validator.isValidStyleKeyword(value[0]) && !validator.isValidColorValue(value[0]); + }; +} + +function background(property, compactable, validator) { + var image = _wrapDefault('background-image', property, compactable); + var position = _wrapDefault('background-position', property, compactable); + var size = _wrapDefault('background-size', property, compactable); + var repeat = _wrapDefault('background-repeat', property, compactable); + var attachment = _wrapDefault('background-attachment', property, compactable); + var origin = _wrapDefault('background-origin', property, compactable); + var clip = _wrapDefault('background-clip', property, compactable); + var color = _wrapDefault('background-color', property, compactable); + var components = [image, position, size, repeat, attachment, origin, clip, color]; + var values = property.value; + + var positionSet = false; + var clipSet = false; + var originSet = false; + var repeatSet = false; + + if (property.value.length == 1 && property.value[0][0] == 'inherit') { + // NOTE: 'inherit' is not a valid value for background-attachment + color.value = image.value = repeat.value = position.value = size.value = origin.value = clip.value = property.value; + return components; + } + + for (var i = values.length - 1; i >= 0; i--) { + var value = values[i]; + + if (validator.isValidBackgroundAttachment(value[0])) { + attachment.value = [value]; + } else if (validator.isValidBackgroundBox(value[0])) { + if (clipSet) { + origin.value = [value]; + originSet = true; + } else { + clip.value = [value]; + clipSet = true; + } + } else if (validator.isValidBackgroundRepeat(value[0])) { + if (repeatSet) { + repeat.value.unshift(value); + } else { + repeat.value = [value]; + repeatSet = true; + } + } else if (validator.isValidBackgroundPositionPart(value[0]) || validator.isValidBackgroundSizePart(value[0])) { + if (i > 0) { + var previousValue = values[i - 1]; + + if (previousValue[0].indexOf('/') > 0) { + var twoParts = split(previousValue[0], '/'); + // NOTE: we do this slicing as value may contain metadata too, like for source maps + size.value = [[twoParts.pop()].concat(previousValue.slice(1)), value]; + values[i - 1] = [twoParts.pop()].concat(previousValue.slice(1)); + } else if (i > 1 && values[i - 2][0] == '/') { + size.value = [previousValue, value]; + i -= 2; + } else if (previousValue[0] == '/') { + size.value = [value]; + } else { + if (!positionSet) + position.value = []; + + position.value.unshift(value); + positionSet = true; + } + } else { + if (!positionSet) + position.value = []; + + position.value.unshift(value); + positionSet = true; + } + } else if (validator.isValidBackgroundPositionAndSize(value[0])) { + var sizeValue = split(value[0], '/'); + // NOTE: we do this slicing as value may contain metadata too, like for source maps + size.value = [[sizeValue.pop()].concat(value.slice(1))]; + position.value = [[sizeValue.pop()].concat(value.slice(1))]; + } else if ((color.value[0][0] == compactable[color.name].defaultValue || color.value[0][0] == 'none') && validator.isValidColor(value[0])) { + color.value = [value]; + } else if (validator.isValidUrl(value[0]) || validator.isValidFunction(value[0])) { + image.value = [value]; + } + } + + if (clipSet && !originSet) + origin.value = clip.value.slice(0); + + return components; +} + +function borderRadius(property, compactable) { + var values = property.value; + var splitAt = -1; + + for (var i = 0, l = values.length; i < l; i++) { + if (values[i][0] == '/') { + splitAt = i; + break; + } + } + + if (splitAt === 0 || splitAt === values.length - 1) { + throw new InvalidPropertyError('Invalid border-radius value.'); + } + + var target = _wrapDefault(property.name, property, compactable); + target.value = splitAt > -1 ? + values.slice(0, splitAt) : + values.slice(0); + target.components = fourValues(target, compactable); + + var remainder = _wrapDefault(property.name, property, compactable); + remainder.value = splitAt > -1 ? + values.slice(splitAt + 1) : + values.slice(0); + remainder.components = fourValues(remainder, compactable); + + for (var j = 0; j < 4; j++) { + target.components[j].multiplex = true; + target.components[j].value = target.components[j].value.concat(remainder.components[j].value); + } + + return target.components; +} + +function fourValues(property, compactable) { + var componentNames = compactable[property.name].components; + var components = []; + var value = property.value; + + if (value.length < 1) + return []; + + if (value.length < 2) + value[1] = value[0].slice(0); + if (value.length < 3) + value[2] = value[0].slice(0); + if (value.length < 4) + value[3] = value[1].slice(0); + + for (var i = componentNames.length - 1; i >= 0; i--) { + var component = wrapSingle([[componentNames[i], property.important]]); + component.value = [value[i]]; + components.unshift(component); + } + + return components; +} + +function multiplex(splitWith) { + return function (property, compactable, validator) { + var splitsAt = []; + var values = property.value; + var i, j, l, m; + + // find split commas + for (i = 0, l = values.length; i < l; i++) { + if (values[i][0] == ',') + splitsAt.push(i); + } + + if (splitsAt.length === 0) + return splitWith(property, compactable, validator); + + var splitComponents = []; + + // split over commas, and into components + for (i = 0, l = splitsAt.length; i <= l; i++) { + var from = i === 0 ? 0 : splitsAt[i - 1] + 1; + var to = i < l ? splitsAt[i] : values.length; + + var _property = _wrapDefault(property.name, property, compactable); + _property.value = values.slice(from, to); + + splitComponents.push(splitWith(_property, compactable, validator)); + } + + var components = splitComponents[0]; + + // group component values from each split + for (i = 0, l = components.length; i < l; i++) { + components[i].multiplex = true; + + for (j = 1, m = splitComponents.length; j < m; j++) { + components[i].value.push([MULTIPLEX_SEPARATOR]); + Array.prototype.push.apply(components[i].value, splitComponents[j][i].value); + } + } + + return components; + }; +} + +function listStyle(property, compactable, validator) { + var type = _wrapDefault('list-style-type', property, compactable); + var position = _wrapDefault('list-style-position', property, compactable); + var image = _wrapDefault('list-style-image', property, compactable); + var components = [type, position, image]; + + if (property.value.length == 1 && property.value[0][0] == 'inherit') { + type.value = position.value = image.value = [property.value[0]]; + return components; + } + + var values = property.value.slice(0); + var total = values.length; + var index = 0; + + // `image` first... + for (index = 0, total = values.length; index < total; index++) { + if (validator.isValidUrl(values[index][0]) || values[index][0] == '0') { + image.value = [values[index]]; + values.splice(index, 1); + break; + } + } + + // ... then `type`... + for (index = 0, total = values.length; index < total; index++) { + if (validator.isValidListStyleType(values[index][0])) { + type.value = [values[index]]; + values.splice(index, 1); + break; + } + } + + // ... and what's left is a `position` + if (values.length > 0 && validator.isValidListStylePosition(values[0][0])) + position.value = [values[0]]; + + return components; +} + +function widthStyleColor(property, compactable, validator) { + var descriptor = compactable[property.name]; + var components = [ + _wrapDefault(descriptor.components[0], property, compactable), + _wrapDefault(descriptor.components[1], property, compactable), + _wrapDefault(descriptor.components[2], property, compactable) + ]; + var color, style, width; + + for (var i = 0; i < 3; i++) { + var component = components[i]; + + if (component.name.indexOf('color') > 0) + color = component; + else if (component.name.indexOf('style') > 0) + style = component; + else + width = component; + } + + if ((property.value.length == 1 && property.value[0][0] == 'inherit') || + (property.value.length == 3 && property.value[0][0] == 'inherit' && property.value[1][0] == 'inherit' && property.value[2][0] == 'inherit')) { + color.value = style.value = width.value = [property.value[0]]; + return components; + } + + var values = property.value.slice(0); + var match, matches; + + // NOTE: usually users don't follow the required order of parts in this shorthand, + // so we'll try to parse it caring as little about order as possible + + if (values.length > 0) { + matches = values.filter(_widthFilter(validator)); + match = matches.length > 1 && (matches[0][0] == 'none' || matches[0][0] == 'auto') ? matches[1] : matches[0]; + if (match) { + width.value = [match]; + values.splice(values.indexOf(match), 1); + } + } + + if (values.length > 0) { + match = values.filter(_styleFilter(validator))[0]; + if (match) { + style.value = [match]; + values.splice(values.indexOf(match), 1); + } + } + + if (values.length > 0) { + match = values.filter(_colorFilter(validator))[0]; + if (match) { + color.value = [match]; + values.splice(values.indexOf(match), 1); + } + } + + return components; +} + +module.exports = { + background: background, + border: widthStyleColor, + borderRadius: borderRadius, + fourValues: fourValues, + listStyle: listStyle, + multiplex: multiplex, + outline: widthStyleColor +}; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/can-override.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/can-override.js new file mode 100644 index 0000000..474e237 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/can-override.js @@ -0,0 +1,142 @@ +// Functions that decide what value can override what. +// The main purpose is to disallow removing CSS fallbacks. +// A separate implementation is needed for every different kind of CSS property. +// ----- +// The generic idea is that properties that have wider browser support are 'more understandable' +// than others and that 'less understandable' values can't override more understandable ones. + +// Use when two tokens of the same property can always be merged +function always() { + return true; +} + +function alwaysButIntoFunction(property1, property2, validator) { + var value1 = property1.value[0][0]; + var value2 = property2.value[0][0]; + + var validFunction1 = validator.isValidFunction(value1); + var validFunction2 = validator.isValidFunction(value2); + + if (validFunction1 && validFunction2) { + return validator.areSameFunction(value1, value2); + } else if (!validFunction1 && validFunction2) { + return false; + } else { + return true; + } +} + +function backgroundImage(property1, property2, validator) { + // The idea here is that 'more understandable' values override 'less understandable' values, but not vice versa + // Understandability: (none | url | inherit) > (same function) > (same value) + + // (none | url) + var image1 = property1.value[0][0]; + var image2 = property2.value[0][0]; + + if (image2 == 'none' || image2 == 'inherit' || validator.isValidUrl(image2)) + return true; + if (image1 == 'none' || image1 == 'inherit' || validator.isValidUrl(image1)) + return false; + + // Functions with the same name can override each other; same values can override each other + return sameFunctionOrValue(property1, property2, validator); +} + +function border(property1, property2, validator) { + return color(property1.components[2], property2.components[2], validator); +} + +// Use for color properties (color, background-color, border-color, etc.) +function color(property1, property2, validator) { + // The idea here is that 'more understandable' values override 'less understandable' values, but not vice versa + // Understandability: (hex | named) > (rgba | hsla) > (same function name) > anything else + // NOTE: at this point rgb and hsl are replaced by hex values by clean-css + + var color1 = property1.value[0][0]; + var color2 = property2.value[0][0]; + + if (!validator.colorOpacity && (validator.isValidRgbaColor(color1) || validator.isValidHslaColor(color1))) + return false; + if (!validator.colorOpacity && (validator.isValidRgbaColor(color2) || validator.isValidHslaColor(color2))) + return false; + + // (hex | named) + if (validator.isValidNamedColor(color2) || validator.isValidHexColor(color2)) + return true; + if (validator.isValidNamedColor(color1) || validator.isValidHexColor(color1)) + return false; + + // (rgba|hsla) + if (validator.isValidRgbaColor(color2) || validator.isValidHslaColor(color2)) + return true; + if (validator.isValidRgbaColor(color1) || validator.isValidHslaColor(color1)) + return false; + + // Functions with the same name can override each other; same values can override each other + return sameFunctionOrValue(property1, property2, validator); +} + +function twoOptionalFunctions(property1, property2, validator) { + var value1 = property1.value[0][0]; + var value2 = property2.value[0][0]; + + return !(validator.isValidFunction(value1) ^ validator.isValidFunction(value2)); +} + +function sameValue(property1, property2) { + var value1 = property1.value[0][0]; + var value2 = property2.value[0][0]; + + return value1 === value2; +} + +function sameFunctionOrValue(property1, property2, validator) { + var value1 = property1.value[0][0]; + var value2 = property2.value[0][0]; + + // Functions with the same name can override each other + if (validator.areSameFunction(value1, value2)) + return true; + + return value1 === value2; +} + +// Use for properties containing CSS units (margin-top, padding-left, etc.) +function unit(property1, property2, validator) { + // The idea here is that 'more understandable' values override 'less understandable' values, but not vice versa + // Understandability: (unit without functions) > (same functions | standard functions) > anything else + // NOTE: there is no point in having different vendor-specific functions override each other or standard functions, + // or having standard functions override vendor-specific functions, but standard functions can override each other + // NOTE: vendor-specific property values are not taken into consideration here at the moment + var value1 = property1.value[0][0]; + var value2 = property2.value[0][0]; + + if (validator.isValidAndCompatibleUnitWithoutFunction(value1) && !validator.isValidAndCompatibleUnitWithoutFunction(value2)) + return false; + + if (validator.isValidUnitWithoutFunction(value2)) + return true; + if (validator.isValidUnitWithoutFunction(value1)) + return false; + + // Standard non-vendor-prefixed functions can override each other + if (validator.isValidFunctionWithoutVendorPrefix(value2) && validator.isValidFunctionWithoutVendorPrefix(value1)) { + return true; + } + + // Functions with the same name can override each other; same values can override each other + return sameFunctionOrValue(property1, property2, validator); +} + +module.exports = { + always: always, + alwaysButIntoFunction: alwaysButIntoFunction, + backgroundImage: backgroundImage, + border: border, + color: color, + sameValue: sameValue, + sameFunctionOrValue: sameFunctionOrValue, + twoOptionalFunctions: twoOptionalFunctions, + unit: unit +}; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/clone.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/clone.js new file mode 100644 index 0000000..5be6441 --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/clone.js @@ -0,0 +1,26 @@ +var wrapSingle = require('./wrap-for-optimizing').single; + +function deep(property) { + var cloned = shallow(property); + for (var i = property.components.length - 1; i >= 0; i--) { + var component = shallow(property.components[i]); + component.value = property.components[i].value.slice(0); + cloned.components.unshift(component); + } + + cloned.dirty = true; + cloned.value = property.value.slice(0); + + return cloned; +} + +function shallow(property) { + var cloned = wrapSingle([[property.name, property.important, property.hack]]); + cloned.unused = false; + return cloned; +} + +module.exports = { + deep: deep, + shallow: shallow +}; diff --git a/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/compactable.js b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/compactable.js new file mode 100644 index 0000000..9abc2df --- /dev/null +++ b/node_modules/express-minify-html/node_modules/html-minifier/node_modules/clean-css/lib/properties/compactable.js @@ -0,0 +1,285 @@ +// Contains the interpretation of CSS properties, as used by the property optimizer + +var breakUp = require('./break-up'); +var canOverride = require('./can-override'); +var restore = require('./restore'); + +// Properties to process +// Extend this object in order to add support for more properties in the optimizer. +// +// Each key in this object represents a CSS property and should be an object. +// Such an object contains properties that describe how the represented CSS property should be handled. +// Possible options: +// +// * components: array (Only specify for shorthand properties.) +// Contains the names of the granular properties this shorthand compacts. +// +// * canOverride: function (Default is canOverride.sameValue - meaning that they'll only be merged if they have the same value.) +// Returns whether two tokens of this property can be merged with each other. +// This property has no meaning for shorthands. +// +// * defaultValue: string +// Specifies the default value of the property according to the CSS standard. +// For shorthand, this is used when every component is set to its default value, therefore it should be the shortest possible default value of all the components. +// +// * shortestValue: string +// Specifies the shortest possible value the property can possibly have. +// (Falls back to defaultValue if unspecified.) +// +// * breakUp: function (Only specify for shorthand properties.) +// Breaks the shorthand up to its components. +// +// * restore: function (Only specify for shorthand properties.) +// Puts the shorthand together from its components. +// +var compactable = { + 'color': { + canOverride: canOverride.color, + defaultValue: 'transparent', + shortestValue: 'red' + }, + 'background': { + components: [ + 'background-image', + 'background-position', + 'background-size', + 'background-repeat', + 'background-attachment', + 'background-origin', + 'background-clip', + 'background-color' + ], + breakUp: breakUp.multiplex(breakUp.background), + defaultValue: '0 0', + restore: restore.multiplex(restore.background), + shortestValue: '0', + shorthand: true + }, + 'background-clip': { + canOverride: canOverride.always, + defaultValue: 'border-box', + shortestValue: 'border-box' + }, + 'background-color': { + canOverride: canOverride.color, + defaultValue: 'transparent', + multiplexLastOnly: true, + nonMergeableValue: 'none', + shortestValue: 'red' + }, + 'background-image': { + canOverride: canOverride.backgroundImage, + defaultValue: 'none' + }, + 'background-origin': { + canOverride: canOverride.always, + defaultValue: 'padding-box', + shortestValue: 'border-box' + }, + 'background-repeat': { + canOverride: canOverride.always, + defaultValue: ['repeat'], + doubleValues: true + }, + 'background-position': { + canOverride: canOverride.alwaysButIntoFunction, + defaultValue: ['0', '0'], + doubleValues: true, + shortestValue: '0' + }, + 'background-size': { + canOverride: canOverride.alwaysButIntoFunction, + defaultValue: ['auto'], + doubleValues: true, + shortestValue: '0 0' + }, + 'background-attachment': { + canOverride: canOverride.always, + defaultValue: 'scroll' + }, + 'border': { + breakUp: breakUp.border, + canOverride: canOverride.border, + components: [ + 'border-width', + 'border-style', + 'border-color' + ], + defaultValue: 'none', + restore: restore.withoutDefaults, + shorthand: true + }, + 'border-color': { + canOverride: canOverride.color, + defaultValue: 'none', + shorthand: true + }, + 'border-style': { + canOverride: canOverride.always, + defaultValue: 'none', + shorthand: true + }, + 'border-width': { + canOverride: canOverride.unit, + defaultValue: 'medium', + shortestValue: '0', + shorthand: true + }, + 'list-style': { + components: [ + 'list-style-type', + 'list-style-position', + 'list-style-image' + ], + canOverride: canOverride.always, + breakUp: breakUp.listStyle, + restore: restore.withoutDefaults, + defaultValue: 'outside', // can't use 'disc' because that'd override default 'decimal' for
    + shortestValue: 'none', + shorthand: true + }, + 'list-style-type' : { + canOverride: canOverride.always, + defaultValue: '__hack', + // NOTE: we can't tell the real default value here, it's 'disc' for