mathjs 10.4.1 → 10.4.2
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +17 -0
- package/docs/datatypes/units.md +2 -2
- package/docs/reference/functions/format.md +3 -0
- package/examples/node_modules/.bin/acorn +12 -0
- package/examples/node_modules/.bin/acorn.cmd +17 -0
- package/examples/node_modules/.bin/acorn.ps1 +28 -0
- package/examples/node_modules/.bin/browserslist +12 -0
- package/examples/node_modules/.bin/browserslist.cmd +17 -0
- package/examples/node_modules/.bin/browserslist.ps1 +28 -0
- package/examples/node_modules/.bin/envinfo +2 -5
- package/examples/node_modules/.bin/envinfo.cmd +6 -6
- package/examples/node_modules/.bin/envinfo.ps1 +12 -2
- package/examples/node_modules/.bin/import-local-fixture +2 -5
- package/examples/node_modules/.bin/import-local-fixture.cmd +6 -6
- package/examples/node_modules/.bin/import-local-fixture.ps1 +12 -2
- package/examples/node_modules/.bin/node-which +2 -5
- package/examples/node_modules/.bin/node-which.cmd +6 -6
- package/examples/node_modules/.bin/node-which.ps1 +12 -2
- package/examples/node_modules/.bin/resolve +12 -0
- package/examples/node_modules/.bin/resolve.cmd +17 -0
- package/examples/node_modules/.bin/resolve.ps1 +28 -0
- package/examples/node_modules/.bin/terser +12 -0
- package/examples/node_modules/.bin/terser.cmd +17 -0
- package/examples/node_modules/.bin/terser.ps1 +28 -0
- package/examples/node_modules/.bin/webpack +12 -0
- package/examples/node_modules/.bin/webpack-cli +2 -5
- package/examples/node_modules/.bin/webpack-cli.cmd +6 -6
- package/examples/node_modules/.bin/webpack-cli.ps1 +12 -2
- package/examples/node_modules/.bin/webpack.cmd +17 -0
- package/examples/node_modules/.bin/webpack.ps1 +28 -0
- package/examples/node_modules/.package-lock.json +1407 -0
- package/examples/node_modules/@discoveryjs/json-ext/README.md +2 -1
- package/examples/node_modules/@discoveryjs/json-ext/dist/json-ext.js +147 -164
- package/examples/node_modules/@discoveryjs/json-ext/dist/json-ext.min.js +1 -1
- package/examples/node_modules/@discoveryjs/json-ext/dist/version.js +1 -0
- package/examples/node_modules/@discoveryjs/json-ext/index.d.ts +31 -0
- package/examples/node_modules/@discoveryjs/json-ext/package.json +53 -90
- package/examples/node_modules/@discoveryjs/json-ext/src/index.js +1 -1
- package/examples/node_modules/@discoveryjs/json-ext/src/parse-chunked.js +89 -44
- package/examples/node_modules/@discoveryjs/json-ext/src/stringify-info.js +11 -4
- package/examples/node_modules/@discoveryjs/json-ext/src/stringify-stream.js +17 -3
- package/examples/node_modules/@discoveryjs/json-ext/src/utils.js +6 -5
- package/examples/node_modules/@discoveryjs/json-ext/src/version.js +1 -0
- package/examples/node_modules/@types/eslint/LICENSE +21 -0
- package/examples/node_modules/@types/eslint/README.md +16 -0
- package/examples/node_modules/@types/eslint/helpers.d.ts +3 -0
- package/examples/node_modules/@types/eslint/index.d.ts +953 -0
- package/examples/node_modules/@types/eslint/package.json +65 -0
- package/examples/node_modules/@types/eslint/rules/best-practices.d.ts +931 -0
- package/examples/node_modules/@types/eslint/rules/deprecated.d.ts +267 -0
- package/examples/node_modules/@types/eslint/rules/ecmascript-6.d.ts +502 -0
- package/examples/node_modules/@types/eslint/rules/index.d.ts +21 -0
- package/examples/node_modules/@types/eslint/rules/node-commonjs.d.ts +133 -0
- package/examples/node_modules/@types/eslint/rules/possible-errors.d.ts +484 -0
- package/examples/node_modules/@types/eslint/rules/strict-mode.d.ts +11 -0
- package/examples/node_modules/@types/eslint/rules/stylistic-issues.d.ts +1893 -0
- package/examples/node_modules/@types/eslint/rules/variables.d.ts +187 -0
- package/examples/node_modules/@types/eslint/use-at-your-own-risk.d.ts +8 -0
- package/examples/node_modules/@types/eslint-scope/LICENSE +21 -0
- package/examples/node_modules/@types/eslint-scope/README.md +84 -0
- package/examples/node_modules/@types/eslint-scope/index.d.ts +64 -0
- package/examples/node_modules/@types/eslint-scope/package.json +28 -0
- package/examples/node_modules/@types/estree/LICENSE +21 -0
- package/examples/node_modules/@types/estree/README.md +16 -0
- package/examples/node_modules/@types/estree/flow.d.ts +174 -0
- package/examples/node_modules/@types/estree/index.d.ts +595 -0
- package/examples/node_modules/@types/estree/package.json +25 -0
- package/examples/node_modules/@types/json-schema/LICENSE +21 -0
- package/examples/node_modules/@types/json-schema/README.md +16 -0
- package/examples/node_modules/@types/json-schema/index.d.ts +758 -0
- package/examples/node_modules/@types/json-schema/package.json +40 -0
- package/examples/node_modules/@types/node/LICENSE +21 -0
- package/examples/node_modules/@types/node/README.md +16 -0
- package/examples/node_modules/@types/node/assert/strict.d.ts +8 -0
- package/examples/node_modules/@types/node/assert.d.ts +912 -0
- package/examples/node_modules/@types/node/async_hooks.d.ts +501 -0
- package/examples/node_modules/@types/node/buffer.d.ts +2232 -0
- package/examples/node_modules/@types/node/child_process.d.ts +1366 -0
- package/examples/node_modules/@types/node/cluster.d.ts +414 -0
- package/examples/node_modules/@types/node/console.d.ts +412 -0
- package/examples/node_modules/@types/node/constants.d.ts +18 -0
- package/examples/node_modules/@types/node/crypto.d.ts +3307 -0
- package/examples/node_modules/@types/node/dgram.d.ts +545 -0
- package/examples/node_modules/@types/node/diagnostics_channel.d.ts +134 -0
- package/examples/node_modules/@types/node/dns/promises.d.ts +370 -0
- package/examples/node_modules/@types/node/dns.d.ts +659 -0
- package/examples/node_modules/@types/node/domain.d.ts +169 -0
- package/examples/node_modules/@types/node/events.d.ts +651 -0
- package/examples/node_modules/@types/node/fs/promises.d.ts +1091 -0
- package/examples/node_modules/@types/node/fs.d.ts +3869 -0
- package/examples/node_modules/@types/node/globals.d.ts +284 -0
- package/examples/node_modules/@types/node/globals.global.d.ts +1 -0
- package/examples/node_modules/@types/node/http.d.ts +1396 -0
- package/examples/node_modules/@types/node/http2.d.ts +2100 -0
- package/examples/node_modules/@types/node/https.d.ts +391 -0
- package/examples/node_modules/@types/node/index.d.ts +129 -0
- package/examples/node_modules/@types/node/inspector.d.ts +2744 -0
- package/examples/node_modules/@types/node/module.d.ts +114 -0
- package/examples/node_modules/@types/node/net.d.ts +784 -0
- package/examples/node_modules/@types/node/os.d.ts +455 -0
- package/examples/node_modules/@types/node/package.json +220 -0
- package/examples/node_modules/@types/node/path.d.ts +180 -0
- package/examples/node_modules/@types/node/perf_hooks.d.ts +557 -0
- package/examples/node_modules/@types/node/process.d.ts +1481 -0
- package/examples/node_modules/@types/node/punycode.d.ts +117 -0
- package/examples/node_modules/@types/node/querystring.d.ts +131 -0
- package/examples/node_modules/@types/node/readline.d.ts +650 -0
- package/examples/node_modules/@types/node/repl.d.ts +424 -0
- package/examples/node_modules/@types/node/stream/consumers.d.ts +24 -0
- package/examples/node_modules/@types/node/stream/promises.d.ts +42 -0
- package/examples/node_modules/@types/node/stream/web.d.ts +330 -0
- package/examples/node_modules/@types/node/stream.d.ts +1249 -0
- package/examples/node_modules/@types/node/string_decoder.d.ts +67 -0
- package/examples/node_modules/@types/node/timers/promises.d.ts +68 -0
- package/examples/node_modules/@types/node/timers.d.ts +94 -0
- package/examples/node_modules/@types/node/tls.d.ts +1020 -0
- package/examples/node_modules/@types/node/trace_events.d.ts +161 -0
- package/examples/node_modules/@types/node/tty.d.ts +204 -0
- package/examples/node_modules/@types/node/url.d.ts +891 -0
- package/examples/node_modules/@types/node/util.d.ts +1594 -0
- package/examples/node_modules/@types/node/v8.d.ts +378 -0
- package/examples/node_modules/@types/node/vm.d.ts +507 -0
- package/examples/node_modules/@types/node/wasi.d.ts +158 -0
- package/examples/node_modules/@types/node/worker_threads.d.ts +649 -0
- package/examples/node_modules/@types/node/zlib.d.ts +517 -0
- package/examples/node_modules/@webassemblyjs/ast/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/ast/README.md +167 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/clone.js +3 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/definitions.js +668 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/index.js +7 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/node-helpers.js +84 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/node-path.js +137 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/nodes.js +925 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/signatures.js +199 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/transform/ast-module-to-module-context/index.js +378 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/transform/denormalize-type-references/index.js +76 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/transform/wast-identifier-to-index/index.js +216 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/traverse.js +96 -0
- package/examples/node_modules/{webpack-cli/lib/utils/__tests__/test-all-lock/pnpm-lock.yaml → @webassemblyjs/ast/esm/types/basic.js} +0 -0
- package/examples/node_modules/{webpack-cli/lib/utils/__tests__/test-all-lock/yarn.lock → @webassemblyjs/ast/esm/types/nodes.js} +0 -0
- package/examples/node_modules/{webpack-cli/lib/utils/__tests__/test-npm-and-pnpm/pnpm-lock.yaml → @webassemblyjs/ast/esm/types/traverse.js} +0 -0
- package/examples/node_modules/@webassemblyjs/ast/esm/utils.js +265 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/clone.js +10 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/definitions.js +668 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/index.js +127 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/node-helpers.js +107 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/node-path.js +144 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/nodes.js +1144 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/signatures.js +207 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/transform/ast-module-to-module-context/index.js +389 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/transform/denormalize-type-references/index.js +83 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/transform/wast-identifier-to-index/index.js +225 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/traverse.js +105 -0
- package/examples/node_modules/{webpack-cli/lib/utils/__tests__/test-npm-and-yarn/yarn.lock → @webassemblyjs/ast/lib/types/basic.js} +0 -0
- package/examples/node_modules/{webpack-cli/lib/utils/__tests__/test-pnpm-lock/pnpm-lock.yaml → @webassemblyjs/ast/lib/types/nodes.js} +0 -0
- package/examples/node_modules/{webpack-cli/lib/utils/__tests__/test-yarn-and-pnpm/pnpm-lock.yaml → @webassemblyjs/ast/lib/types/traverse.js} +0 -0
- package/examples/node_modules/@webassemblyjs/ast/lib/utils.js +306 -0
- package/examples/node_modules/@webassemblyjs/ast/package.json +32 -0
- package/examples/node_modules/@webassemblyjs/ast/scripts/generateNodeUtils.js +219 -0
- package/examples/node_modules/@webassemblyjs/ast/scripts/generateTypeDefinitions.js +47 -0
- package/examples/node_modules/@webassemblyjs/ast/scripts/util.js +38 -0
- package/examples/node_modules/@webassemblyjs/floating-point-hex-parser/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/floating-point-hex-parser/README.md +34 -0
- package/examples/node_modules/@webassemblyjs/floating-point-hex-parser/esm/index.js +42 -0
- package/examples/node_modules/@webassemblyjs/floating-point-hex-parser/lib/index.js +49 -0
- package/examples/node_modules/@webassemblyjs/floating-point-hex-parser/package.json +24 -0
- package/examples/node_modules/@webassemblyjs/helper-api-error/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/helper-api-error/esm/index.js +47 -0
- package/examples/node_modules/@webassemblyjs/helper-api-error/lib/index.js +62 -0
- package/examples/node_modules/@webassemblyjs/helper-api-error/package.json +18 -0
- package/examples/node_modules/@webassemblyjs/helper-buffer/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/helper-buffer/esm/compare.js +65 -0
- package/examples/node_modules/@webassemblyjs/helper-buffer/esm/index.js +67 -0
- package/examples/node_modules/@webassemblyjs/helper-buffer/lib/compare.js +73 -0
- package/examples/node_modules/@webassemblyjs/helper-buffer/lib/index.js +78 -0
- package/examples/node_modules/@webassemblyjs/helper-buffer/package.json +24 -0
- package/examples/node_modules/@webassemblyjs/helper-numbers/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/helper-numbers/esm/index.js +91 -0
- package/examples/node_modules/@webassemblyjs/helper-numbers/lib/index.js +116 -0
- package/examples/node_modules/@webassemblyjs/helper-numbers/package.json +25 -0
- package/examples/node_modules/@webassemblyjs/helper-numbers/src/index.js +105 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-bytecode/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-bytecode/esm/index.js +391 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-bytecode/esm/section.js +31 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-bytecode/lib/index.js +406 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-bytecode/lib/section.js +38 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-bytecode/package.json +20 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-section/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-section/esm/create.js +107 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-section/esm/index.js +3 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-section/esm/remove.js +36 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-section/esm/resize.js +78 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-section/lib/create.js +121 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-section/lib/index.js +35 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-section/lib/remove.js +45 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-section/lib/resize.js +90 -0
- package/examples/node_modules/@webassemblyjs/helper-wasm-section/package.json +29 -0
- package/examples/node_modules/@webassemblyjs/ieee754/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/ieee754/esm/index.js +33 -0
- package/examples/node_modules/@webassemblyjs/ieee754/lib/index.js +52 -0
- package/examples/node_modules/@webassemblyjs/ieee754/package.json +23 -0
- package/examples/node_modules/@webassemblyjs/ieee754/src/index.js +47 -0
- package/examples/node_modules/@webassemblyjs/leb128/LICENSE.txt +194 -0
- package/examples/node_modules/@webassemblyjs/leb128/esm/bits.js +145 -0
- package/examples/node_modules/@webassemblyjs/leb128/esm/bufs.js +218 -0
- package/examples/node_modules/@webassemblyjs/leb128/esm/index.js +34 -0
- package/examples/node_modules/@webassemblyjs/leb128/esm/leb.js +316 -0
- package/examples/node_modules/@webassemblyjs/leb128/lib/bits.js +156 -0
- package/examples/node_modules/@webassemblyjs/leb128/lib/bufs.js +236 -0
- package/examples/node_modules/@webassemblyjs/leb128/lib/index.js +59 -0
- package/examples/node_modules/@webassemblyjs/leb128/lib/leb.js +332 -0
- package/examples/node_modules/@webassemblyjs/leb128/package.json +23 -0
- package/examples/node_modules/@webassemblyjs/utf8/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/utf8/esm/decoder.js +95 -0
- package/examples/node_modules/@webassemblyjs/utf8/esm/encoder.js +46 -0
- package/examples/node_modules/@webassemblyjs/utf8/esm/index.js +2 -0
- package/examples/node_modules/@webassemblyjs/utf8/lib/decoder.js +102 -0
- package/examples/node_modules/@webassemblyjs/utf8/lib/encoder.js +53 -0
- package/examples/node_modules/@webassemblyjs/utf8/lib/index.js +21 -0
- package/examples/node_modules/@webassemblyjs/utf8/package.json +20 -0
- package/examples/node_modules/@webassemblyjs/utf8/src/decoder.js +86 -0
- package/examples/node_modules/@webassemblyjs/utf8/src/encoder.js +44 -0
- package/examples/node_modules/@webassemblyjs/utf8/src/index.js +4 -0
- package/examples/node_modules/@webassemblyjs/utf8/test/index.js +13 -0
- package/examples/node_modules/@webassemblyjs/wasm-edit/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/wasm-edit/README.md +86 -0
- package/examples/node_modules/@webassemblyjs/wasm-edit/esm/apply.js +299 -0
- package/examples/node_modules/@webassemblyjs/wasm-edit/esm/index.js +114 -0
- package/examples/node_modules/@webassemblyjs/wasm-edit/lib/apply.js +311 -0
- package/examples/node_modules/@webassemblyjs/wasm-edit/lib/index.js +133 -0
- package/examples/node_modules/@webassemblyjs/wasm-edit/package.json +33 -0
- package/examples/node_modules/@webassemblyjs/wasm-gen/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/wasm-gen/esm/encoder/index.js +301 -0
- package/examples/node_modules/@webassemblyjs/wasm-gen/esm/index.js +51 -0
- package/examples/node_modules/@webassemblyjs/wasm-gen/lib/encoder/index.js +357 -0
- package/examples/node_modules/@webassemblyjs/wasm-gen/lib/index.js +64 -0
- package/examples/node_modules/@webassemblyjs/wasm-gen/package.json +27 -0
- package/examples/node_modules/@webassemblyjs/wasm-opt/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/wasm-opt/esm/index.js +41 -0
- package/examples/node_modules/@webassemblyjs/wasm-opt/esm/leb128.js +47 -0
- package/examples/node_modules/@webassemblyjs/wasm-opt/lib/index.js +50 -0
- package/examples/node_modules/@webassemblyjs/wasm-opt/lib/leb128.js +56 -0
- package/examples/node_modules/@webassemblyjs/wasm-opt/package.json +26 -0
- package/examples/node_modules/@webassemblyjs/wasm-parser/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/wasm-parser/README.md +28 -0
- package/examples/node_modules/@webassemblyjs/wasm-parser/esm/decoder.js +1776 -0
- package/examples/node_modules/@webassemblyjs/wasm-parser/esm/index.js +247 -0
- package/examples/node_modules/{webpack-cli/lib/utils/__tests__/test-yarn-and-pnpm/yarn.lock → @webassemblyjs/wasm-parser/esm/types/decoder.js} +0 -0
- package/examples/node_modules/@webassemblyjs/wasm-parser/lib/decoder.js +1792 -0
- package/examples/node_modules/@webassemblyjs/wasm-parser/lib/index.js +257 -0
- package/examples/node_modules/{webpack-cli/lib/utils/__tests__/test-yarn-lock/yarn.lock → @webassemblyjs/wasm-parser/lib/types/decoder.js} +0 -0
- package/examples/node_modules/@webassemblyjs/wasm-parser/package.json +44 -0
- package/examples/node_modules/@webassemblyjs/wast-printer/LICENSE +21 -0
- package/examples/node_modules/@webassemblyjs/wast-printer/README.md +17 -0
- package/examples/node_modules/@webassemblyjs/wast-printer/esm/index.js +904 -0
- package/examples/node_modules/@webassemblyjs/wast-printer/lib/index.js +915 -0
- package/examples/node_modules/@webassemblyjs/wast-printer/package.json +36 -0
- package/examples/node_modules/@webpack-cli/configtest/README.md +27 -0
- package/examples/node_modules/@webpack-cli/configtest/lib/index.js +18 -25
- package/examples/node_modules/@webpack-cli/configtest/package.json +14 -36
- package/examples/node_modules/@webpack-cli/info/README.md +6 -5
- package/examples/node_modules/@webpack-cli/info/lib/index.js +57 -38
- package/examples/node_modules/@webpack-cli/info/package.json +19 -37
- package/examples/node_modules/@webpack-cli/serve/README.md +4 -0
- package/examples/node_modules/@webpack-cli/serve/lib/index.js +214 -41
- package/examples/node_modules/@webpack-cli/serve/lib/types.d.ts +62 -19
- package/examples/node_modules/@webpack-cli/serve/lib/types.js +21 -2
- package/examples/node_modules/@webpack-cli/serve/package.json +15 -36
- package/examples/node_modules/@xtuc/ieee754/LICENSE +28 -0
- package/examples/node_modules/@xtuc/ieee754/README.md +51 -0
- package/examples/node_modules/@xtuc/ieee754/dist/.gitkeep +0 -0
- package/examples/node_modules/@xtuc/ieee754/dist/index.cjs.js +96 -0
- package/examples/node_modules/@xtuc/ieee754/index.js +84 -0
- package/examples/node_modules/@xtuc/ieee754/package.json +42 -0
- package/examples/node_modules/@xtuc/long/LICENSE +202 -0
- package/examples/node_modules/@xtuc/long/README.md +257 -0
- package/examples/node_modules/@xtuc/long/dist/long.js +2 -0
- package/examples/node_modules/@xtuc/long/dist/long.js.map +1 -0
- package/examples/node_modules/@xtuc/long/index.d.ts +429 -0
- package/examples/node_modules/@xtuc/long/index.js +1 -0
- package/examples/node_modules/@xtuc/long/package.json +36 -0
- package/examples/node_modules/@xtuc/long/src/long.js +1405 -0
- package/examples/node_modules/acorn/CHANGELOG.md +788 -0
- package/examples/node_modules/acorn/LICENSE +21 -0
- package/examples/node_modules/acorn/README.md +280 -0
- package/examples/node_modules/acorn/bin/acorn +4 -0
- package/examples/node_modules/acorn/dist/acorn.d.ts +214 -0
- package/examples/node_modules/acorn/dist/acorn.js +5619 -0
- package/examples/node_modules/acorn/dist/acorn.mjs +5588 -0
- package/examples/node_modules/acorn/dist/acorn.mjs.d.ts +2 -0
- package/examples/node_modules/acorn/dist/bin.js +91 -0
- package/examples/node_modules/acorn/package.json +46 -0
- package/examples/node_modules/acorn-import-assertions/README.md +15 -0
- package/examples/node_modules/acorn-import-assertions/lib/index.js +287 -0
- package/examples/node_modules/acorn-import-assertions/lib/index.mjs +242 -0
- package/examples/node_modules/acorn-import-assertions/package.json +49 -0
- package/examples/node_modules/acorn-import-assertions/src/index.js +242 -0
- package/examples/node_modules/ajv/.tonic_example.js +20 -0
- package/examples/node_modules/ajv/LICENSE +22 -0
- package/examples/node_modules/ajv/README.md +1497 -0
- package/examples/node_modules/ajv/dist/ajv.bundle.js +7189 -0
- package/examples/node_modules/ajv/dist/ajv.min.js +3 -0
- package/examples/node_modules/ajv/dist/ajv.min.js.map +1 -0
- package/examples/node_modules/ajv/lib/ajv.d.ts +397 -0
- package/examples/node_modules/ajv/lib/ajv.js +506 -0
- package/examples/node_modules/ajv/lib/cache.js +26 -0
- package/examples/node_modules/ajv/lib/compile/async.js +90 -0
- package/examples/node_modules/ajv/lib/compile/equal.js +5 -0
- package/examples/node_modules/ajv/lib/compile/error_classes.js +34 -0
- package/examples/node_modules/ajv/lib/compile/formats.js +142 -0
- package/examples/node_modules/ajv/lib/compile/index.js +387 -0
- package/examples/node_modules/ajv/lib/compile/resolve.js +270 -0
- package/examples/node_modules/ajv/lib/compile/rules.js +66 -0
- package/examples/node_modules/ajv/lib/compile/schema_obj.js +9 -0
- package/examples/node_modules/ajv/lib/compile/ucs2length.js +20 -0
- package/examples/node_modules/ajv/lib/compile/util.js +239 -0
- package/examples/node_modules/ajv/lib/data.js +49 -0
- package/examples/node_modules/ajv/lib/definition_schema.js +37 -0
- package/examples/node_modules/ajv/lib/dot/_limit.jst +113 -0
- package/examples/node_modules/ajv/lib/dot/_limitItems.jst +12 -0
- package/examples/node_modules/ajv/lib/dot/_limitLength.jst +12 -0
- package/examples/node_modules/ajv/lib/dot/_limitProperties.jst +12 -0
- package/examples/node_modules/ajv/lib/dot/allOf.jst +32 -0
- package/examples/node_modules/ajv/lib/dot/anyOf.jst +46 -0
- package/examples/node_modules/ajv/lib/dot/coerce.def +51 -0
- package/examples/node_modules/ajv/lib/dot/comment.jst +9 -0
- package/examples/node_modules/ajv/lib/dot/const.jst +11 -0
- package/examples/node_modules/ajv/lib/dot/contains.jst +55 -0
- package/examples/node_modules/ajv/lib/dot/custom.jst +191 -0
- package/examples/node_modules/ajv/lib/dot/defaults.def +47 -0
- package/examples/node_modules/ajv/lib/dot/definitions.def +203 -0
- package/examples/node_modules/ajv/lib/dot/dependencies.jst +79 -0
- package/examples/node_modules/ajv/lib/dot/enum.jst +30 -0
- package/examples/node_modules/ajv/lib/dot/errors.def +194 -0
- package/examples/node_modules/ajv/lib/dot/format.jst +106 -0
- package/examples/node_modules/ajv/lib/dot/if.jst +73 -0
- package/examples/node_modules/ajv/lib/dot/items.jst +98 -0
- package/examples/node_modules/ajv/lib/dot/missing.def +39 -0
- package/examples/node_modules/ajv/lib/dot/multipleOf.jst +22 -0
- package/examples/node_modules/ajv/lib/dot/not.jst +43 -0
- package/examples/node_modules/ajv/lib/dot/oneOf.jst +54 -0
- package/examples/node_modules/ajv/lib/dot/pattern.jst +14 -0
- package/examples/node_modules/ajv/lib/dot/properties.jst +245 -0
- package/examples/node_modules/ajv/lib/dot/propertyNames.jst +52 -0
- package/examples/node_modules/ajv/lib/dot/ref.jst +85 -0
- package/examples/node_modules/ajv/lib/dot/required.jst +108 -0
- package/examples/node_modules/ajv/lib/dot/uniqueItems.jst +62 -0
- package/examples/node_modules/ajv/lib/dot/validate.jst +276 -0
- package/examples/node_modules/ajv/lib/dotjs/README.md +3 -0
- package/examples/node_modules/ajv/lib/dotjs/_limit.js +163 -0
- package/examples/node_modules/ajv/lib/dotjs/_limitItems.js +80 -0
- package/examples/node_modules/ajv/lib/dotjs/_limitLength.js +85 -0
- package/examples/node_modules/ajv/lib/dotjs/_limitProperties.js +80 -0
- package/examples/node_modules/ajv/lib/dotjs/allOf.js +42 -0
- package/examples/node_modules/ajv/lib/dotjs/anyOf.js +73 -0
- package/examples/node_modules/ajv/lib/dotjs/comment.js +14 -0
- package/examples/node_modules/ajv/lib/dotjs/const.js +56 -0
- package/examples/node_modules/ajv/lib/dotjs/contains.js +81 -0
- package/examples/node_modules/ajv/lib/dotjs/custom.js +228 -0
- package/examples/node_modules/ajv/lib/dotjs/dependencies.js +168 -0
- package/examples/node_modules/ajv/lib/dotjs/enum.js +66 -0
- package/examples/node_modules/ajv/lib/dotjs/format.js +150 -0
- package/examples/node_modules/ajv/lib/dotjs/if.js +103 -0
- package/examples/node_modules/ajv/lib/dotjs/index.js +33 -0
- package/examples/node_modules/ajv/lib/dotjs/items.js +140 -0
- package/examples/node_modules/ajv/lib/dotjs/multipleOf.js +80 -0
- package/examples/node_modules/ajv/lib/dotjs/not.js +84 -0
- package/examples/node_modules/ajv/lib/dotjs/oneOf.js +73 -0
- package/examples/node_modules/ajv/lib/dotjs/pattern.js +75 -0
- package/examples/node_modules/ajv/lib/dotjs/properties.js +335 -0
- package/examples/node_modules/ajv/lib/dotjs/propertyNames.js +81 -0
- package/examples/node_modules/ajv/lib/dotjs/ref.js +124 -0
- package/examples/node_modules/ajv/lib/dotjs/required.js +270 -0
- package/examples/node_modules/ajv/lib/dotjs/uniqueItems.js +86 -0
- package/examples/node_modules/ajv/lib/dotjs/validate.js +482 -0
- package/examples/node_modules/ajv/lib/keyword.js +146 -0
- package/examples/node_modules/ajv/lib/refs/data.json +17 -0
- package/examples/node_modules/ajv/lib/refs/json-schema-draft-04.json +149 -0
- package/examples/node_modules/ajv/lib/refs/json-schema-draft-06.json +154 -0
- package/examples/node_modules/ajv/lib/refs/json-schema-draft-07.json +168 -0
- package/examples/node_modules/ajv/lib/refs/json-schema-secure.json +94 -0
- package/examples/node_modules/ajv/package.json +106 -0
- package/examples/node_modules/ajv/scripts/.eslintrc.yml +3 -0
- package/examples/node_modules/ajv/scripts/bundle.js +61 -0
- package/examples/node_modules/ajv/scripts/compile-dots.js +73 -0
- package/examples/node_modules/ajv/scripts/info +10 -0
- package/examples/node_modules/ajv/scripts/prepare-tests +12 -0
- package/examples/node_modules/ajv/scripts/publish-built-version +32 -0
- package/examples/node_modules/ajv/scripts/travis-gh-pages +23 -0
- package/examples/node_modules/ajv-keywords/LICENSE +21 -0
- package/examples/node_modules/ajv-keywords/README.md +836 -0
- package/examples/node_modules/ajv-keywords/ajv-keywords.d.ts +7 -0
- package/examples/node_modules/ajv-keywords/index.js +35 -0
- package/examples/node_modules/ajv-keywords/keywords/_formatLimit.js +101 -0
- package/examples/node_modules/ajv-keywords/keywords/_util.js +15 -0
- package/examples/node_modules/ajv-keywords/keywords/allRequired.js +18 -0
- package/examples/node_modules/ajv-keywords/keywords/anyRequired.js +24 -0
- package/examples/node_modules/ajv-keywords/keywords/deepProperties.js +54 -0
- package/examples/node_modules/ajv-keywords/keywords/deepRequired.js +57 -0
- package/examples/node_modules/ajv-keywords/keywords/dot/_formatLimit.jst +116 -0
- package/examples/node_modules/ajv-keywords/keywords/dot/patternRequired.jst +33 -0
- package/examples/node_modules/ajv-keywords/keywords/dot/switch.jst +71 -0
- package/examples/node_modules/ajv-keywords/keywords/dotjs/README.md +3 -0
- package/examples/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js +178 -0
- package/examples/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js +58 -0
- package/examples/node_modules/ajv-keywords/keywords/dotjs/switch.js +129 -0
- package/examples/node_modules/ajv-keywords/keywords/dynamicDefaults.js +72 -0
- package/examples/node_modules/ajv-keywords/keywords/formatMaximum.js +3 -0
- package/examples/node_modules/ajv-keywords/keywords/formatMinimum.js +3 -0
- package/examples/node_modules/ajv-keywords/keywords/index.js +22 -0
- package/examples/node_modules/ajv-keywords/keywords/instanceof.js +58 -0
- package/examples/node_modules/ajv-keywords/keywords/oneRequired.js +24 -0
- package/examples/node_modules/ajv-keywords/keywords/patternRequired.js +21 -0
- package/examples/node_modules/ajv-keywords/keywords/prohibited.js +24 -0
- package/examples/node_modules/ajv-keywords/keywords/range.js +36 -0
- package/examples/node_modules/ajv-keywords/keywords/regexp.js +36 -0
- package/examples/node_modules/ajv-keywords/keywords/select.js +79 -0
- package/examples/node_modules/ajv-keywords/keywords/switch.js +38 -0
- package/examples/node_modules/ajv-keywords/keywords/transform.js +80 -0
- package/examples/node_modules/ajv-keywords/keywords/typeof.js +32 -0
- package/examples/node_modules/ajv-keywords/keywords/uniqueItemProperties.js +59 -0
- package/examples/node_modules/ajv-keywords/package.json +53 -0
- package/examples/node_modules/browserslist/LICENSE +20 -0
- package/examples/node_modules/browserslist/README.md +66 -0
- package/examples/node_modules/browserslist/browser.js +50 -0
- package/examples/node_modules/browserslist/cli.js +152 -0
- package/examples/node_modules/browserslist/error.d.ts +7 -0
- package/examples/node_modules/browserslist/error.js +12 -0
- package/examples/node_modules/browserslist/index.d.ts +178 -0
- package/examples/node_modules/browserslist/index.js +1235 -0
- package/examples/node_modules/browserslist/node.js +393 -0
- package/examples/node_modules/browserslist/package.json +41 -0
- package/examples/node_modules/browserslist/update-db.js +317 -0
- package/examples/node_modules/buffer-from/LICENSE +21 -0
- package/examples/node_modules/buffer-from/index.js +72 -0
- package/examples/node_modules/buffer-from/package.json +19 -0
- package/examples/node_modules/buffer-from/readme.md +69 -0
- package/examples/node_modules/caniuse-lite/LICENSE +395 -0
- package/examples/node_modules/caniuse-lite/README.md +92 -0
- package/examples/node_modules/caniuse-lite/data/agents.js +1 -0
- package/examples/node_modules/caniuse-lite/data/browserVersions.js +1 -0
- package/examples/node_modules/caniuse-lite/data/browsers.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/aac.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/abortcontroller.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/ac3-ec3.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/accelerometer.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/addeventlistener.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/alternate-stylesheet.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/ambient-light.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/apng.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/array-find-index.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/array-find.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/array-flat.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/array-includes.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/arrow-functions.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/asmjs.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/async-clipboard.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/async-functions.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/atob-btoa.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/audio-api.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/audio.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/audiotracks.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/autofocus.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/auxclick.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/av1.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/avif.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/background-attachment.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/background-clip-text.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/background-img-opts.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/background-position-x-y.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/background-repeat-round-space.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/background-sync.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/battery-status.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/beacon.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/beforeafterprint.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/bigint.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/blobbuilder.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/bloburls.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/border-image.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/border-radius.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/broadcastchannel.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/brotli.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/calc.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/canvas-blending.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/canvas-text.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/canvas.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/ch-unit.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/chacha20-poly1305.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/channel-messaging.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/childnode-remove.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/classlist.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/clipboard.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/colr-v1.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/colr.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/comparedocumentposition.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/console-basic.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/console-time.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/const.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/constraint-validation.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/contenteditable.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/cookie-store-api.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/cors.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/createimagebitmap.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/credential-management.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/cryptography.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-all.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-animation.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-any-link.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-appearance.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-at-counter-style.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-autofill.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-backdrop-filter.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-background-offsets.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-boxshadow.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-canvas.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-caret-color.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-cascade-layers.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-case-insensitive.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-clip-path.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-color-adjust.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-color-function.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-conic-gradients.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-container-queries.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-containment.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-content-visibility.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-counters.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-crisp-edges.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-cross-fade.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-default-pseudo.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-deviceadaptation.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-dir-pseudo.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-display-contents.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-element-function.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-env-function.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-exclusions.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-featurequeries.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-file-selector-button.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-filter-function.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-filters.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-first-letter.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-first-line.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-fixed.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-focus-visible.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-focus-within.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-font-palette.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-font-stretch.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-gencontent.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-gradients.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-grid.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-has.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-hyphenate.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-hyphens.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-image-orientation.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-image-set.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-in-out-of-range.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-initial-letter.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-initial-value.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-lch-lab.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-letter-spacing.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-line-clamp.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-logical-props.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-marker-pseudo.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-masks.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-matches-pseudo.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-math-functions.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-media-interaction.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-media-resolution.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-media-scripting.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-mediaqueries.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-mixblendmode.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-motion-paths.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-namespaces.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-nesting.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-not-sel-list.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-nth-child-of.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-opacity.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-optional-pseudo.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-overflow-anchor.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-overflow-overlay.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-overflow.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-page-break.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-paged-media.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-paint-api.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-placeholder-shown.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-placeholder.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-read-only-write.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-rebeccapurple.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-reflections.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-regions.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-repeating-gradients.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-resize.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-revert-value.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-rrggbbaa.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-scroll-behavior.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-scroll-timeline.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-scrollbar.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-sel2.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-sel3.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-selection.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-shapes.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-snappoints.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-sticky.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-subgrid.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-supports-api.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-table.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-text-align-last.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-text-indent.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-text-justify.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-text-orientation.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-text-spacing.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-textshadow.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-touch-action-2.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-touch-action.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-transitions.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-unicode-bidi.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-unset-value.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-variables.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-when-else.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-widows-orphans.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-width-stretch.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-writing-mode.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css-zoom.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css3-attr.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css3-boxsizing.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css3-colors.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css3-cursors-grab.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css3-cursors-newer.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css3-cursors.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/css3-tabsize.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/currentcolor.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/custom-elements.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/custom-elementsv1.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/customevent.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/datalist.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/dataset.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/datauri.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/decorators.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/details.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/deviceorientation.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/devicepixelratio.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/dialog.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/dispatchevent.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/dnssec.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/do-not-track.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/document-currentscript.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/document-execcommand.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/document-policy.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/document-scrollingelement.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/documenthead.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/dom-manip-convenience.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/dom-range.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/domcontentloaded.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/dommatrix.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/download.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/dragndrop.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/element-closest.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/element-from-point.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/element-scroll-methods.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/eme.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/eot.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/es5.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/es6-class.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/es6-generators.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/es6-module.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/es6-number.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/es6-string-includes.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/es6.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/eventsource.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/extended-system-fonts.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/feature-policy.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/fetch.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/fieldset-disabled.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/fileapi.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/filereader.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/filereadersync.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/filesystem.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/flac.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/flexbox-gap.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/flexbox.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/flow-root.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/focusin-focusout-events.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/font-family-system-ui.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/font-feature.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/font-kerning.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/font-loading.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/font-metrics-overrides.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/font-size-adjust.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/font-smooth.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/font-unicode-range.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/font-variant-alternates.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/font-variant-east-asian.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/font-variant-numeric.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/fontface.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/form-attribute.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/form-submit-attributes.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/form-validation.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/forms.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/fullscreen.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/gamepad.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/geolocation.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/getboundingclientrect.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/getcomputedstyle.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/getelementsbyclassname.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/getrandomvalues.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/gyroscope.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/hardwareconcurrency.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/hashchange.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/heif.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/hevc.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/hidden.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/high-resolution-time.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/history.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/html-media-capture.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/html5semantic.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/http-live-streaming.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/http2.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/http3.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/iframe-sandbox.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/iframe-seamless.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/iframe-srcdoc.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/imagecapture.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/ime.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/import-maps.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/imports.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/indexeddb.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/indexeddb2.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/inline-block.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/innertext.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-color.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-datetime.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-email-tel-url.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-event.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-file-accept.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-file-directory.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-file-multiple.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-inputmode.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-minlength.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-number.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-pattern.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-placeholder.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-range.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-search.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/input-selection.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/insert-adjacent.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/insertadjacenthtml.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/internationalization.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/intersectionobserver.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/intl-pluralrules.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/intrinsic-width.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/jpeg2000.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/jpegxl.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/jpegxr.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/json.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/keyboardevent-code.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/keyboardevent-key.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/keyboardevent-location.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/keyboardevent-which.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/lazyload.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/let.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/link-icon-png.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/link-icon-svg.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/link-rel-preconnect.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/link-rel-prefetch.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/link-rel-preload.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/link-rel-prerender.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/loading-lazy-attr.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/localecompare.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/magnetometer.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/matchesselector.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/matchmedia.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/mathml.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/maxlength.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/media-attribute.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/media-fragments.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/media-session-api.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/mediarecorder.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/mediasource.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/menu.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/meta-theme-color.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/meter.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/midi.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/minmaxwh.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/mp3.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/mpeg-dash.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/mpeg4.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/multibackgrounds.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/multicolumn.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/mutation-events.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/mutationobserver.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/namevalue-storage.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/native-filesystem-api.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/nav-timing.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/navigator-language.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/netinfo.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/notifications.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/object-entries.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/object-fit.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/object-observe.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/object-values.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/objectrtc.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/offline-apps.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/offscreencanvas.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/ogg-vorbis.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/ogv.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/ol-reversed.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/once-event-listener.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/online-status.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/opus.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/orientation-sensor.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/outline.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/pad-start-end.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/page-transition-events.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/pagevisibility.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/passive-event-listener.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/passwordrules.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/path2d.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/payment-request.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/pdf-viewer.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/permissions-api.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/permissions-policy.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/picture-in-picture.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/picture.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/ping.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/png-alpha.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/pointer-events.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/pointer.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/pointerlock.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/portals.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/prefers-color-scheme.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/private-class-fields.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/progress.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/promise-finally.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/promises.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/proximity.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/proxy.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/public-class-fields.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/publickeypinning.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/push-api.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/queryselector.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/readonly-attr.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/referrer-policy.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/registerprotocolhandler.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/rel-noopener.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/rel-noreferrer.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/rellist.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/rem.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/requestanimationframe.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/requestidlecallback.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/resizeobserver.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/resource-timing.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/rest-parameters.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/rtcpeerconnection.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/ruby.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/run-in.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/screen-orientation.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/script-async.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/script-defer.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/scrollintoview.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/sdch.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/selection-api.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/server-timing.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/serviceworkers.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/setimmediate.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/sha-2.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/shadowdom.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/shadowdomv1.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/sharedarraybuffer.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/sharedworkers.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/sni.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/spdy.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/speech-recognition.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/speech-synthesis.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/spellcheck-attribute.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/sql-storage.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/srcset.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/stream.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/streams.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/stricttransportsecurity.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/style-scoped.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/subresource-integrity.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/svg-css.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/svg-filters.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/svg-fonts.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/svg-fragment.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/svg-html.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/svg-html5.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/svg-img.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/svg-smil.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/svg.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/sxg.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/tabindex-attr.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/template-literals.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/template.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/temporal.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/testfeat.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/text-decoration.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/text-emphasis.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/text-overflow.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/text-size-adjust.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/text-stroke.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/text-underline-offset.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/textcontent.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/textencoder.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/tls1-1.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/tls1-2.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/tls1-3.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/token-binding.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/touch.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/transforms2d.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/transforms3d.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/trusted-types.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/ttf.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/typedarrays.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/u2f.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/unhandledrejection.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/url.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/urlsearchparams.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/use-strict.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/user-select-none.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/user-timing.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/variable-fonts.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/vector-effect.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/vibration.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/video.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/videotracks.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/viewport-unit-variants.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/viewport-units.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/wai-aria.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/wake-lock.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/wasm.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/wav.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/wbr-element.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/web-animation.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/web-app-manifest.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/web-bluetooth.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/web-serial.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/web-share.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webauthn.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webgl.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webgl2.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webgpu.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webhid.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webkit-user-drag.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webm.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webnfc.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webp.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/websockets.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webusb.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webvr.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webvtt.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webworkers.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/webxr.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/will-change.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/woff.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/woff2.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/word-break.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/wordwrap.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/x-doc-messaging.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/x-frame-options.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/xhr2.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/xhtml.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/xhtmlsmil.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features/xml-serializer.js +1 -0
- package/examples/node_modules/caniuse-lite/data/features.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AD.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AF.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AI.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AL.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AO.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AS.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AT.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AU.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AW.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AX.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/AZ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BB.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BD.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BF.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BH.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BI.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BJ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BN.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BO.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BS.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BT.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BW.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BY.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/BZ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CD.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CF.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CH.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CI.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CK.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CL.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CN.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CO.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CU.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CV.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CX.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CY.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/CZ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/DE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/DJ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/DK.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/DM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/DO.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/DZ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/EC.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/EE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/EG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/ER.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/ES.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/ET.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/FI.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/FJ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/FK.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/FM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/FO.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/FR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GB.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GD.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GF.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GH.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GI.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GL.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GN.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GP.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GQ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GT.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GU.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GW.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/GY.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/HK.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/HN.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/HR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/HT.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/HU.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/ID.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/IE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/IL.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/IM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/IN.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/IQ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/IR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/IS.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/IT.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/JE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/JM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/JO.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/JP.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/KE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/KG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/KH.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/KI.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/KM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/KN.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/KP.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/KR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/KW.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/KY.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/KZ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/LA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/LB.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/LC.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/LI.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/LK.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/LR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/LS.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/LT.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/LU.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/LV.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/LY.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MC.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MD.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/ME.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MH.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MK.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/ML.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MN.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MO.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MP.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MQ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MS.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MT.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MU.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MV.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MW.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MX.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MY.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/MZ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NC.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NF.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NI.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NL.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NO.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NP.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NU.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/NZ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/OM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PF.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PH.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PK.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PL.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PN.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PS.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PT.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PW.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/PY.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/QA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/RE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/RO.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/RS.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/RU.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/RW.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SB.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SC.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SD.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SH.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SI.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SK.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SL.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SN.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SO.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/ST.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SV.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SY.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/SZ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TC.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TD.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TH.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TJ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TK.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TL.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TN.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TO.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TR.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TT.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TV.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TW.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/TZ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/UA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/UG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/US.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/UY.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/UZ.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/VA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/VC.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/VE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/VG.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/VI.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/VN.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/VU.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/WF.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/WS.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/YE.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/YT.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/ZA.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/ZM.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/ZW.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/alt-af.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/alt-an.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/alt-as.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/alt-eu.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/alt-na.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/alt-oc.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/alt-sa.js +1 -0
- package/examples/node_modules/caniuse-lite/data/regions/alt-ww.js +1 -0
- package/examples/node_modules/caniuse-lite/dist/lib/statuses.js +9 -0
- package/examples/node_modules/caniuse-lite/dist/lib/supported.js +9 -0
- package/examples/node_modules/caniuse-lite/dist/unpacker/agents.js +47 -0
- package/examples/node_modules/caniuse-lite/dist/unpacker/browserVersions.js +1 -0
- package/examples/node_modules/caniuse-lite/dist/unpacker/browsers.js +1 -0
- package/examples/node_modules/caniuse-lite/dist/unpacker/feature.js +48 -0
- package/examples/node_modules/caniuse-lite/dist/unpacker/features.js +6 -0
- package/examples/node_modules/caniuse-lite/dist/unpacker/index.js +4 -0
- package/examples/node_modules/caniuse-lite/dist/unpacker/region.js +22 -0
- package/examples/node_modules/caniuse-lite/package.json +34 -0
- package/examples/node_modules/chrome-trace-event/CHANGES.md +26 -0
- package/examples/node_modules/chrome-trace-event/LICENSE.txt +23 -0
- package/examples/node_modules/chrome-trace-event/README.md +31 -0
- package/examples/node_modules/chrome-trace-event/dist/trace-event.d.ts +52 -0
- package/examples/node_modules/chrome-trace-event/dist/trace-event.js +170 -0
- package/examples/node_modules/chrome-trace-event/dist/trace-event.js.map +1 -0
- package/examples/node_modules/chrome-trace-event/package.json +38 -0
- package/examples/node_modules/clone-deep/package.json +17 -48
- package/examples/node_modules/colorette/README.md +54 -22
- package/examples/node_modules/colorette/index.cjs +213 -71
- package/examples/node_modules/colorette/index.d.ts +91 -47
- package/examples/node_modules/colorette/index.js +142 -68
- package/examples/node_modules/colorette/package.json +17 -51
- package/examples/node_modules/commander/CHANGELOG.md +339 -360
- package/examples/node_modules/commander/Readme.md +254 -743
- package/examples/node_modules/commander/index.js +1003 -1996
- package/examples/node_modules/commander/package.json +24 -86
- package/examples/node_modules/commander/typings/index.d.ts +153 -470
- package/examples/node_modules/cross-spawn/package.json +40 -71
- package/examples/node_modules/electron-to-chromium/CHANGELOG.md +14 -0
- package/examples/node_modules/electron-to-chromium/LICENSE +5 -0
- package/examples/node_modules/electron-to-chromium/README.md +186 -0
- package/examples/node_modules/electron-to-chromium/chromium-versions.js +45 -0
- package/examples/node_modules/electron-to-chromium/chromium-versions.json +1 -0
- package/examples/node_modules/electron-to-chromium/full-chromium-versions.js +1833 -0
- package/examples/node_modules/electron-to-chromium/full-chromium-versions.json +1 -0
- package/examples/node_modules/electron-to-chromium/full-versions.js +1335 -0
- package/examples/node_modules/electron-to-chromium/full-versions.json +1 -0
- package/examples/node_modules/electron-to-chromium/index.js +36 -0
- package/examples/node_modules/electron-to-chromium/package.json +42 -0
- package/examples/node_modules/electron-to-chromium/versions.js +89 -0
- package/examples/node_modules/electron-to-chromium/versions.json +1 -0
- package/examples/node_modules/enhanced-resolve/LICENSE +20 -0
- package/examples/node_modules/enhanced-resolve/README.md +167 -0
- package/examples/node_modules/enhanced-resolve/lib/AliasFieldPlugin.js +96 -0
- package/examples/node_modules/enhanced-resolve/lib/AliasPlugin.js +120 -0
- package/examples/node_modules/enhanced-resolve/lib/AppendPlugin.js +47 -0
- package/examples/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js +477 -0
- package/examples/node_modules/enhanced-resolve/lib/CloneBasenamePlugin.js +45 -0
- package/examples/node_modules/enhanced-resolve/lib/ConditionalPlugin.js +59 -0
- package/examples/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js +96 -0
- package/examples/node_modules/enhanced-resolve/lib/DescriptionFileUtils.js +170 -0
- package/examples/node_modules/enhanced-resolve/lib/DirectoryExistsPlugin.js +63 -0
- package/examples/node_modules/enhanced-resolve/lib/ExportsFieldPlugin.js +149 -0
- package/examples/node_modules/enhanced-resolve/lib/FileExistsPlugin.js +58 -0
- package/examples/node_modules/enhanced-resolve/lib/ImportsFieldPlugin.js +171 -0
- package/examples/node_modules/enhanced-resolve/lib/JoinRequestPartPlugin.js +64 -0
- package/examples/node_modules/enhanced-resolve/lib/JoinRequestPlugin.js +41 -0
- package/examples/node_modules/enhanced-resolve/lib/LogInfoPlugin.js +50 -0
- package/examples/node_modules/enhanced-resolve/lib/MainFieldPlugin.js +81 -0
- package/examples/node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js +9 -0
- package/examples/node_modules/enhanced-resolve/lib/ModulesInHierarchicalDirectoriesPlugin.js +80 -0
- package/examples/node_modules/enhanced-resolve/lib/ModulesInRootPlugin.js +47 -0
- package/examples/node_modules/enhanced-resolve/lib/NextPlugin.js +33 -0
- package/examples/node_modules/enhanced-resolve/lib/ParsePlugin.js +74 -0
- package/examples/node_modules/enhanced-resolve/lib/PnpPlugin.js +103 -0
- package/examples/node_modules/enhanced-resolve/lib/Resolver.js +500 -0
- package/examples/node_modules/enhanced-resolve/lib/ResolverFactory.js +661 -0
- package/examples/node_modules/enhanced-resolve/lib/RestrictionsPlugin.js +65 -0
- package/examples/node_modules/enhanced-resolve/lib/ResultPlugin.js +42 -0
- package/examples/node_modules/enhanced-resolve/lib/RootsPlugin.js +62 -0
- package/examples/node_modules/enhanced-resolve/lib/SelfReferencePlugin.js +80 -0
- package/examples/node_modules/enhanced-resolve/lib/SymlinkPlugin.js +88 -0
- package/examples/node_modules/enhanced-resolve/lib/SyncAsyncFileSystemDecorator.js +95 -0
- package/examples/node_modules/enhanced-resolve/lib/TryNextPlugin.js +41 -0
- package/examples/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js +99 -0
- package/examples/node_modules/enhanced-resolve/lib/UseFilePlugin.js +49 -0
- package/examples/node_modules/enhanced-resolve/lib/createInnerContext.js +37 -0
- package/examples/node_modules/enhanced-resolve/lib/forEachBail.js +25 -0
- package/examples/node_modules/enhanced-resolve/lib/getInnerRequest.js +27 -0
- package/examples/node_modules/enhanced-resolve/lib/getPaths.js +37 -0
- package/examples/node_modules/enhanced-resolve/lib/index.js +131 -0
- package/examples/node_modules/enhanced-resolve/lib/util/entrypoints.js +667 -0
- package/examples/node_modules/enhanced-resolve/lib/util/identifier.js +26 -0
- package/examples/node_modules/enhanced-resolve/lib/util/path.js +221 -0
- package/examples/node_modules/enhanced-resolve/lib/util/process-browser.js +16 -0
- package/examples/node_modules/enhanced-resolve/package.json +70 -0
- package/examples/node_modules/enhanced-resolve/types.d.ts +506 -0
- package/examples/node_modules/envinfo/dist/cli.js +1 -1
- package/examples/node_modules/envinfo/dist/envinfo.js +1 -1
- package/examples/node_modules/envinfo/package.json +55 -89
- package/examples/node_modules/es-module-lexer/LICENSE +10 -0
- package/examples/node_modules/es-module-lexer/README.md +251 -0
- package/examples/node_modules/es-module-lexer/dist/lexer.asm.js +1 -0
- package/examples/node_modules/es-module-lexer/dist/lexer.cjs +1 -0
- package/examples/node_modules/es-module-lexer/dist/lexer.js +2 -0
- package/examples/node_modules/es-module-lexer/lexer.js +899 -0
- package/examples/node_modules/es-module-lexer/package.json +53 -0
- package/examples/node_modules/es-module-lexer/types/lexer.d.ts +86 -0
- package/examples/node_modules/escalade/dist/index.js +22 -0
- package/examples/node_modules/escalade/dist/index.mjs +22 -0
- package/examples/node_modules/escalade/index.d.ts +3 -0
- package/examples/node_modules/escalade/license +9 -0
- package/examples/node_modules/escalade/package.json +61 -0
- package/examples/node_modules/escalade/readme.md +211 -0
- package/examples/node_modules/escalade/sync/index.d.ts +2 -0
- package/examples/node_modules/escalade/sync/index.js +18 -0
- package/examples/node_modules/escalade/sync/index.mjs +18 -0
- package/examples/node_modules/eslint-scope/CHANGELOG.md +70 -0
- package/examples/node_modules/eslint-scope/LICENSE +22 -0
- package/examples/node_modules/eslint-scope/README.md +54 -0
- package/examples/node_modules/eslint-scope/lib/definition.js +86 -0
- package/examples/node_modules/eslint-scope/lib/index.js +165 -0
- package/examples/node_modules/eslint-scope/lib/pattern-visitor.js +152 -0
- package/examples/node_modules/eslint-scope/lib/reference.js +167 -0
- package/examples/node_modules/eslint-scope/lib/referencer.js +629 -0
- package/examples/node_modules/eslint-scope/lib/scope-manager.js +247 -0
- package/examples/node_modules/eslint-scope/lib/scope.js +748 -0
- package/examples/node_modules/eslint-scope/lib/variable.js +88 -0
- package/examples/node_modules/eslint-scope/package.json +48 -0
- package/examples/node_modules/esrecurse/.babelrc +3 -0
- package/examples/node_modules/esrecurse/README.md +171 -0
- package/examples/node_modules/esrecurse/esrecurse.js +117 -0
- package/examples/node_modules/esrecurse/gulpfile.babel.js +92 -0
- package/examples/node_modules/esrecurse/node_modules/estraverse/.jshintrc +16 -0
- package/examples/node_modules/esrecurse/node_modules/estraverse/LICENSE.BSD +19 -0
- package/examples/node_modules/esrecurse/node_modules/estraverse/README.md +153 -0
- package/examples/node_modules/esrecurse/node_modules/estraverse/estraverse.js +805 -0
- package/examples/node_modules/esrecurse/node_modules/estraverse/gulpfile.js +70 -0
- package/examples/node_modules/esrecurse/node_modules/estraverse/package.json +40 -0
- package/examples/node_modules/esrecurse/package.json +52 -0
- package/examples/node_modules/estraverse/.jshintrc +16 -0
- package/examples/node_modules/estraverse/LICENSE.BSD +19 -0
- package/examples/node_modules/estraverse/README.md +153 -0
- package/examples/node_modules/estraverse/estraverse.js +782 -0
- package/examples/node_modules/estraverse/gulpfile.js +70 -0
- package/examples/node_modules/estraverse/package.json +40 -0
- package/examples/node_modules/events/.airtap.yml +15 -0
- package/examples/node_modules/events/.github/FUNDING.yml +12 -0
- package/examples/node_modules/events/.travis.yml +18 -0
- package/examples/node_modules/events/History.md +118 -0
- package/examples/node_modules/events/LICENSE +22 -0
- package/examples/node_modules/events/Readme.md +50 -0
- package/examples/node_modules/events/events.js +497 -0
- package/examples/node_modules/events/package.json +37 -0
- package/examples/node_modules/events/security.md +10 -0
- package/examples/node_modules/events/tests/add-listeners.js +111 -0
- package/examples/node_modules/events/tests/check-listener-leaks.js +101 -0
- package/examples/node_modules/events/tests/common.js +104 -0
- package/examples/node_modules/events/tests/errors.js +13 -0
- package/examples/node_modules/events/tests/events-list.js +28 -0
- package/examples/node_modules/events/tests/events-once.js +234 -0
- package/examples/node_modules/events/tests/index.js +64 -0
- package/examples/node_modules/events/tests/legacy-compat.js +16 -0
- package/examples/node_modules/events/tests/listener-count.js +37 -0
- package/examples/node_modules/events/tests/listeners-side-effects.js +56 -0
- package/examples/node_modules/events/tests/listeners.js +168 -0
- package/examples/node_modules/events/tests/max-listeners.js +47 -0
- package/examples/node_modules/events/tests/method-names.js +35 -0
- package/examples/node_modules/events/tests/modify-in-emit.js +90 -0
- package/examples/node_modules/events/tests/num-args.js +60 -0
- package/examples/node_modules/events/tests/once.js +83 -0
- package/examples/node_modules/events/tests/prepend.js +31 -0
- package/examples/node_modules/events/tests/remove-all-listeners.js +133 -0
- package/examples/node_modules/events/tests/remove-listeners.js +212 -0
- package/examples/node_modules/events/tests/set-max-listeners-side-effects.js +31 -0
- package/examples/node_modules/events/tests/special-event-names.js +45 -0
- package/examples/node_modules/events/tests/subclass.js +66 -0
- package/examples/node_modules/events/tests/symbols.js +25 -0
- package/examples/node_modules/execa/index.d.ts +12 -2
- package/examples/node_modules/execa/index.js +14 -4
- package/examples/node_modules/execa/lib/command.js +25 -5
- package/examples/node_modules/execa/lib/error.js +2 -0
- package/examples/node_modules/execa/lib/kill.js +7 -4
- package/examples/node_modules/execa/lib/stream.js +1 -1
- package/examples/node_modules/execa/package.json +72 -100
- package/examples/node_modules/execa/readme.md +16 -3
- package/examples/node_modules/fast-deep-equal/LICENSE +21 -0
- package/examples/node_modules/fast-deep-equal/README.md +96 -0
- package/examples/node_modules/fast-deep-equal/es6/index.d.ts +2 -0
- package/examples/node_modules/fast-deep-equal/es6/index.js +72 -0
- package/examples/node_modules/fast-deep-equal/es6/react.d.ts +2 -0
- package/examples/node_modules/fast-deep-equal/es6/react.js +79 -0
- package/examples/node_modules/fast-deep-equal/index.d.ts +4 -0
- package/examples/node_modules/fast-deep-equal/index.js +46 -0
- package/examples/node_modules/fast-deep-equal/package.json +61 -0
- package/examples/node_modules/fast-deep-equal/react.d.ts +2 -0
- package/examples/node_modules/fast-deep-equal/react.js +53 -0
- package/examples/node_modules/fast-json-stable-stringify/.eslintrc.yml +26 -0
- package/examples/node_modules/fast-json-stable-stringify/.github/FUNDING.yml +1 -0
- package/examples/node_modules/fast-json-stable-stringify/.travis.yml +8 -0
- package/examples/node_modules/fast-json-stable-stringify/LICENSE +21 -0
- package/examples/node_modules/fast-json-stable-stringify/README.md +131 -0
- package/examples/node_modules/fast-json-stable-stringify/benchmark/index.js +31 -0
- package/examples/node_modules/fast-json-stable-stringify/benchmark/test.json +137 -0
- package/examples/node_modules/fast-json-stable-stringify/example/key_cmp.js +7 -0
- package/examples/node_modules/fast-json-stable-stringify/example/nested.js +3 -0
- package/examples/node_modules/fast-json-stable-stringify/example/str.js +3 -0
- package/examples/node_modules/fast-json-stable-stringify/example/value_cmp.js +7 -0
- package/examples/node_modules/fast-json-stable-stringify/index.d.ts +4 -0
- package/examples/node_modules/fast-json-stable-stringify/index.js +59 -0
- package/examples/node_modules/fast-json-stable-stringify/package.json +52 -0
- package/examples/node_modules/fast-json-stable-stringify/test/cmp.js +13 -0
- package/examples/node_modules/fast-json-stable-stringify/test/nested.js +44 -0
- package/examples/node_modules/fast-json-stable-stringify/test/str.js +46 -0
- package/examples/node_modules/fast-json-stable-stringify/test/to-json.js +22 -0
- package/examples/node_modules/fastest-levenshtein/package.json +33 -60
- package/examples/node_modules/find-up/package.json +51 -83
- package/examples/node_modules/function-bind/package.json +23 -54
- package/examples/node_modules/get-stream/index.d.ts +1 -1
- package/examples/node_modules/get-stream/package.json +45 -77
- package/examples/node_modules/get-stream/readme.md +1 -1
- package/examples/node_modules/glob-to-regexp/.travis.yml +4 -0
- package/examples/node_modules/glob-to-regexp/README.md +75 -0
- package/examples/node_modules/glob-to-regexp/index.js +130 -0
- package/examples/node_modules/glob-to-regexp/package.json +23 -0
- package/examples/node_modules/glob-to-regexp/test.js +235 -0
- package/examples/node_modules/graceful-fs/LICENSE +15 -0
- package/examples/node_modules/graceful-fs/README.md +143 -0
- package/examples/node_modules/graceful-fs/clone.js +23 -0
- package/examples/node_modules/graceful-fs/graceful-fs.js +429 -0
- package/examples/node_modules/graceful-fs/legacy-streams.js +118 -0
- package/examples/node_modules/graceful-fs/package.json +50 -0
- package/examples/node_modules/graceful-fs/polyfills.js +348 -0
- package/examples/node_modules/has/package.json +21 -46
- package/examples/node_modules/has-flag/index.d.ts +39 -0
- package/examples/node_modules/has-flag/index.js +8 -0
- package/examples/node_modules/has-flag/license +9 -0
- package/examples/node_modules/has-flag/package.json +46 -0
- package/examples/node_modules/has-flag/readme.md +89 -0
- package/examples/node_modules/human-signals/package.json +27 -59
- package/examples/node_modules/import-local/index.js +9 -4
- package/examples/node_modules/import-local/package.json +50 -81
- package/examples/node_modules/import-local/readme.md +7 -8
- package/examples/node_modules/interpret/package.json +24 -67
- package/examples/node_modules/is-core-module/.eslintrc +0 -1
- package/examples/node_modules/is-core-module/.nycrc +0 -4
- package/examples/node_modules/is-core-module/CHANGELOG.md +69 -0
- package/examples/node_modules/is-core-module/README.md +6 -3
- package/examples/node_modules/is-core-module/core.json +85 -16
- package/examples/node_modules/is-core-module/index.js +1 -1
- package/examples/node_modules/is-core-module/package.json +67 -92
- package/examples/node_modules/is-core-module/test/index.js +47 -0
- package/examples/node_modules/is-plain-object/package.json +26 -68
- package/examples/node_modules/is-stream/index.d.ts +0 -1
- package/examples/node_modules/is-stream/index.js +1 -2
- package/examples/node_modules/is-stream/license +1 -1
- package/examples/node_modules/is-stream/package.json +40 -71
- package/examples/node_modules/is-stream/readme.md +12 -9
- package/examples/node_modules/isexe/package.json +16 -45
- package/examples/node_modules/isobject/package.json +24 -69
- package/examples/node_modules/jest-worker/LICENSE +21 -0
- package/examples/node_modules/jest-worker/README.md +247 -0
- package/examples/node_modules/jest-worker/build/Farm.d.ts +29 -0
- package/examples/node_modules/jest-worker/build/Farm.js +206 -0
- package/examples/node_modules/jest-worker/build/FifoQueue.d.ts +18 -0
- package/examples/node_modules/jest-worker/build/FifoQueue.js +171 -0
- package/examples/node_modules/jest-worker/build/PriorityQueue.d.ts +41 -0
- package/examples/node_modules/jest-worker/build/PriorityQueue.js +188 -0
- package/examples/node_modules/jest-worker/build/WorkerPool.d.ts +13 -0
- package/examples/node_modules/jest-worker/build/WorkerPool.js +49 -0
- package/examples/node_modules/jest-worker/build/base/BaseWorkerPool.d.ts +21 -0
- package/examples/node_modules/jest-worker/build/base/BaseWorkerPool.js +201 -0
- package/examples/node_modules/jest-worker/build/index.d.ts +49 -0
- package/examples/node_modules/jest-worker/build/index.js +223 -0
- package/examples/node_modules/jest-worker/build/types.d.ts +143 -0
- package/examples/node_modules/jest-worker/build/types.js +39 -0
- package/examples/node_modules/jest-worker/build/workers/ChildProcessWorker.d.ts +51 -0
- package/examples/node_modules/jest-worker/build/workers/ChildProcessWorker.js +333 -0
- package/examples/node_modules/jest-worker/build/workers/NodeThreadsWorker.d.ts +34 -0
- package/examples/node_modules/jest-worker/build/workers/NodeThreadsWorker.js +344 -0
- package/examples/node_modules/jest-worker/build/workers/messageParent.d.ts +8 -0
- package/examples/node_modules/jest-worker/build/workers/messageParent.js +38 -0
- package/examples/node_modules/jest-worker/build/workers/processChild.d.ts +7 -0
- package/examples/node_modules/jest-worker/build/workers/processChild.js +148 -0
- package/examples/node_modules/jest-worker/build/workers/threadChild.d.ts +7 -0
- package/examples/node_modules/jest-worker/build/workers/threadChild.js +159 -0
- package/examples/node_modules/jest-worker/package.json +38 -0
- package/examples/node_modules/json-parse-better-errors/CHANGELOG.md +46 -0
- package/examples/node_modules/json-parse-better-errors/LICENSE.md +7 -0
- package/examples/node_modules/json-parse-better-errors/README.md +46 -0
- package/examples/node_modules/json-parse-better-errors/index.js +38 -0
- package/examples/node_modules/json-parse-better-errors/package.json +45 -0
- package/examples/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
- package/examples/node_modules/json-schema-traverse/.travis.yml +8 -0
- package/examples/node_modules/json-schema-traverse/LICENSE +21 -0
- package/examples/node_modules/json-schema-traverse/README.md +83 -0
- package/examples/node_modules/json-schema-traverse/index.js +89 -0
- package/examples/node_modules/json-schema-traverse/package.json +43 -0
- package/examples/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
- package/examples/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
- package/examples/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
- package/examples/node_modules/kind-of/package.json +27 -83
- package/examples/node_modules/loader-runner/LICENSE +21 -0
- package/examples/node_modules/loader-runner/README.md +53 -0
- package/examples/node_modules/loader-runner/lib/LoaderLoadingError.js +11 -0
- package/examples/node_modules/loader-runner/lib/LoaderRunner.js +415 -0
- package/examples/node_modules/loader-runner/lib/loadLoader.js +54 -0
- package/examples/node_modules/loader-runner/package.json +45 -0
- package/examples/node_modules/locate-path/package.json +43 -75
- package/examples/node_modules/merge-stream/package.json +10 -45
- package/examples/node_modules/mime-db/HISTORY.md +507 -0
- package/examples/node_modules/mime-db/LICENSE +23 -0
- package/examples/node_modules/mime-db/README.md +100 -0
- package/examples/node_modules/mime-db/db.json +8519 -0
- package/examples/node_modules/mime-db/index.js +12 -0
- package/examples/node_modules/mime-db/package.json +60 -0
- package/examples/node_modules/mime-types/HISTORY.md +397 -0
- package/examples/node_modules/mime-types/LICENSE +23 -0
- package/examples/node_modules/mime-types/README.md +113 -0
- package/examples/node_modules/mime-types/index.js +188 -0
- package/examples/node_modules/mime-types/package.json +44 -0
- package/examples/node_modules/mimic-fn/package.json +40 -72
- package/examples/node_modules/neo-async/LICENSE +22 -0
- package/examples/node_modules/neo-async/README.md +273 -0
- package/examples/node_modules/neo-async/all.js +3 -0
- package/examples/node_modules/neo-async/allLimit.js +3 -0
- package/examples/node_modules/neo-async/allSeries.js +3 -0
- package/examples/node_modules/neo-async/angelFall.js +3 -0
- package/examples/node_modules/neo-async/any.js +3 -0
- package/examples/node_modules/neo-async/anyLimit.js +3 -0
- package/examples/node_modules/neo-async/anySeries.js +3 -0
- package/examples/node_modules/neo-async/apply.js +3 -0
- package/examples/node_modules/neo-async/applyEach.js +3 -0
- package/examples/node_modules/neo-async/applyEachSeries.js +3 -0
- package/examples/node_modules/neo-async/async.js +9184 -0
- package/examples/node_modules/neo-async/async.min.js +80 -0
- package/examples/node_modules/neo-async/asyncify.js +3 -0
- package/examples/node_modules/neo-async/auto.js +3 -0
- package/examples/node_modules/neo-async/autoInject.js +3 -0
- package/examples/node_modules/neo-async/cargo.js +3 -0
- package/examples/node_modules/neo-async/compose.js +3 -0
- package/examples/node_modules/neo-async/concat.js +3 -0
- package/examples/node_modules/neo-async/concatLimit.js +3 -0
- package/examples/node_modules/neo-async/concatSeries.js +3 -0
- package/examples/node_modules/neo-async/constant.js +3 -0
- package/examples/node_modules/neo-async/createLogger.js +3 -0
- package/examples/node_modules/neo-async/detect.js +3 -0
- package/examples/node_modules/neo-async/detectLimit.js +3 -0
- package/examples/node_modules/neo-async/detectSeries.js +3 -0
- package/examples/node_modules/neo-async/dir.js +3 -0
- package/examples/node_modules/neo-async/doDuring.js +3 -0
- package/examples/node_modules/neo-async/doUntil.js +3 -0
- package/examples/node_modules/neo-async/doWhilst.js +3 -0
- package/examples/node_modules/neo-async/during.js +3 -0
- package/examples/node_modules/neo-async/each.js +3 -0
- package/examples/node_modules/neo-async/eachLimit.js +3 -0
- package/examples/node_modules/neo-async/eachOf.js +3 -0
- package/examples/node_modules/neo-async/eachOfLimit.js +3 -0
- package/examples/node_modules/neo-async/eachOfSeries.js +3 -0
- package/examples/node_modules/neo-async/eachSeries.js +3 -0
- package/examples/node_modules/neo-async/ensureAsync.js +3 -0
- package/examples/node_modules/neo-async/every.js +3 -0
- package/examples/node_modules/neo-async/everyLimit.js +3 -0
- package/examples/node_modules/neo-async/everySeries.js +3 -0
- package/examples/node_modules/neo-async/fast.js +3 -0
- package/examples/node_modules/neo-async/filter.js +3 -0
- package/examples/node_modules/neo-async/filterLimit.js +3 -0
- package/examples/node_modules/neo-async/filterSeries.js +3 -0
- package/examples/node_modules/neo-async/find.js +3 -0
- package/examples/node_modules/neo-async/findLimit.js +3 -0
- package/examples/node_modules/neo-async/findSeries.js +3 -0
- package/examples/node_modules/neo-async/foldl.js +3 -0
- package/examples/node_modules/neo-async/foldr.js +3 -0
- package/examples/node_modules/neo-async/forEach.js +3 -0
- package/examples/node_modules/neo-async/forEachLimit.js +3 -0
- package/examples/node_modules/neo-async/forEachOf.js +3 -0
- package/examples/node_modules/neo-async/forEachOfLimit.js +3 -0
- package/examples/node_modules/neo-async/forEachOfSeries.js +3 -0
- package/examples/node_modules/neo-async/forEachSeries.js +3 -0
- package/examples/node_modules/neo-async/forever.js +3 -0
- package/examples/node_modules/neo-async/groupBy.js +3 -0
- package/examples/node_modules/neo-async/groupByLimit.js +3 -0
- package/examples/node_modules/neo-async/groupBySeries.js +3 -0
- package/examples/node_modules/neo-async/inject.js +3 -0
- package/examples/node_modules/neo-async/iterator.js +3 -0
- package/examples/node_modules/neo-async/log.js +3 -0
- package/examples/node_modules/neo-async/map.js +3 -0
- package/examples/node_modules/neo-async/mapLimit.js +3 -0
- package/examples/node_modules/neo-async/mapSeries.js +3 -0
- package/examples/node_modules/neo-async/mapValues.js +3 -0
- package/examples/node_modules/neo-async/mapValuesLimit.js +3 -0
- package/examples/node_modules/neo-async/mapValuesSeries.js +3 -0
- package/examples/node_modules/neo-async/memoize.js +3 -0
- package/examples/node_modules/neo-async/nextTick.js +3 -0
- package/examples/node_modules/neo-async/omit.js +3 -0
- package/examples/node_modules/neo-async/omitLimit.js +3 -0
- package/examples/node_modules/neo-async/omitSeries.js +3 -0
- package/examples/node_modules/neo-async/package.json +57 -0
- package/examples/node_modules/neo-async/parallel.js +3 -0
- package/examples/node_modules/neo-async/parallelLimit.js +3 -0
- package/examples/node_modules/neo-async/pick.js +3 -0
- package/examples/node_modules/neo-async/pickLimit.js +3 -0
- package/examples/node_modules/neo-async/pickSeries.js +3 -0
- package/examples/node_modules/neo-async/priorityQueue.js +3 -0
- package/examples/node_modules/neo-async/queue.js +3 -0
- package/examples/node_modules/neo-async/race.js +3 -0
- package/examples/node_modules/neo-async/reduce.js +3 -0
- package/examples/node_modules/neo-async/reduceRight.js +3 -0
- package/examples/node_modules/neo-async/reflect.js +3 -0
- package/examples/node_modules/neo-async/reflectAll.js +3 -0
- package/examples/node_modules/neo-async/reject.js +3 -0
- package/examples/node_modules/neo-async/rejectLimit.js +3 -0
- package/examples/node_modules/neo-async/rejectSeries.js +3 -0
- package/examples/node_modules/neo-async/retry.js +3 -0
- package/examples/node_modules/neo-async/retryable.js +3 -0
- package/examples/node_modules/neo-async/safe.js +3 -0
- package/examples/node_modules/neo-async/select.js +3 -0
- package/examples/node_modules/neo-async/selectLimit.js +3 -0
- package/examples/node_modules/neo-async/selectSeries.js +3 -0
- package/examples/node_modules/neo-async/seq.js +3 -0
- package/examples/node_modules/neo-async/series.js +3 -0
- package/examples/node_modules/neo-async/setImmediate.js +3 -0
- package/examples/node_modules/neo-async/some.js +3 -0
- package/examples/node_modules/neo-async/someLimit.js +3 -0
- package/examples/node_modules/neo-async/someSeries.js +3 -0
- package/examples/node_modules/neo-async/sortBy.js +3 -0
- package/examples/node_modules/neo-async/sortByLimit.js +3 -0
- package/examples/node_modules/neo-async/sortBySeries.js +3 -0
- package/examples/node_modules/neo-async/timeout.js +3 -0
- package/examples/node_modules/neo-async/times.js +3 -0
- package/examples/node_modules/neo-async/timesLimit.js +3 -0
- package/examples/node_modules/neo-async/timesSeries.js +3 -0
- package/examples/node_modules/neo-async/transform.js +3 -0
- package/examples/node_modules/neo-async/transformLimit.js +3 -0
- package/examples/node_modules/neo-async/transformSeries.js +3 -0
- package/examples/node_modules/neo-async/tryEach.js +3 -0
- package/examples/node_modules/neo-async/unmemoize.js +3 -0
- package/examples/node_modules/neo-async/until.js +3 -0
- package/examples/node_modules/neo-async/waterfall.js +3 -0
- package/examples/node_modules/neo-async/whilst.js +3 -0
- package/examples/node_modules/neo-async/wrapSync.js +3 -0
- package/examples/node_modules/node-releases/LICENSE +21 -0
- package/examples/node_modules/node-releases/README.md +31 -0
- package/examples/node_modules/node-releases/data/processed/envs.json +1 -0
- package/examples/node_modules/node-releases/data/release-schedule/release-schedule.json +1 -0
- package/examples/node_modules/node-releases/package.json +18 -0
- package/examples/node_modules/npm-run-path/package.json +42 -74
- package/examples/node_modules/onetime/package.json +41 -73
- package/examples/node_modules/p-limit/package.json +50 -82
- package/examples/node_modules/p-locate/package.json +51 -83
- package/examples/node_modules/p-try/package.json +40 -72
- package/examples/node_modules/path-exists/package.json +37 -69
- package/examples/node_modules/path-key/package.json +37 -70
- package/examples/node_modules/path-parse/index.js +17 -35
- package/examples/node_modules/path-parse/package.json +13 -41
- package/examples/node_modules/picocolors/LICENSE +15 -0
- package/examples/node_modules/picocolors/README.md +21 -0
- package/examples/node_modules/picocolors/package.json +25 -0
- package/examples/node_modules/picocolors/picocolors.browser.js +4 -0
- package/examples/node_modules/picocolors/picocolors.d.ts +5 -0
- package/examples/node_modules/picocolors/picocolors.js +58 -0
- package/examples/node_modules/picocolors/types.ts +30 -0
- package/examples/node_modules/pkg-dir/package.json +54 -86
- package/examples/node_modules/punycode/LICENSE-MIT.txt +20 -0
- package/examples/node_modules/punycode/README.md +122 -0
- package/examples/node_modules/punycode/package.json +58 -0
- package/examples/node_modules/punycode/punycode.es6.js +441 -0
- package/examples/node_modules/punycode/punycode.js +440 -0
- package/examples/node_modules/randombytes/.travis.yml +15 -0
- package/examples/node_modules/randombytes/.zuul.yml +1 -0
- package/examples/node_modules/randombytes/LICENSE +21 -0
- package/examples/node_modules/randombytes/README.md +14 -0
- package/examples/node_modules/randombytes/browser.js +50 -0
- package/examples/node_modules/randombytes/index.js +1 -0
- package/examples/node_modules/randombytes/package.json +36 -0
- package/examples/node_modules/randombytes/test.js +81 -0
- package/examples/node_modules/rechoir/README.md +9 -0
- package/examples/node_modules/rechoir/lib/extension.js +35 -10
- package/examples/node_modules/rechoir/package.json +24 -67
- package/examples/node_modules/resolve/.eslintrc +34 -8
- package/examples/node_modules/resolve/.github/FUNDING.yml +12 -0
- package/examples/node_modules/resolve/appveyor.yml +4 -2
- package/examples/node_modules/resolve/async.js +3 -0
- package/examples/node_modules/resolve/bin/resolve +50 -0
- package/examples/node_modules/resolve/lib/async.js +10 -1
- package/examples/node_modules/resolve/lib/core.js +1 -2
- package/examples/node_modules/resolve/lib/core.json +85 -16
- package/examples/node_modules/resolve/lib/homedir.js +24 -0
- package/examples/node_modules/resolve/lib/node-modules-paths.js +1 -1
- package/examples/node_modules/resolve/lib/sync.js +14 -5
- package/examples/node_modules/resolve/package.json +60 -78
- package/examples/node_modules/resolve/readme.markdown +35 -13
- package/examples/node_modules/resolve/sync.js +3 -0
- package/examples/node_modules/resolve/test/home_paths.js +127 -0
- package/examples/node_modules/resolve/test/home_paths_sync.js +114 -0
- package/examples/node_modules/resolve/test/mock_sync.js +2 -4
- package/examples/node_modules/resolve/test/node_path.js +1 -1
- package/examples/node_modules/resolve/test/resolver/invalid_main/package.json +1 -1
- package/examples/node_modules/resolve/test/resolver/malformed_package_json/index.js +0 -0
- package/examples/node_modules/resolve/test/resolver/malformed_package_json/package.json +1 -0
- package/examples/node_modules/resolve/test/resolver.js +99 -3
- package/examples/node_modules/resolve/test/resolver_sync.js +310 -23
- package/examples/node_modules/resolve-cwd/package.json +41 -73
- package/examples/node_modules/resolve-from/package.json +34 -66
- package/examples/node_modules/safe-buffer/LICENSE +21 -0
- package/examples/node_modules/safe-buffer/README.md +584 -0
- package/examples/node_modules/safe-buffer/index.d.ts +187 -0
- package/examples/node_modules/safe-buffer/index.js +65 -0
- package/examples/node_modules/safe-buffer/package.json +51 -0
- package/examples/node_modules/schema-utils/LICENSE +20 -0
- package/examples/node_modules/schema-utils/README.md +290 -0
- package/examples/node_modules/schema-utils/declarations/ValidationError.d.ts +74 -0
- package/examples/node_modules/schema-utils/declarations/index.d.ts +3 -0
- package/examples/node_modules/schema-utils/declarations/keywords/absolutePath.d.ts +10 -0
- package/examples/node_modules/schema-utils/declarations/util/Range.d.ts +79 -0
- package/examples/node_modules/schema-utils/declarations/util/hints.d.ts +3 -0
- package/examples/node_modules/schema-utils/declarations/validate.d.ts +37 -0
- package/examples/node_modules/schema-utils/dist/ValidationError.js +1271 -0
- package/examples/node_modules/schema-utils/dist/index.js +11 -0
- package/examples/node_modules/schema-utils/dist/keywords/absolutePath.js +93 -0
- package/examples/node_modules/schema-utils/dist/util/Range.js +163 -0
- package/examples/node_modules/schema-utils/dist/util/hints.js +105 -0
- package/examples/node_modules/schema-utils/dist/validate.js +163 -0
- package/examples/node_modules/schema-utils/package.json +78 -0
- package/examples/node_modules/serialize-javascript/LICENSE +27 -0
- package/examples/node_modules/serialize-javascript/README.md +142 -0
- package/examples/node_modules/serialize-javascript/index.js +268 -0
- package/examples/node_modules/serialize-javascript/package.json +36 -0
- package/examples/node_modules/shallow-clone/package.json +20 -57
- package/examples/node_modules/shebang-command/package.json +32 -64
- package/examples/node_modules/shebang-regex/package.json +33 -65
- package/examples/node_modules/signal-exit/README.md +1 -1
- package/examples/node_modules/signal-exit/index.js +169 -130
- package/examples/node_modules/signal-exit/package.json +24 -52
- package/examples/node_modules/source-map/CHANGELOG.md +301 -0
- package/examples/node_modules/source-map/LICENSE +28 -0
- package/examples/node_modules/source-map/README.md +742 -0
- package/examples/node_modules/source-map/dist/source-map.debug.js +3234 -0
- package/examples/node_modules/source-map/dist/source-map.js +3233 -0
- package/examples/node_modules/source-map/dist/source-map.min.js +2 -0
- package/examples/node_modules/source-map/dist/source-map.min.js.map +1 -0
- package/examples/node_modules/source-map/lib/array-set.js +121 -0
- package/examples/node_modules/source-map/lib/base64-vlq.js +140 -0
- package/examples/node_modules/source-map/lib/base64.js +67 -0
- package/examples/node_modules/source-map/lib/binary-search.js +111 -0
- package/examples/node_modules/source-map/lib/mapping-list.js +79 -0
- package/examples/node_modules/source-map/lib/quick-sort.js +114 -0
- package/examples/node_modules/source-map/lib/source-map-consumer.js +1145 -0
- package/examples/node_modules/source-map/lib/source-map-generator.js +425 -0
- package/examples/node_modules/source-map/lib/source-node.js +413 -0
- package/examples/node_modules/source-map/lib/util.js +488 -0
- package/examples/node_modules/source-map/package.json +73 -0
- package/examples/node_modules/source-map/source-map.d.ts +98 -0
- package/examples/node_modules/source-map/source-map.js +8 -0
- package/examples/node_modules/source-map-support/LICENSE.md +21 -0
- package/examples/node_modules/source-map-support/README.md +284 -0
- package/examples/node_modules/source-map-support/browser-source-map-support.js +114 -0
- package/examples/node_modules/source-map-support/package.json +31 -0
- package/examples/node_modules/source-map-support/register-hook-require.js +1 -0
- package/examples/node_modules/source-map-support/register.js +1 -0
- package/examples/node_modules/source-map-support/source-map-support.js +625 -0
- package/examples/node_modules/strip-final-newline/package.json +38 -70
- package/examples/node_modules/supports-color/browser.js +24 -0
- package/examples/node_modules/supports-color/index.js +152 -0
- package/examples/node_modules/supports-color/license +9 -0
- package/examples/node_modules/supports-color/package.json +58 -0
- package/examples/node_modules/supports-color/readme.md +77 -0
- package/examples/node_modules/supports-preserve-symlinks-flag/.eslintrc +14 -0
- package/examples/node_modules/supports-preserve-symlinks-flag/.github/FUNDING.yml +12 -0
- package/examples/node_modules/supports-preserve-symlinks-flag/.nycrc +9 -0
- package/examples/node_modules/supports-preserve-symlinks-flag/CHANGELOG.md +22 -0
- package/examples/node_modules/supports-preserve-symlinks-flag/LICENSE +21 -0
- package/examples/node_modules/supports-preserve-symlinks-flag/README.md +42 -0
- package/examples/node_modules/supports-preserve-symlinks-flag/browser.js +3 -0
- package/examples/node_modules/supports-preserve-symlinks-flag/index.js +9 -0
- package/examples/node_modules/supports-preserve-symlinks-flag/package.json +70 -0
- package/examples/node_modules/supports-preserve-symlinks-flag/test/index.js +29 -0
- package/examples/node_modules/tapable/LICENSE +21 -0
- package/examples/node_modules/tapable/README.md +296 -0
- package/examples/node_modules/tapable/lib/AsyncParallelBailHook.js +85 -0
- package/examples/node_modules/tapable/lib/AsyncParallelHook.js +37 -0
- package/examples/node_modules/tapable/lib/AsyncSeriesBailHook.js +42 -0
- package/examples/node_modules/tapable/lib/AsyncSeriesHook.js +37 -0
- package/examples/node_modules/tapable/lib/AsyncSeriesLoopHook.js +37 -0
- package/examples/node_modules/tapable/lib/AsyncSeriesWaterfallHook.js +47 -0
- package/examples/node_modules/tapable/lib/Hook.js +175 -0
- package/examples/node_modules/tapable/lib/HookCodeFactory.js +468 -0
- package/examples/node_modules/tapable/lib/HookMap.js +61 -0
- package/examples/node_modules/tapable/lib/MultiHook.js +54 -0
- package/examples/node_modules/tapable/lib/SyncBailHook.js +51 -0
- package/examples/node_modules/tapable/lib/SyncHook.js +46 -0
- package/examples/node_modules/tapable/lib/SyncLoopHook.js +46 -0
- package/examples/node_modules/tapable/lib/SyncWaterfallHook.js +57 -0
- package/examples/node_modules/tapable/lib/index.js +19 -0
- package/examples/node_modules/tapable/lib/util-browser.js +16 -0
- package/examples/node_modules/tapable/package.json +44 -0
- package/examples/node_modules/tapable/tapable.d.ts +116 -0
- package/examples/node_modules/terser/CHANGELOG.md +480 -0
- package/examples/node_modules/terser/LICENSE +29 -0
- package/examples/node_modules/terser/PATRONS.md +15 -0
- package/examples/node_modules/terser/README.md +1374 -0
- package/examples/node_modules/terser/bin/package.json +10 -0
- package/examples/node_modules/terser/bin/terser +21 -0
- package/examples/node_modules/terser/bin/uglifyjs +10 -0
- package/examples/node_modules/terser/dist/.gitkeep +0 -0
- package/examples/node_modules/terser/dist/bundle.min.js +28332 -0
- package/examples/node_modules/terser/dist/package.json +10 -0
- package/examples/node_modules/terser/lib/ast.js +1858 -0
- package/examples/node_modules/terser/lib/cli.js +479 -0
- package/examples/node_modules/terser/lib/compress/common.js +296 -0
- package/examples/node_modules/terser/lib/compress/compressor-flags.js +63 -0
- package/examples/node_modules/terser/lib/compress/drop-side-effect-free.js +350 -0
- package/examples/node_modules/terser/lib/compress/evaluate.js +461 -0
- package/examples/node_modules/terser/lib/compress/index.js +4667 -0
- package/examples/node_modules/terser/lib/compress/inference.js +948 -0
- package/examples/node_modules/terser/lib/compress/native-objects.js +184 -0
- package/examples/node_modules/terser/lib/compress/reduce-vars.js +675 -0
- package/examples/node_modules/terser/lib/compress/tighten-body.js +1461 -0
- package/examples/node_modules/terser/lib/equivalent-to.js +313 -0
- package/examples/node_modules/terser/lib/minify.js +335 -0
- package/examples/node_modules/terser/lib/mozilla-ast.js +1376 -0
- package/examples/node_modules/terser/lib/output.js +2347 -0
- package/examples/node_modules/terser/lib/parse.js +3362 -0
- package/examples/node_modules/terser/lib/propmangle.js +376 -0
- package/examples/node_modules/terser/lib/scope.js +1042 -0
- package/examples/node_modules/terser/lib/size.js +490 -0
- package/examples/node_modules/terser/lib/sourcemap.js +114 -0
- package/examples/node_modules/terser/lib/transform.js +318 -0
- package/examples/node_modules/terser/lib/utils/first_in_statement.js +50 -0
- package/examples/node_modules/terser/lib/utils/index.js +302 -0
- package/examples/node_modules/terser/main.js +27 -0
- package/examples/node_modules/terser/node_modules/source-map/CHANGELOG.md +344 -0
- package/examples/node_modules/terser/node_modules/source-map/LICENSE +28 -0
- package/examples/node_modules/terser/node_modules/source-map/README.md +822 -0
- package/examples/node_modules/terser/node_modules/source-map/dist/source-map.js +3351 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/array-set.js +100 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/base64-vlq.js +111 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/base64.js +18 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/binary-search.js +107 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/mapping-list.js +80 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/mappings.wasm +0 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/read-wasm.js +40 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/source-map-consumer.js +1254 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/source-map-generator.js +413 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/source-node.js +404 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/util.js +546 -0
- package/examples/node_modules/terser/node_modules/source-map/lib/wasm.js +107 -0
- package/examples/node_modules/terser/node_modules/source-map/package.json +90 -0
- package/examples/node_modules/terser/node_modules/source-map/source-map.d.ts +369 -0
- package/examples/node_modules/terser/node_modules/source-map/source-map.js +8 -0
- package/examples/node_modules/terser/package.json +152 -0
- package/examples/node_modules/terser/tools/domprops.js +7771 -0
- package/examples/node_modules/terser/tools/exit.cjs +7 -0
- package/examples/node_modules/terser/tools/props.html +55 -0
- package/examples/node_modules/terser/tools/terser.d.ts +207 -0
- package/examples/node_modules/terser-webpack-plugin/LICENSE +20 -0
- package/examples/node_modules/terser-webpack-plugin/README.md +742 -0
- package/examples/node_modules/terser-webpack-plugin/dist/index.js +798 -0
- package/examples/node_modules/terser-webpack-plugin/dist/minify.js +50 -0
- package/examples/node_modules/terser-webpack-plugin/dist/options.json +164 -0
- package/examples/node_modules/terser-webpack-plugin/dist/utils.js +687 -0
- package/examples/node_modules/terser-webpack-plugin/package.json +114 -0
- package/examples/node_modules/terser-webpack-plugin/types/index.d.ts +329 -0
- package/examples/node_modules/terser-webpack-plugin/types/minify.d.ts +17 -0
- package/examples/node_modules/terser-webpack-plugin/types/utils.d.ts +100 -0
- package/examples/node_modules/uri-js/LICENSE +11 -0
- package/examples/node_modules/uri-js/README.md +203 -0
- package/examples/node_modules/uri-js/dist/es5/uri.all.d.ts +59 -0
- package/examples/node_modules/uri-js/dist/es5/uri.all.js +1443 -0
- package/examples/node_modules/uri-js/dist/es5/uri.all.js.map +1 -0
- package/examples/node_modules/uri-js/dist/es5/uri.all.min.d.ts +59 -0
- package/examples/node_modules/uri-js/dist/es5/uri.all.min.js +3 -0
- package/examples/node_modules/uri-js/dist/es5/uri.all.min.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/index.d.ts +1 -0
- package/examples/node_modules/uri-js/dist/esnext/index.js +17 -0
- package/examples/node_modules/uri-js/dist/esnext/index.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/regexps-iri.d.ts +3 -0
- package/examples/node_modules/uri-js/dist/esnext/regexps-iri.js +3 -0
- package/examples/node_modules/uri-js/dist/esnext/regexps-iri.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/regexps-uri.d.ts +4 -0
- package/examples/node_modules/uri-js/dist/esnext/regexps-uri.js +42 -0
- package/examples/node_modules/uri-js/dist/esnext/regexps-uri.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/http.d.ts +3 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/http.js +28 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/http.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/https.d.ts +3 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/https.js +9 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/https.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts +12 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/mailto.js +148 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/mailto.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts +7 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js +23 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/urn.d.ts +10 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/urn.js +49 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/urn.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/ws.d.ts +7 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/ws.js +41 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/ws.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/wss.d.ts +3 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/wss.js +9 -0
- package/examples/node_modules/uri-js/dist/esnext/schemes/wss.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/uri.d.ts +59 -0
- package/examples/node_modules/uri-js/dist/esnext/uri.js +480 -0
- package/examples/node_modules/uri-js/dist/esnext/uri.js.map +1 -0
- package/examples/node_modules/uri-js/dist/esnext/util.d.ts +6 -0
- package/examples/node_modules/uri-js/dist/esnext/util.js +36 -0
- package/examples/node_modules/uri-js/dist/esnext/util.js.map +1 -0
- package/examples/node_modules/uri-js/package.json +77 -0
- package/examples/node_modules/uri-js/yarn.lock +2558 -0
- package/examples/node_modules/watchpack/LICENSE +20 -0
- package/examples/node_modules/watchpack/README.md +149 -0
- package/examples/node_modules/watchpack/lib/DirectoryWatcher.js +785 -0
- package/examples/node_modules/watchpack/lib/LinkResolver.js +107 -0
- package/examples/node_modules/watchpack/lib/getWatcherManager.js +52 -0
- package/examples/node_modules/watchpack/lib/reducePlan.js +138 -0
- package/examples/node_modules/watchpack/lib/watchEventSource.js +335 -0
- package/examples/node_modules/watchpack/lib/watchpack.js +383 -0
- package/examples/node_modules/watchpack/package.json +49 -0
- package/examples/node_modules/webpack/LICENSE +20 -0
- package/examples/node_modules/webpack/README.md +711 -0
- package/examples/node_modules/webpack/SECURITY.md +9 -0
- package/examples/node_modules/webpack/bin/webpack.js +163 -0
- package/examples/node_modules/webpack/hot/dev-server.js +61 -0
- package/examples/node_modules/webpack/hot/emitter.js +2 -0
- package/examples/node_modules/webpack/hot/lazy-compilation-node.js +40 -0
- package/examples/node_modules/webpack/hot/lazy-compilation-web.js +74 -0
- package/examples/node_modules/webpack/hot/log-apply-result.js +44 -0
- package/examples/node_modules/webpack/hot/log.js +59 -0
- package/examples/node_modules/webpack/hot/only-dev-server.js +102 -0
- package/examples/node_modules/webpack/hot/poll.js +37 -0
- package/examples/node_modules/webpack/hot/signal.js +62 -0
- package/examples/node_modules/webpack/lib/APIPlugin.js +253 -0
- package/examples/node_modules/webpack/lib/AbstractMethodError.js +49 -0
- package/examples/node_modules/webpack/lib/AsyncDependenciesBlock.js +106 -0
- package/examples/node_modules/webpack/lib/AsyncDependencyToInitialChunkError.js +31 -0
- package/examples/node_modules/webpack/lib/AutomaticPrefetchPlugin.js +65 -0
- package/examples/node_modules/webpack/lib/BannerPlugin.js +123 -0
- package/examples/node_modules/webpack/lib/Cache.js +161 -0
- package/examples/node_modules/webpack/lib/CacheFacade.js +345 -0
- package/examples/node_modules/webpack/lib/CaseSensitiveModulesWarning.js +71 -0
- package/examples/node_modules/webpack/lib/Chunk.js +820 -0
- package/examples/node_modules/webpack/lib/ChunkGraph.js +1727 -0
- package/examples/node_modules/webpack/lib/ChunkGroup.js +584 -0
- package/examples/node_modules/webpack/lib/ChunkRenderError.js +31 -0
- package/examples/node_modules/webpack/lib/ChunkTemplate.js +138 -0
- package/examples/node_modules/webpack/lib/CleanPlugin.js +420 -0
- package/examples/node_modules/webpack/lib/CodeGenerationError.js +29 -0
- package/examples/node_modules/webpack/lib/CodeGenerationResults.js +155 -0
- package/examples/node_modules/webpack/lib/CommentCompilationWarning.js +33 -0
- package/examples/node_modules/webpack/lib/CompatibilityPlugin.js +152 -0
- package/examples/node_modules/webpack/lib/Compilation.js +5292 -0
- package/examples/node_modules/webpack/lib/Compiler.js +1217 -0
- package/examples/node_modules/webpack/lib/ConcatenationScope.js +159 -0
- package/examples/node_modules/webpack/lib/ConcurrentCompilationError.js +18 -0
- package/examples/node_modules/webpack/lib/ConditionalInitFragment.js +112 -0
- package/examples/node_modules/webpack/lib/ConstPlugin.js +497 -0
- package/examples/node_modules/webpack/lib/ContextExclusionPlugin.js +32 -0
- package/examples/node_modules/webpack/lib/ContextModule.js +1147 -0
- package/examples/node_modules/webpack/lib/ContextModuleFactory.js +437 -0
- package/examples/node_modules/webpack/lib/ContextReplacementPlugin.js +157 -0
- package/examples/node_modules/webpack/lib/DefinePlugin.js +601 -0
- package/examples/node_modules/webpack/lib/DelegatedModule.js +239 -0
- package/examples/node_modules/webpack/lib/DelegatedModuleFactoryPlugin.js +91 -0
- package/examples/node_modules/webpack/lib/DelegatedPlugin.js +43 -0
- package/examples/node_modules/webpack/lib/DependenciesBlock.js +107 -0
- package/examples/node_modules/webpack/lib/Dependency.js +348 -0
- package/examples/node_modules/webpack/lib/DependencyTemplate.js +57 -0
- package/examples/node_modules/webpack/lib/DependencyTemplates.js +67 -0
- package/examples/node_modules/webpack/lib/DllEntryPlugin.js +55 -0
- package/examples/node_modules/webpack/lib/DllModule.js +157 -0
- package/examples/node_modules/webpack/lib/DllModuleFactory.js +37 -0
- package/examples/node_modules/webpack/lib/DllPlugin.js +68 -0
- package/examples/node_modules/webpack/lib/DllReferencePlugin.js +162 -0
- package/examples/node_modules/webpack/lib/DynamicEntryPlugin.js +79 -0
- package/examples/node_modules/webpack/lib/EntryOptionPlugin.js +93 -0
- package/examples/node_modules/webpack/lib/EntryPlugin.js +67 -0
- package/examples/node_modules/webpack/lib/Entrypoint.js +101 -0
- package/examples/node_modules/webpack/lib/EnvironmentPlugin.js +63 -0
- package/examples/node_modules/webpack/lib/ErrorHelpers.js +61 -0
- package/examples/node_modules/webpack/lib/EvalDevToolModulePlugin.js +117 -0
- package/examples/node_modules/webpack/lib/EvalSourceMapDevToolPlugin.js +206 -0
- package/examples/node_modules/webpack/lib/ExportsInfo.js +1523 -0
- package/examples/node_modules/webpack/lib/ExportsInfoApiPlugin.js +71 -0
- package/examples/node_modules/webpack/lib/ExternalModule.js +758 -0
- package/examples/node_modules/webpack/lib/ExternalModuleFactoryPlugin.js +254 -0
- package/examples/node_modules/webpack/lib/ExternalsPlugin.js +37 -0
- package/examples/node_modules/webpack/lib/FileSystemInfo.js +3559 -0
- package/examples/node_modules/webpack/lib/FlagAllModulesAsUsedPlugin.js +55 -0
- package/examples/node_modules/webpack/lib/FlagDependencyExportsPlugin.js +417 -0
- package/examples/node_modules/webpack/lib/FlagDependencyUsagePlugin.js +347 -0
- package/examples/node_modules/webpack/lib/FlagEntryExportAsUsedPlugin.js +53 -0
- package/examples/node_modules/webpack/lib/Generator.js +149 -0
- package/examples/node_modules/webpack/lib/GraphHelpers.js +37 -0
- package/examples/node_modules/webpack/lib/HarmonyLinkingError.js +16 -0
- package/examples/node_modules/webpack/lib/HookWebpackError.js +93 -0
- package/examples/node_modules/webpack/lib/HotModuleReplacementPlugin.js +778 -0
- package/examples/node_modules/webpack/lib/HotUpdateChunk.js +19 -0
- package/examples/node_modules/webpack/lib/IgnoreErrorModuleFactory.js +39 -0
- package/examples/node_modules/webpack/lib/IgnorePlugin.js +83 -0
- package/examples/node_modules/webpack/lib/IgnoreWarningsPlugin.js +39 -0
- package/examples/node_modules/webpack/lib/InitFragment.js +161 -0
- package/examples/node_modules/webpack/lib/InvalidDependenciesModuleWarning.js +44 -0
- package/examples/node_modules/webpack/lib/JavascriptMetaInfoPlugin.js +68 -0
- package/examples/node_modules/webpack/lib/LibManifestPlugin.js +115 -0
- package/examples/node_modules/webpack/lib/LibraryTemplatePlugin.js +48 -0
- package/examples/node_modules/webpack/lib/LoaderOptionsPlugin.js +71 -0
- package/examples/node_modules/webpack/lib/LoaderTargetPlugin.js +37 -0
- package/examples/node_modules/webpack/lib/MainTemplate.js +329 -0
- package/examples/node_modules/webpack/lib/Module.js +1091 -0
- package/examples/node_modules/webpack/lib/ModuleBuildError.js +77 -0
- package/examples/node_modules/webpack/lib/ModuleDependencyError.js +40 -0
- package/examples/node_modules/webpack/lib/ModuleDependencyWarning.js +45 -0
- package/examples/node_modules/webpack/lib/ModuleError.js +61 -0
- package/examples/node_modules/webpack/lib/ModuleFactory.js +50 -0
- package/examples/node_modules/webpack/lib/ModuleFilenameHelpers.js +277 -0
- package/examples/node_modules/webpack/lib/ModuleGraph.js +856 -0
- package/examples/node_modules/webpack/lib/ModuleGraphConnection.js +191 -0
- package/examples/node_modules/webpack/lib/ModuleHashingError.js +29 -0
- package/examples/node_modules/webpack/lib/ModuleInfoHeaderPlugin.js +255 -0
- package/examples/node_modules/webpack/lib/ModuleNotFoundError.js +86 -0
- package/examples/node_modules/webpack/lib/ModuleParseError.js +109 -0
- package/examples/node_modules/webpack/lib/ModuleProfile.js +107 -0
- package/examples/node_modules/webpack/lib/ModuleRestoreError.js +42 -0
- package/examples/node_modules/webpack/lib/ModuleStoreError.js +42 -0
- package/examples/node_modules/webpack/lib/ModuleTemplate.js +142 -0
- package/examples/node_modules/webpack/lib/ModuleWarning.js +61 -0
- package/examples/node_modules/webpack/lib/MultiCompiler.js +582 -0
- package/examples/node_modules/webpack/lib/MultiStats.js +166 -0
- package/examples/node_modules/webpack/lib/MultiWatching.js +77 -0
- package/examples/node_modules/webpack/lib/NoEmitOnErrorsPlugin.js +28 -0
- package/examples/node_modules/webpack/lib/NoModeWarning.js +22 -0
- package/examples/node_modules/webpack/lib/NodeStuffInWebError.js +34 -0
- package/examples/node_modules/webpack/lib/NodeStuffPlugin.js +186 -0
- package/examples/node_modules/webpack/lib/NormalModule.js +1411 -0
- package/examples/node_modules/webpack/lib/NormalModuleFactory.js +1118 -0
- package/examples/node_modules/webpack/lib/NormalModuleReplacementPlugin.js +71 -0
- package/examples/node_modules/webpack/lib/NullFactory.js +23 -0
- package/examples/node_modules/webpack/lib/OptimizationStages.js +10 -0
- package/examples/node_modules/webpack/lib/OptionsApply.js +11 -0
- package/examples/node_modules/webpack/lib/Parser.js +38 -0
- package/examples/node_modules/webpack/lib/PrefetchPlugin.js +50 -0
- package/examples/node_modules/webpack/lib/ProgressPlugin.js +613 -0
- package/examples/node_modules/webpack/lib/ProvidePlugin.js +101 -0
- package/examples/node_modules/webpack/lib/RawModule.js +152 -0
- package/examples/node_modules/webpack/lib/RecordIdsPlugin.js +238 -0
- package/examples/node_modules/webpack/lib/RequestShortener.js +34 -0
- package/examples/node_modules/webpack/lib/RequireJsStuffPlugin.js +77 -0
- package/examples/node_modules/webpack/lib/ResolverFactory.js +151 -0
- package/examples/node_modules/webpack/lib/RuntimeGlobals.js +381 -0
- package/examples/node_modules/webpack/lib/RuntimeModule.js +213 -0
- package/examples/node_modules/webpack/lib/RuntimePlugin.js +444 -0
- package/examples/node_modules/webpack/lib/RuntimeTemplate.js +1041 -0
- package/examples/node_modules/webpack/lib/SelfModuleFactory.js +21 -0
- package/examples/node_modules/webpack/lib/SingleEntryPlugin.js +8 -0
- package/examples/node_modules/webpack/lib/SizeFormatHelpers.js +27 -0
- package/examples/node_modules/webpack/lib/SourceMapDevToolModuleOptionsPlugin.js +57 -0
- package/examples/node_modules/webpack/lib/SourceMapDevToolPlugin.js +560 -0
- package/examples/node_modules/webpack/lib/Stats.js +84 -0
- package/examples/node_modules/webpack/lib/Template.js +419 -0
- package/examples/node_modules/webpack/lib/TemplatedPathPlugin.js +346 -0
- package/examples/node_modules/webpack/lib/UnhandledSchemeError.js +33 -0
- package/examples/node_modules/webpack/lib/UnsupportedFeatureWarning.js +32 -0
- package/examples/node_modules/webpack/lib/UseStrictPlugin.js +56 -0
- package/examples/node_modules/webpack/lib/WarnCaseSensitiveModulesPlugin.js +53 -0
- package/examples/node_modules/webpack/lib/WarnDeprecatedOptionPlugin.js +54 -0
- package/examples/node_modules/webpack/lib/WarnNoModeSetPlugin.js +25 -0
- package/examples/node_modules/webpack/lib/WatchIgnorePlugin.js +132 -0
- package/examples/node_modules/webpack/lib/Watching.js +479 -0
- package/examples/node_modules/webpack/lib/WebpackError.js +61 -0
- package/examples/node_modules/webpack/lib/WebpackIsIncludedPlugin.js +85 -0
- package/examples/node_modules/webpack/lib/WebpackOptionsApply.js +700 -0
- package/examples/node_modules/webpack/lib/WebpackOptionsDefaulter.js +19 -0
- package/examples/node_modules/webpack/lib/asset/AssetGenerator.js +464 -0
- package/examples/node_modules/webpack/lib/asset/AssetModulesPlugin.js +223 -0
- package/examples/node_modules/webpack/lib/asset/AssetParser.js +56 -0
- package/examples/node_modules/webpack/lib/asset/AssetSourceGenerator.js +71 -0
- package/examples/node_modules/webpack/lib/asset/AssetSourceParser.js +31 -0
- package/examples/node_modules/webpack/lib/asset/RawDataUrlModule.js +148 -0
- package/examples/node_modules/webpack/lib/async-modules/AwaitDependenciesInitFragment.js +69 -0
- package/examples/node_modules/webpack/lib/async-modules/InferAsyncModulesPlugin.js +55 -0
- package/examples/node_modules/webpack/lib/buildChunkGraph.js +1401 -0
- package/examples/node_modules/webpack/lib/cache/AddBuildDependenciesPlugin.js +33 -0
- package/examples/node_modules/webpack/lib/cache/AddManagedPathsPlugin.js +35 -0
- package/examples/node_modules/webpack/lib/cache/IdleFileCachePlugin.js +227 -0
- package/examples/node_modules/webpack/lib/cache/MemoryCachePlugin.js +57 -0
- package/examples/node_modules/webpack/lib/cache/MemoryWithGcCachePlugin.js +129 -0
- package/examples/node_modules/webpack/lib/cache/PackFileCacheStrategy.js +1426 -0
- package/examples/node_modules/webpack/lib/cache/ResolverCachePlugin.js +354 -0
- package/examples/node_modules/webpack/lib/cache/getLazyHashedEtag.js +81 -0
- package/examples/node_modules/webpack/lib/cache/mergeEtags.js +74 -0
- package/examples/node_modules/webpack/lib/cli.js +655 -0
- package/examples/node_modules/webpack/lib/config/browserslistTargetHandler.js +333 -0
- package/examples/node_modules/webpack/lib/config/defaults.js +1309 -0
- package/examples/node_modules/webpack/lib/config/normalization.js +529 -0
- package/examples/node_modules/webpack/lib/config/target.js +348 -0
- package/examples/node_modules/webpack/lib/container/ContainerEntryDependency.js +47 -0
- package/examples/node_modules/webpack/lib/container/ContainerEntryModule.js +283 -0
- package/examples/node_modules/webpack/lib/container/ContainerEntryModuleFactory.js +27 -0
- package/examples/node_modules/webpack/lib/container/ContainerExposedDependency.js +52 -0
- package/examples/node_modules/webpack/lib/container/ContainerPlugin.js +105 -0
- package/examples/node_modules/webpack/lib/container/ContainerReferencePlugin.js +142 -0
- package/examples/node_modules/webpack/lib/container/FallbackDependency.js +51 -0
- package/examples/node_modules/webpack/lib/container/FallbackItemDependency.js +30 -0
- package/examples/node_modules/webpack/lib/container/FallbackModule.js +173 -0
- package/examples/node_modules/webpack/lib/container/FallbackModuleFactory.js +27 -0
- package/examples/node_modules/webpack/lib/container/ModuleFederationPlugin.js +92 -0
- package/examples/node_modules/webpack/lib/container/RemoteModule.js +171 -0
- package/examples/node_modules/webpack/lib/container/RemoteRuntimeModule.js +128 -0
- package/examples/node_modules/webpack/lib/container/RemoteToExternalDependency.js +30 -0
- package/examples/node_modules/webpack/lib/container/options.js +91 -0
- package/examples/node_modules/webpack/lib/css/CssExportsGenerator.js +139 -0
- package/examples/node_modules/webpack/lib/css/CssGenerator.js +109 -0
- package/examples/node_modules/webpack/lib/css/CssLoadingRuntimeModule.js +440 -0
- package/examples/node_modules/webpack/lib/css/CssModulesPlugin.js +462 -0
- package/examples/node_modules/webpack/lib/css/CssParser.js +618 -0
- package/examples/node_modules/webpack/lib/css/walkCssTokens.js +659 -0
- package/examples/node_modules/webpack/lib/debug/ProfilingPlugin.js +454 -0
- package/examples/node_modules/webpack/lib/dependencies/AMDDefineDependency.js +221 -0
- package/examples/node_modules/webpack/lib/dependencies/AMDDefineDependencyParserPlugin.js +354 -0
- package/examples/node_modules/webpack/lib/dependencies/AMDPlugin.js +216 -0
- package/examples/node_modules/webpack/lib/dependencies/AMDRequireArrayDependency.js +99 -0
- package/examples/node_modules/webpack/lib/dependencies/AMDRequireContextDependency.js +53 -0
- package/examples/node_modules/webpack/lib/dependencies/AMDRequireDependenciesBlock.js +22 -0
- package/examples/node_modules/webpack/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +279 -0
- package/examples/node_modules/webpack/lib/dependencies/AMDRequireDependency.js +174 -0
- package/examples/node_modules/webpack/lib/dependencies/AMDRequireItemDependency.js +35 -0
- package/examples/node_modules/webpack/lib/dependencies/AMDRuntimeModules.js +48 -0
- package/examples/node_modules/webpack/lib/dependencies/CachedConstDependency.js +106 -0
- package/examples/node_modules/webpack/lib/dependencies/CommonJsDependencyHelpers.js +49 -0
- package/examples/node_modules/webpack/lib/dependencies/CommonJsExportRequireDependency.js +374 -0
- package/examples/node_modules/webpack/lib/dependencies/CommonJsExportsDependency.js +160 -0
- package/examples/node_modules/webpack/lib/dependencies/CommonJsExportsParserPlugin.js +336 -0
- package/examples/node_modules/webpack/lib/dependencies/CommonJsFullRequireDependency.js +136 -0
- package/examples/node_modules/webpack/lib/dependencies/CommonJsImportsParserPlugin.js +388 -0
- package/examples/node_modules/webpack/lib/dependencies/CommonJsPlugin.js +280 -0
- package/examples/node_modules/webpack/lib/dependencies/CommonJsRequireContextDependency.js +55 -0
- package/examples/node_modules/webpack/lib/dependencies/CommonJsRequireDependency.js +34 -0
- package/examples/node_modules/webpack/lib/dependencies/CommonJsSelfReferenceDependency.js +141 -0
- package/examples/node_modules/webpack/lib/dependencies/ConstDependency.js +108 -0
- package/examples/node_modules/webpack/lib/dependencies/ContextDependency.js +147 -0
- package/examples/node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js +232 -0
- package/examples/node_modules/webpack/lib/dependencies/ContextDependencyTemplateAsId.js +61 -0
- package/examples/node_modules/webpack/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +59 -0
- package/examples/node_modules/webpack/lib/dependencies/ContextElementDependency.js +77 -0
- package/examples/node_modules/webpack/lib/dependencies/CreateScriptUrlDependency.js +66 -0
- package/examples/node_modules/webpack/lib/dependencies/CriticalDependencyWarning.js +25 -0
- package/examples/node_modules/webpack/lib/dependencies/CssExportDependency.js +85 -0
- package/examples/node_modules/webpack/lib/dependencies/CssImportDependency.js +75 -0
- package/examples/node_modules/webpack/lib/dependencies/CssLocalIdentifierDependency.js +119 -0
- package/examples/node_modules/webpack/lib/dependencies/CssSelfLocalIdentifierDependency.js +101 -0
- package/examples/node_modules/webpack/lib/dependencies/CssUrlDependency.js +132 -0
- package/examples/node_modules/webpack/lib/dependencies/DelegatedSourceDependency.js +30 -0
- package/examples/node_modules/webpack/lib/dependencies/DllEntryDependency.js +47 -0
- package/examples/node_modules/webpack/lib/dependencies/DynamicExports.js +69 -0
- package/examples/node_modules/webpack/lib/dependencies/EntryDependency.js +30 -0
- package/examples/node_modules/webpack/lib/dependencies/ExportsInfoDependency.js +143 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyAcceptDependency.js +134 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyAcceptImportDependency.js +37 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyCompatibilityDependency.js +91 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js +97 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyExportDependencyParserPlugin.js +185 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyExportExpressionDependency.js +190 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyExportHeaderDependency.js +65 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +1271 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyExportInitFragment.js +168 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyExportSpecifierDependency.js +111 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyExports.js +40 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyImportDependency.js +359 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyImportDependencyParserPlugin.js +256 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyImportSideEffectDependency.js +80 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyImportSpecifierDependency.js +331 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyModulesPlugin.js +121 -0
- package/examples/node_modules/webpack/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +27 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportContextDependency.js +52 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportDependency.js +101 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportEagerDependency.js +69 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportMetaContextDependency.js +35 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +252 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportMetaContextPlugin.js +59 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportMetaHotAcceptDependency.js +35 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportMetaHotDeclineDependency.js +36 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportMetaPlugin.js +203 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportParserPlugin.js +267 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportPlugin.js +82 -0
- package/examples/node_modules/webpack/lib/dependencies/ImportWeakDependency.js +67 -0
- package/examples/node_modules/webpack/lib/dependencies/JsonExportsDependency.js +103 -0
- package/examples/node_modules/webpack/lib/dependencies/LoaderDependency.js +27 -0
- package/examples/node_modules/webpack/lib/dependencies/LoaderImportDependency.js +28 -0
- package/examples/node_modules/webpack/lib/dependencies/LoaderPlugin.js +261 -0
- package/examples/node_modules/webpack/lib/dependencies/LocalModule.js +44 -0
- package/examples/node_modules/webpack/lib/dependencies/LocalModuleDependency.js +69 -0
- package/examples/node_modules/webpack/lib/dependencies/LocalModulesHelpers.js +50 -0
- package/examples/node_modules/webpack/lib/dependencies/ModuleDecoratorDependency.js +129 -0
- package/examples/node_modules/webpack/lib/dependencies/ModuleDependency.js +81 -0
- package/examples/node_modules/webpack/lib/dependencies/ModuleDependencyTemplateAsId.js +34 -0
- package/examples/node_modules/webpack/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +38 -0
- package/examples/node_modules/webpack/lib/dependencies/ModuleHotAcceptDependency.js +35 -0
- package/examples/node_modules/webpack/lib/dependencies/ModuleHotDeclineDependency.js +36 -0
- package/examples/node_modules/webpack/lib/dependencies/NullDependency.js +40 -0
- package/examples/node_modules/webpack/lib/dependencies/PrefetchDependency.js +24 -0
- package/examples/node_modules/webpack/lib/dependencies/ProvidedDependency.js +122 -0
- package/examples/node_modules/webpack/lib/dependencies/PureExpressionDependency.js +128 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireContextDependency.js +31 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireContextDependencyParserPlugin.js +58 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireContextPlugin.js +150 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireEnsureDependenciesBlock.js +22 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +121 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireEnsureDependency.js +101 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireEnsureItemDependency.js +33 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireEnsurePlugin.js +66 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireHeaderDependency.js +57 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireIncludeDependency.js +74 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireIncludeDependencyParserPlugin.js +77 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireIncludePlugin.js +42 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireResolveContextDependency.js +50 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireResolveDependency.js +51 -0
- package/examples/node_modules/webpack/lib/dependencies/RequireResolveHeaderDependency.js +63 -0
- package/examples/node_modules/webpack/lib/dependencies/RuntimeRequirementsDependency.js +77 -0
- package/examples/node_modules/webpack/lib/dependencies/StaticExportsDependency.js +66 -0
- package/examples/node_modules/webpack/lib/dependencies/SystemPlugin.js +140 -0
- package/examples/node_modules/webpack/lib/dependencies/SystemRuntimeModule.js +35 -0
- package/examples/node_modules/webpack/lib/dependencies/URLDependency.js +158 -0
- package/examples/node_modules/webpack/lib/dependencies/URLPlugin.js +114 -0
- package/examples/node_modules/webpack/lib/dependencies/UnsupportedDependency.js +69 -0
- package/examples/node_modules/webpack/lib/dependencies/WebAssemblyExportImportedDependency.js +79 -0
- package/examples/node_modules/webpack/lib/dependencies/WebAssemblyImportDependency.js +100 -0
- package/examples/node_modules/webpack/lib/dependencies/WebpackIsIncludedDependency.js +80 -0
- package/examples/node_modules/webpack/lib/dependencies/WorkerDependency.js +89 -0
- package/examples/node_modules/webpack/lib/dependencies/WorkerPlugin.js +416 -0
- package/examples/node_modules/webpack/lib/dependencies/getFunctionExpression.js +55 -0
- package/examples/node_modules/webpack/lib/dependencies/processExportInfo.js +65 -0
- package/examples/node_modules/webpack/lib/electron/ElectronTargetPlugin.js +68 -0
- package/examples/node_modules/webpack/lib/errors/BuildCycleError.js +27 -0
- package/examples/node_modules/webpack/lib/esm/ExportWebpackRequireRuntimeModule.js +29 -0
- package/examples/node_modules/webpack/lib/esm/ModuleChunkFormatPlugin.js +202 -0
- package/examples/node_modules/webpack/lib/esm/ModuleChunkLoadingPlugin.js +76 -0
- package/examples/node_modules/webpack/lib/esm/ModuleChunkLoadingRuntimeModule.js +242 -0
- package/examples/node_modules/webpack/lib/formatLocation.js +68 -0
- package/examples/node_modules/webpack/lib/hmr/HotModuleReplacement.runtime.js +394 -0
- package/examples/node_modules/webpack/lib/hmr/HotModuleReplacementRuntimeModule.js +42 -0
- package/examples/node_modules/webpack/lib/hmr/JavascriptHotModuleReplacement.runtime.js +462 -0
- package/examples/node_modules/webpack/lib/hmr/LazyCompilationPlugin.js +418 -0
- package/examples/node_modules/webpack/lib/hmr/lazyCompilationBackend.js +143 -0
- package/examples/node_modules/webpack/lib/ids/ChunkModuleIdRangePlugin.js +80 -0
- package/examples/node_modules/webpack/lib/ids/DeterministicChunkIdsPlugin.js +70 -0
- package/examples/node_modules/webpack/lib/ids/DeterministicModuleIdsPlugin.js +93 -0
- package/examples/node_modules/webpack/lib/ids/HashedModuleIdsPlugin.js +77 -0
- package/examples/node_modules/webpack/lib/ids/IdHelpers.js +477 -0
- package/examples/node_modules/webpack/lib/ids/NamedChunkIdsPlugin.js +81 -0
- package/examples/node_modules/webpack/lib/ids/NamedModuleIdsPlugin.js +58 -0
- package/examples/node_modules/webpack/lib/ids/NaturalChunkIdsPlugin.js +33 -0
- package/examples/node_modules/webpack/lib/ids/NaturalModuleIdsPlugin.js +39 -0
- package/examples/node_modules/webpack/lib/ids/OccurrenceChunkIdsPlugin.js +80 -0
- package/examples/node_modules/webpack/lib/ids/OccurrenceModuleIdsPlugin.js +159 -0
- package/examples/node_modules/webpack/lib/ids/SyncModuleIdsPlugin.js +140 -0
- package/examples/node_modules/webpack/lib/index.js +579 -0
- package/examples/node_modules/webpack/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +154 -0
- package/examples/node_modules/webpack/lib/javascript/BasicEvaluatedExpression.js +480 -0
- package/examples/node_modules/webpack/lib/javascript/ChunkHelpers.js +33 -0
- package/examples/node_modules/webpack/lib/javascript/CommonJsChunkFormatPlugin.js +172 -0
- package/examples/node_modules/webpack/lib/javascript/EnableChunkLoadingPlugin.js +118 -0
- package/examples/node_modules/webpack/lib/javascript/JavascriptGenerator.js +225 -0
- package/examples/node_modules/webpack/lib/javascript/JavascriptModulesPlugin.js +1370 -0
- package/examples/node_modules/webpack/lib/javascript/JavascriptParser.js +3776 -0
- package/examples/node_modules/webpack/lib/javascript/JavascriptParserHelpers.js +107 -0
- package/examples/node_modules/webpack/lib/javascript/StartupHelpers.js +132 -0
- package/examples/node_modules/webpack/lib/json/JsonData.js +41 -0
- package/examples/node_modules/webpack/lib/json/JsonGenerator.js +191 -0
- package/examples/node_modules/webpack/lib/json/JsonModulesPlugin.js +50 -0
- package/examples/node_modules/webpack/lib/json/JsonParser.js +57 -0
- package/examples/node_modules/webpack/lib/library/AbstractLibraryPlugin.js +297 -0
- package/examples/node_modules/webpack/lib/library/AmdLibraryPlugin.js +162 -0
- package/examples/node_modules/webpack/lib/library/AssignLibraryPlugin.js +375 -0
- package/examples/node_modules/webpack/lib/library/EnableLibraryPlugin.js +248 -0
- package/examples/node_modules/webpack/lib/library/ExportPropertyLibraryPlugin.js +113 -0
- package/examples/node_modules/webpack/lib/library/JsonpLibraryPlugin.js +88 -0
- package/examples/node_modules/webpack/lib/library/ModuleLibraryPlugin.js +104 -0
- package/examples/node_modules/webpack/lib/library/SystemLibraryPlugin.js +233 -0
- package/examples/node_modules/webpack/lib/library/UmdLibraryPlugin.js +324 -0
- package/examples/node_modules/webpack/lib/logging/Logger.js +163 -0
- package/examples/node_modules/webpack/lib/logging/createConsoleLogger.js +228 -0
- package/examples/node_modules/webpack/lib/logging/runtime.js +46 -0
- package/examples/node_modules/webpack/lib/logging/truncateArgs.js +82 -0
- package/examples/node_modules/webpack/lib/node/CommonJsChunkLoadingPlugin.js +105 -0
- package/examples/node_modules/webpack/lib/node/NodeEnvironmentPlugin.js +60 -0
- package/examples/node_modules/webpack/lib/node/NodeSourcePlugin.js +19 -0
- package/examples/node_modules/webpack/lib/node/NodeTargetPlugin.js +81 -0
- package/examples/node_modules/webpack/lib/node/NodeTemplatePlugin.js +33 -0
- package/examples/node_modules/webpack/lib/node/NodeWatchFileSystem.js +194 -0
- package/examples/node_modules/webpack/lib/node/ReadFileChunkLoadingRuntimeModule.js +291 -0
- package/examples/node_modules/webpack/lib/node/ReadFileCompileAsyncWasmPlugin.js +107 -0
- package/examples/node_modules/webpack/lib/node/ReadFileCompileWasmPlugin.js +93 -0
- package/examples/node_modules/webpack/lib/node/RequireChunkLoadingRuntimeModule.js +238 -0
- package/examples/node_modules/webpack/lib/node/nodeConsole.js +143 -0
- package/examples/node_modules/webpack/lib/optimize/AggressiveMergingPlugin.js +92 -0
- package/examples/node_modules/webpack/lib/optimize/AggressiveSplittingPlugin.js +329 -0
- package/examples/node_modules/webpack/lib/optimize/ConcatenatedModule.js +1879 -0
- package/examples/node_modules/webpack/lib/optimize/EnsureChunkConditionsPlugin.js +85 -0
- package/examples/node_modules/webpack/lib/optimize/FlagIncludedChunksPlugin.js +118 -0
- package/examples/node_modules/webpack/lib/optimize/InnerGraph.js +346 -0
- package/examples/node_modules/webpack/lib/optimize/InnerGraphPlugin.js +368 -0
- package/examples/node_modules/webpack/lib/optimize/LimitChunkCountPlugin.js +256 -0
- package/examples/node_modules/webpack/lib/optimize/MangleExportsPlugin.js +177 -0
- package/examples/node_modules/webpack/lib/optimize/MergeDuplicateChunksPlugin.js +115 -0
- package/examples/node_modules/webpack/lib/optimize/MinChunkSizePlugin.js +113 -0
- package/examples/node_modules/webpack/lib/optimize/MinMaxSizeWarning.js +30 -0
- package/examples/node_modules/webpack/lib/optimize/ModuleConcatenationPlugin.js +866 -0
- package/examples/node_modules/webpack/lib/optimize/RealContentHashPlugin.js +408 -0
- package/examples/node_modules/webpack/lib/optimize/RemoveEmptyChunksPlugin.js +57 -0
- package/examples/node_modules/webpack/lib/optimize/RemoveParentModulesPlugin.js +121 -0
- package/examples/node_modules/webpack/lib/optimize/RuntimeChunkPlugin.js +44 -0
- package/examples/node_modules/webpack/lib/optimize/SideEffectsFlagPlugin.js +337 -0
- package/examples/node_modules/webpack/lib/optimize/SplitChunksPlugin.js +1723 -0
- package/examples/node_modules/webpack/lib/performance/AssetsOverSizeLimitWarning.js +32 -0
- package/examples/node_modules/webpack/lib/performance/EntrypointsOverSizeLimitWarning.js +35 -0
- package/examples/node_modules/webpack/lib/performance/NoAsyncChunksWarning.js +20 -0
- package/examples/node_modules/webpack/lib/performance/SizeLimitsPlugin.js +165 -0
- package/examples/node_modules/webpack/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +44 -0
- package/examples/node_modules/webpack/lib/prefetch/ChunkPrefetchPreloadPlugin.js +95 -0
- package/examples/node_modules/webpack/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +52 -0
- package/examples/node_modules/webpack/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +49 -0
- package/examples/node_modules/webpack/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +43 -0
- package/examples/node_modules/webpack/lib/rules/BasicEffectRulePlugin.js +39 -0
- package/examples/node_modules/webpack/lib/rules/BasicMatcherRulePlugin.js +47 -0
- package/examples/node_modules/webpack/lib/rules/ObjectMatcherRulePlugin.js +47 -0
- package/examples/node_modules/webpack/lib/rules/RuleSetCompiler.js +379 -0
- package/examples/node_modules/webpack/lib/rules/UseEffectRulePlugin.js +194 -0
- package/examples/node_modules/webpack/lib/runtime/AsyncModuleRuntimeModule.js +156 -0
- package/examples/node_modules/webpack/lib/runtime/AutoPublicPathRuntimeModule.js +69 -0
- package/examples/node_modules/webpack/lib/runtime/ChunkNameRuntimeModule.js +27 -0
- package/examples/node_modules/webpack/lib/runtime/CompatGetDefaultExportRuntimeModule.js +37 -0
- package/examples/node_modules/webpack/lib/runtime/CompatRuntimeModule.js +78 -0
- package/examples/node_modules/webpack/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +66 -0
- package/examples/node_modules/webpack/lib/runtime/CreateScriptRuntimeModule.js +36 -0
- package/examples/node_modules/webpack/lib/runtime/CreateScriptUrlRuntimeModule.js +36 -0
- package/examples/node_modules/webpack/lib/runtime/DefinePropertyGettersRuntimeModule.js +39 -0
- package/examples/node_modules/webpack/lib/runtime/EnsureChunkRuntimeModule.js +54 -0
- package/examples/node_modules/webpack/lib/runtime/GetChunkFilenameRuntimeModule.js +282 -0
- package/examples/node_modules/webpack/lib/runtime/GetFullHashRuntimeModule.js +29 -0
- package/examples/node_modules/webpack/lib/runtime/GetMainFilenameRuntimeModule.js +44 -0
- package/examples/node_modules/webpack/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +76 -0
- package/examples/node_modules/webpack/lib/runtime/GlobalRuntimeModule.js +47 -0
- package/examples/node_modules/webpack/lib/runtime/HasOwnPropertyRuntimeModule.js +32 -0
- package/examples/node_modules/webpack/lib/runtime/HelperRuntimeModule.js +18 -0
- package/examples/node_modules/webpack/lib/runtime/LoadScriptRuntimeModule.js +158 -0
- package/examples/node_modules/webpack/lib/runtime/MakeNamespaceObjectRuntimeModule.js +36 -0
- package/examples/node_modules/webpack/lib/runtime/OnChunksLoadedRuntimeModule.js +76 -0
- package/examples/node_modules/webpack/lib/runtime/PublicPathRuntimeModule.js +30 -0
- package/examples/node_modules/webpack/lib/runtime/RelativeUrlRuntimeModule.js +41 -0
- package/examples/node_modules/webpack/lib/runtime/RuntimeIdRuntimeModule.js +28 -0
- package/examples/node_modules/webpack/lib/runtime/StartupChunkDependenciesPlugin.js +74 -0
- package/examples/node_modules/webpack/lib/runtime/StartupChunkDependenciesRuntimeModule.js +67 -0
- package/examples/node_modules/webpack/lib/runtime/StartupEntrypointRuntimeModule.js +50 -0
- package/examples/node_modules/webpack/lib/runtime/SystemContextRuntimeModule.js +25 -0
- package/examples/node_modules/webpack/lib/schemes/DataUriPlugin.js +56 -0
- package/examples/node_modules/webpack/lib/schemes/FileUriPlugin.js +49 -0
- package/examples/node_modules/webpack/lib/schemes/HttpUriPlugin.js +1118 -0
- package/examples/node_modules/webpack/lib/serialization/ArraySerializer.js +22 -0
- package/examples/node_modules/webpack/lib/serialization/BinaryMiddleware.js +950 -0
- package/examples/node_modules/webpack/lib/serialization/DateObjectSerializer.js +16 -0
- package/examples/node_modules/webpack/lib/serialization/ErrorObjectSerializer.js +27 -0
- package/examples/node_modules/webpack/lib/serialization/FileMiddleware.js +665 -0
- package/examples/node_modules/webpack/lib/serialization/MapObjectSerializer.js +31 -0
- package/examples/node_modules/webpack/lib/serialization/NullPrototypeObjectSerializer.js +33 -0
- package/examples/node_modules/webpack/lib/serialization/ObjectMiddleware.js +734 -0
- package/examples/node_modules/webpack/lib/serialization/PlainObjectSerializer.js +80 -0
- package/examples/node_modules/webpack/lib/serialization/RegExpObjectSerializer.js +17 -0
- package/examples/node_modules/webpack/lib/serialization/Serializer.js +46 -0
- package/examples/node_modules/webpack/lib/serialization/SerializerMiddleware.js +153 -0
- package/examples/node_modules/webpack/lib/serialization/SetObjectSerializer.js +24 -0
- package/examples/node_modules/webpack/lib/serialization/SingleItemMiddleware.js +34 -0
- package/examples/node_modules/webpack/lib/serialization/types.js +13 -0
- package/examples/node_modules/webpack/lib/sharing/ConsumeSharedFallbackDependency.js +30 -0
- package/examples/node_modules/webpack/lib/sharing/ConsumeSharedModule.js +251 -0
- package/examples/node_modules/webpack/lib/sharing/ConsumeSharedPlugin.js +319 -0
- package/examples/node_modules/webpack/lib/sharing/ConsumeSharedRuntimeModule.js +360 -0
- package/examples/node_modules/webpack/lib/sharing/ProvideForSharedDependency.js +34 -0
- package/examples/node_modules/webpack/lib/sharing/ProvideSharedDependency.js +63 -0
- package/examples/node_modules/webpack/lib/sharing/ProvideSharedModule.js +184 -0
- package/examples/node_modules/webpack/lib/sharing/ProvideSharedModuleFactory.js +35 -0
- package/examples/node_modules/webpack/lib/sharing/ProvideSharedPlugin.js +237 -0
- package/examples/node_modules/webpack/lib/sharing/SharePlugin.js +92 -0
- package/examples/node_modules/webpack/lib/sharing/ShareRuntimeModule.js +141 -0
- package/examples/node_modules/webpack/lib/sharing/resolveMatchedConfigs.js +91 -0
- package/examples/node_modules/webpack/lib/sharing/utils.js +90 -0
- package/examples/node_modules/webpack/lib/stats/DefaultStatsFactoryPlugin.js +2398 -0
- package/examples/node_modules/webpack/lib/stats/DefaultStatsPresetPlugin.js +326 -0
- package/examples/node_modules/webpack/lib/stats/DefaultStatsPrinterPlugin.js +1380 -0
- package/examples/node_modules/webpack/lib/stats/StatsFactory.js +292 -0
- package/examples/node_modules/webpack/lib/stats/StatsPrinter.js +249 -0
- package/examples/node_modules/webpack/lib/util/ArrayHelpers.js +44 -0
- package/examples/node_modules/webpack/lib/util/ArrayQueue.js +111 -0
- package/examples/node_modules/webpack/lib/util/AsyncQueue.js +373 -0
- package/examples/node_modules/webpack/lib/util/Hash.js +35 -0
- package/examples/node_modules/webpack/lib/util/IterableHelpers.js +46 -0
- package/examples/node_modules/webpack/lib/util/LazyBucketSortedSet.js +236 -0
- package/examples/node_modules/webpack/lib/util/LazySet.js +208 -0
- package/examples/node_modules/webpack/lib/util/MapHelpers.js +22 -0
- package/examples/node_modules/webpack/lib/util/ParallelismFactorCalculator.js +59 -0
- package/examples/node_modules/webpack/lib/util/Queue.js +51 -0
- package/examples/node_modules/webpack/lib/util/Semaphore.js +54 -0
- package/examples/node_modules/webpack/lib/util/SetHelpers.js +94 -0
- package/examples/node_modules/webpack/lib/util/SortableSet.js +160 -0
- package/examples/node_modules/webpack/lib/util/StackedCacheMap.js +110 -0
- package/examples/node_modules/webpack/lib/util/StackedMap.js +166 -0
- package/examples/node_modules/webpack/lib/util/StringXor.js +55 -0
- package/examples/node_modules/webpack/lib/util/TupleQueue.js +61 -0
- package/examples/node_modules/webpack/lib/util/TupleSet.js +150 -0
- package/examples/node_modules/webpack/lib/util/URLAbsoluteSpecifier.js +87 -0
- package/examples/node_modules/webpack/lib/util/WeakTupleMap.js +171 -0
- package/examples/node_modules/webpack/lib/util/binarySearchBounds.js +86 -0
- package/examples/node_modules/webpack/lib/util/cleverMerge.js +568 -0
- package/examples/node_modules/webpack/lib/util/comparators.js +459 -0
- package/examples/node_modules/webpack/lib/util/compileBooleanMatcher.js +206 -0
- package/examples/node_modules/webpack/lib/util/create-schema-validation.js +28 -0
- package/examples/node_modules/webpack/lib/util/createHash.js +171 -0
- package/examples/node_modules/webpack/lib/util/deprecation.js +264 -0
- package/examples/node_modules/webpack/lib/util/deterministicGrouping.js +508 -0
- package/examples/node_modules/webpack/lib/util/extractUrlAndGlobal.js +18 -0
- package/examples/node_modules/webpack/lib/util/findGraphRoots.js +229 -0
- package/examples/node_modules/webpack/lib/util/fs.js +337 -0
- package/examples/node_modules/webpack/lib/util/hash/BatchedHash.js +68 -0
- package/examples/node_modules/webpack/lib/util/hash/md4.js +20 -0
- package/examples/node_modules/webpack/lib/util/hash/wasm-hash.js +163 -0
- package/examples/node_modules/webpack/lib/util/hash/xxhash64.js +20 -0
- package/examples/node_modules/webpack/lib/util/identifier.js +377 -0
- package/examples/node_modules/webpack/lib/util/internalSerializables.js +211 -0
- package/examples/node_modules/webpack/lib/util/makeSerializable.js +30 -0
- package/examples/node_modules/webpack/lib/util/memoize.js +32 -0
- package/examples/node_modules/webpack/lib/util/nonNumericOnlyHash.js +22 -0
- package/examples/node_modules/webpack/lib/util/numberHash.js +45 -0
- package/examples/node_modules/webpack/lib/util/objectToMap.js +15 -0
- package/examples/node_modules/webpack/lib/util/processAsyncTree.js +62 -0
- package/examples/node_modules/webpack/lib/util/propertyAccess.js +78 -0
- package/examples/node_modules/webpack/lib/util/registerExternalSerializer.js +337 -0
- package/examples/node_modules/webpack/lib/util/runtime.js +623 -0
- package/examples/node_modules/webpack/lib/util/semver.js +484 -0
- package/examples/node_modules/webpack/lib/util/serialization.js +128 -0
- package/examples/node_modules/webpack/lib/util/smartGrouping.js +206 -0
- package/examples/node_modules/webpack/lib/util/source.js +61 -0
- package/examples/node_modules/webpack/lib/validateSchema.js +175 -0
- package/examples/node_modules/webpack/lib/wasm/EnableWasmLoadingPlugin.js +118 -0
- package/examples/node_modules/webpack/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +78 -0
- package/examples/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyGenerator.js +53 -0
- package/examples/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +194 -0
- package/examples/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +198 -0
- package/examples/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyParser.js +75 -0
- package/examples/node_modules/webpack/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +16 -0
- package/examples/node_modules/webpack/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +372 -0
- package/examples/node_modules/webpack/lib/wasm-sync/WasmFinalizeExportsPlugin.js +82 -0
- package/examples/node_modules/webpack/lib/wasm-sync/WebAssemblyGenerator.js +501 -0
- package/examples/node_modules/webpack/lib/wasm-sync/WebAssemblyInInitialChunkError.js +106 -0
- package/examples/node_modules/webpack/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +216 -0
- package/examples/node_modules/webpack/lib/wasm-sync/WebAssemblyModulesPlugin.js +142 -0
- package/examples/node_modules/webpack/lib/wasm-sync/WebAssemblyParser.js +192 -0
- package/examples/node_modules/webpack/lib/wasm-sync/WebAssemblyUtils.js +65 -0
- package/examples/node_modules/webpack/lib/web/FetchCompileAsyncWasmPlugin.js +62 -0
- package/examples/node_modules/webpack/lib/web/FetchCompileWasmPlugin.js +71 -0
- package/examples/node_modules/webpack/lib/web/JsonpChunkLoadingPlugin.js +91 -0
- package/examples/node_modules/webpack/lib/web/JsonpChunkLoadingRuntimeModule.js +450 -0
- package/examples/node_modules/webpack/lib/web/JsonpTemplatePlugin.js +38 -0
- package/examples/node_modules/webpack/lib/webpack.js +171 -0
- package/examples/node_modules/webpack/lib/webworker/ImportScriptsChunkLoadingPlugin.js +94 -0
- package/examples/node_modules/webpack/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +238 -0
- package/examples/node_modules/webpack/lib/webworker/WebWorkerTemplatePlugin.js +25 -0
- package/examples/node_modules/webpack/module.d.ts +215 -0
- package/examples/node_modules/webpack/package.json +242 -0
- package/examples/node_modules/webpack/schemas/WebpackOptions.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/WebpackOptions.check.js +6 -0
- package/examples/node_modules/webpack/schemas/WebpackOptions.json +5321 -0
- package/examples/node_modules/webpack/schemas/_container.json +155 -0
- package/examples/node_modules/webpack/schemas/_sharing.json +118 -0
- package/examples/node_modules/webpack/schemas/plugins/BannerPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/BannerPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/BannerPlugin.json +103 -0
- package/examples/node_modules/webpack/schemas/plugins/DllPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/DllPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/DllPlugin.json +36 -0
- package/examples/node_modules/webpack/schemas/plugins/DllReferencePlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/DllReferencePlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/DllReferencePlugin.json +206 -0
- package/examples/node_modules/webpack/schemas/plugins/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/HashedModuleIdsPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/HashedModuleIdsPlugin.json +44 -0
- package/examples/node_modules/webpack/schemas/plugins/IgnorePlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/IgnorePlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/IgnorePlugin.json +34 -0
- package/examples/node_modules/webpack/schemas/plugins/JsonModulesPluginParser.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/JsonModulesPluginParser.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/JsonModulesPluginParser.json +12 -0
- package/examples/node_modules/webpack/schemas/plugins/LoaderOptionsPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/LoaderOptionsPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/LoaderOptionsPlugin.json +27 -0
- package/examples/node_modules/webpack/schemas/plugins/ProgressPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/ProgressPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/ProgressPlugin.json +65 -0
- package/examples/node_modules/webpack/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/SourceMapDevToolPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/SourceMapDevToolPlugin.json +143 -0
- package/examples/node_modules/webpack/schemas/plugins/WatchIgnorePlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/WatchIgnorePlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/WatchIgnorePlugin.json +25 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetGeneratorOptions.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetGeneratorOptions.json +3 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetInlineGeneratorOptions.json +3 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetParserOptions.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetParserOptions.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetParserOptions.json +3 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/asset/AssetResourceGeneratorOptions.json +3 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ContainerPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ContainerPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ContainerPlugin.json +286 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ContainerReferencePlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ContainerReferencePlugin.json +128 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ExternalsType.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ExternalsType.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ExternalsType.json +3 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ModuleFederationPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/container/ModuleFederationPlugin.json +513 -0
- package/examples/node_modules/webpack/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/examples/node_modules/webpack/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/css/CssParserOptions.json +3 -0
- package/examples/node_modules/webpack/schemas/plugins/debug/ProfilingPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/debug/ProfilingPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/debug/ProfilingPlugin.json +12 -0
- package/examples/node_modules/webpack/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/ids/OccurrenceChunkIdsPlugin.json +11 -0
- package/examples/node_modules/webpack/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/ids/OccurrenceModuleIdsPlugin.json +11 -0
- package/examples/node_modules/webpack/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/optimize/AggressiveSplittingPlugin.json +23 -0
- package/examples/node_modules/webpack/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/optimize/LimitChunkCountPlugin.json +21 -0
- package/examples/node_modules/webpack/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/optimize/MinChunkSizePlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/optimize/MinChunkSizePlugin.json +20 -0
- package/examples/node_modules/webpack/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/schemes/HttpUriPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/schemes/HttpUriPlugin.json +74 -0
- package/examples/node_modules/webpack/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/sharing/ConsumeSharedPlugin.json +120 -0
- package/examples/node_modules/webpack/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/sharing/ProvideSharedPlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/sharing/ProvideSharedPlugin.json +94 -0
- package/examples/node_modules/webpack/schemas/plugins/sharing/SharePlugin.check.d.ts +7 -0
- package/examples/node_modules/webpack/schemas/plugins/sharing/SharePlugin.check.js +6 -0
- package/examples/node_modules/webpack/schemas/plugins/sharing/SharePlugin.json +133 -0
- package/examples/node_modules/webpack/types.d.ts +13072 -0
- package/examples/node_modules/webpack-cli/README.md +45 -14
- package/examples/node_modules/webpack-cli/bin/cli.js +9 -32
- package/examples/node_modules/webpack-cli/lib/bootstrap.js +12 -15
- package/examples/node_modules/webpack-cli/lib/index.js +3 -3
- package/examples/node_modules/webpack-cli/lib/plugins/CLIPlugin.js +101 -68
- package/examples/node_modules/webpack-cli/lib/utils/dynamic-import-loader.js +7 -7
- package/examples/node_modules/webpack-cli/lib/webpack-cli.js +2093 -1553
- package/examples/node_modules/webpack-cli/node_modules/commander/CHANGELOG.md +440 -0
- package/examples/node_modules/webpack-cli/node_modules/commander/LICENSE +22 -0
- package/examples/node_modules/webpack-cli/node_modules/commander/Readme.md +917 -0
- package/examples/node_modules/{commander → webpack-cli/node_modules/commander}/esm.mjs +0 -0
- package/examples/node_modules/webpack-cli/node_modules/commander/index.js +2217 -0
- package/examples/node_modules/{commander → webpack-cli/node_modules/commander}/package-support.json +0 -0
- package/examples/node_modules/webpack-cli/node_modules/commander/package.json +68 -0
- package/examples/node_modules/webpack-cli/node_modules/commander/typings/index.d.ts +627 -0
- package/examples/node_modules/webpack-cli/package.json +30 -63
- package/examples/node_modules/webpack-merge/CHANGELOG.md +5 -0
- package/examples/node_modules/webpack-merge/README.md +3 -3
- package/examples/node_modules/webpack-merge/dist/index.d.ts +4 -4
- package/examples/node_modules/webpack-merge/dist/index.js +8 -7
- package/examples/node_modules/webpack-merge/dist/index.js.map +1 -1
- package/examples/node_modules/webpack-merge/dist/join-arrays.js +7 -6
- package/examples/node_modules/webpack-merge/dist/join-arrays.js.map +1 -1
- package/examples/node_modules/webpack-merge/dist/types.d.ts +1 -0
- package/examples/node_modules/webpack-merge/dist/unique.js +5 -4
- package/examples/node_modules/webpack-merge/dist/unique.js.map +1 -1
- package/examples/node_modules/webpack-merge/dist/utils.d.ts +1 -1
- package/examples/node_modules/webpack-merge/package.json +37 -65
- package/examples/node_modules/webpack-sources/LICENSE +21 -0
- package/examples/node_modules/webpack-sources/README.md +228 -0
- package/examples/node_modules/webpack-sources/lib/CachedSource.js +274 -0
- package/examples/node_modules/webpack-sources/lib/CompatSource.js +66 -0
- package/examples/node_modules/webpack-sources/lib/ConcatSource.js +319 -0
- package/examples/node_modules/webpack-sources/lib/OriginalSource.js +135 -0
- package/examples/node_modules/webpack-sources/lib/PrefixSource.js +114 -0
- package/examples/node_modules/webpack-sources/lib/RawSource.js +81 -0
- package/examples/node_modules/webpack-sources/lib/ReplaceSource.js +467 -0
- package/examples/node_modules/webpack-sources/lib/SizeOnlySource.js +42 -0
- package/examples/node_modules/webpack-sources/lib/Source.js +38 -0
- package/examples/node_modules/webpack-sources/lib/SourceMapSource.js +247 -0
- package/examples/node_modules/webpack-sources/lib/helpers/createMappingsSerializer.js +206 -0
- package/examples/node_modules/webpack-sources/lib/helpers/getFromStreamChunks.js +129 -0
- package/examples/node_modules/webpack-sources/lib/helpers/getGeneratedSourceInfo.js +33 -0
- package/examples/node_modules/webpack-sources/lib/helpers/getName.js +14 -0
- package/examples/node_modules/webpack-sources/lib/helpers/getSource.js +17 -0
- package/examples/node_modules/webpack-sources/lib/helpers/readMappings.js +116 -0
- package/examples/node_modules/webpack-sources/lib/helpers/splitIntoLines.js +21 -0
- package/examples/node_modules/webpack-sources/lib/helpers/splitIntoPotentialTokens.js +41 -0
- package/examples/node_modules/webpack-sources/lib/helpers/streamAndGetSourceAndMap.js +102 -0
- package/examples/node_modules/webpack-sources/lib/helpers/streamChunks.js +36 -0
- package/examples/node_modules/webpack-sources/lib/helpers/streamChunksOfCombinedSourceMap.js +329 -0
- package/examples/node_modules/webpack-sources/lib/helpers/streamChunksOfRawSource.js +34 -0
- package/examples/node_modules/webpack-sources/lib/helpers/streamChunksOfSourceMap.js +412 -0
- package/examples/node_modules/webpack-sources/lib/index.js +30 -0
- package/examples/node_modules/webpack-sources/package.json +58 -0
- package/examples/node_modules/which/package.json +22 -55
- package/examples/node_modules/wildcard/package.json +22 -51
- package/lib/browser/math.js +6 -6
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/expression/embeddedDocs/function/matrix/forEach.js +1 -1
- package/lib/cjs/expression/node/FunctionNode.js +30 -8
- package/lib/cjs/function/arithmetic/sign.js +4 -0
- package/lib/cjs/function/string/format.js +3 -0
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/unit/Unit.js +67 -79
- package/lib/cjs/utils/string.js +17 -4
- package/lib/cjs/version.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/matrix/forEach.js +1 -1
- package/lib/esm/expression/node/FunctionNode.js +29 -9
- package/lib/esm/function/arithmetic/sign.js +4 -0
- package/lib/esm/function/string/format.js +3 -0
- package/lib/esm/type/unit/Unit.js +67 -79
- package/lib/esm/utils/string.js +18 -4
- package/lib/esm/version.js +1 -1
- package/package.json +2 -2
- package/examples/node_modules/@discoveryjs/json-ext/CHANGELOG.md +0 -42
- package/examples/node_modules/@webpack-cli/configtest/CHANGELOG.md +0 -18
- package/examples/node_modules/@webpack-cli/configtest/LICENSE +0 -20
- package/examples/node_modules/@webpack-cli/info/CHANGELOG.md +0 -61
- package/examples/node_modules/@webpack-cli/info/LICENSE +0 -20
- package/examples/node_modules/@webpack-cli/serve/CHANGELOG.md +0 -93
- package/examples/node_modules/@webpack-cli/serve/LICENSE +0 -20
- package/examples/node_modules/@webpack-cli/serve/lib/startDevServer.d.ts +0 -12
- package/examples/node_modules/@webpack-cli/serve/lib/startDevServer.js +0 -113
- package/examples/node_modules/ansi-colors/LICENSE +0 -21
- package/examples/node_modules/ansi-colors/README.md +0 -315
- package/examples/node_modules/ansi-colors/index.js +0 -177
- package/examples/node_modules/ansi-colors/package.json +0 -152
- package/examples/node_modules/ansi-colors/symbols.js +0 -70
- package/examples/node_modules/ansi-colors/types/index.d.ts +0 -161
- package/examples/node_modules/enquirer/CHANGELOG.md +0 -135
- package/examples/node_modules/enquirer/LICENSE +0 -21
- package/examples/node_modules/enquirer/README.md +0 -1752
- package/examples/node_modules/enquirer/index.d.ts +0 -151
- package/examples/node_modules/enquirer/index.js +0 -250
- package/examples/node_modules/enquirer/lib/ansi.js +0 -116
- package/examples/node_modules/enquirer/lib/combos.js +0 -75
- package/examples/node_modules/enquirer/lib/completer.js +0 -52
- package/examples/node_modules/enquirer/lib/interpolate.js +0 -266
- package/examples/node_modules/enquirer/lib/keypress.js +0 -243
- package/examples/node_modules/enquirer/lib/placeholder.js +0 -63
- package/examples/node_modules/enquirer/lib/prompt.js +0 -485
- package/examples/node_modules/enquirer/lib/prompts/autocomplete.js +0 -113
- package/examples/node_modules/enquirer/lib/prompts/basicauth.js +0 -41
- package/examples/node_modules/enquirer/lib/prompts/confirm.js +0 -13
- package/examples/node_modules/enquirer/lib/prompts/editable.js +0 -136
- package/examples/node_modules/enquirer/lib/prompts/form.js +0 -196
- package/examples/node_modules/enquirer/lib/prompts/index.js +0 -28
- package/examples/node_modules/enquirer/lib/prompts/input.js +0 -55
- package/examples/node_modules/enquirer/lib/prompts/invisible.js +0 -11
- package/examples/node_modules/enquirer/lib/prompts/list.js +0 -36
- package/examples/node_modules/enquirer/lib/prompts/multiselect.js +0 -11
- package/examples/node_modules/enquirer/lib/prompts/numeral.js +0 -1
- package/examples/node_modules/enquirer/lib/prompts/password.js +0 -18
- package/examples/node_modules/enquirer/lib/prompts/quiz.js +0 -37
- package/examples/node_modules/enquirer/lib/prompts/scale.js +0 -237
- package/examples/node_modules/enquirer/lib/prompts/select.js +0 -139
- package/examples/node_modules/enquirer/lib/prompts/snippet.js +0 -185
- package/examples/node_modules/enquirer/lib/prompts/sort.js +0 -37
- package/examples/node_modules/enquirer/lib/prompts/survey.js +0 -163
- package/examples/node_modules/enquirer/lib/prompts/text.js +0 -1
- package/examples/node_modules/enquirer/lib/prompts/toggle.js +0 -109
- package/examples/node_modules/enquirer/lib/render.js +0 -33
- package/examples/node_modules/enquirer/lib/roles.js +0 -46
- package/examples/node_modules/enquirer/lib/state.js +0 -69
- package/examples/node_modules/enquirer/lib/styles.js +0 -144
- package/examples/node_modules/enquirer/lib/symbols.js +0 -66
- package/examples/node_modules/enquirer/lib/theme.js +0 -11
- package/examples/node_modules/enquirer/lib/timer.js +0 -38
- package/examples/node_modules/enquirer/lib/types/array.js +0 -658
- package/examples/node_modules/enquirer/lib/types/auth.js +0 -29
- package/examples/node_modules/enquirer/lib/types/boolean.js +0 -88
- package/examples/node_modules/enquirer/lib/types/index.js +0 -7
- package/examples/node_modules/enquirer/lib/types/number.js +0 -86
- package/examples/node_modules/enquirer/lib/types/string.js +0 -185
- package/examples/node_modules/enquirer/lib/utils.js +0 -268
- package/examples/node_modules/enquirer/package.json +0 -148
- package/examples/node_modules/is-core-module/.eslintignore +0 -1
- package/examples/node_modules/is-core-module/.github/FUNDING.yml +0 -12
- package/examples/node_modules/is-core-module/.github/workflows/node-4+.yml +0 -54
- package/examples/node_modules/is-core-module/.github/workflows/node-iojs.yml +0 -58
- package/examples/node_modules/is-core-module/.github/workflows/node-pretest.yml +0 -26
- package/examples/node_modules/is-core-module/.github/workflows/node-zero.yml +0 -58
- package/examples/node_modules/is-core-module/.github/workflows/rebase.yml +0 -15
- package/examples/node_modules/is-core-module/.github/workflows/require-allow-edits.yml +0 -14
- package/examples/node_modules/path-parse/.travis.yml +0 -9
- package/examples/node_modules/path-parse/test.js +0 -77
- package/examples/node_modules/resolve/.eslintignore +0 -1
- package/examples/node_modules/resolve/test/.eslintrc +0 -5
- package/examples/node_modules/signal-exit/CHANGELOG.md +0 -35
- package/examples/node_modules/v8-compile-cache/CHANGELOG.md +0 -53
- package/examples/node_modules/v8-compile-cache/LICENSE +0 -21
- package/examples/node_modules/v8-compile-cache/README.md +0 -55
- package/examples/node_modules/v8-compile-cache/package.json +0 -66
- package/examples/node_modules/v8-compile-cache/v8-compile-cache.js +0 -371
- package/examples/node_modules/webpack-cli/CHANGELOG.md +0 -501
- package/examples/node_modules/webpack-cli/LICENSE +0 -20
- package/examples/node_modules/webpack-cli/lib/utils/__tests__/get-package-manager.test.js +0 -108
- package/examples/node_modules/webpack-cli/lib/utils/__tests__/prompt-installation.test.js +0 -118
- package/examples/node_modules/webpack-cli/lib/utils/capitalize-first-letter.js +0 -9
- package/examples/node_modules/webpack-cli/lib/utils/get-package-manager.js +0 -65
- package/examples/node_modules/webpack-cli/lib/utils/index.js +0 -49
- package/examples/node_modules/webpack-cli/lib/utils/logger.js +0 -11
- package/examples/node_modules/webpack-cli/lib/utils/package-exists.js +0 -9
- package/examples/node_modules/webpack-cli/lib/utils/prompt-installation.js +0 -58
- package/examples/node_modules/webpack-cli/lib/utils/run-command.js +0 -13
- package/examples/node_modules/webpack-cli/lib/utils/to-kebab-case.js +0 -5
@@ -0,0 +1,4667 @@
|
|
1
|
+
/***********************************************************************
|
2
|
+
|
3
|
+
A JavaScript tokenizer / parser / beautifier / compressor.
|
4
|
+
https://github.com/mishoo/UglifyJS2
|
5
|
+
|
6
|
+
-------------------------------- (C) ---------------------------------
|
7
|
+
|
8
|
+
Author: Mihai Bazon
|
9
|
+
<mihai.bazon@gmail.com>
|
10
|
+
http://mihai.bazon.net/blog
|
11
|
+
|
12
|
+
Distributed under the BSD license:
|
13
|
+
|
14
|
+
Copyright 2012 (c) Mihai Bazon <mihai.bazon@gmail.com>
|
15
|
+
|
16
|
+
Redistribution and use in source and binary forms, with or without
|
17
|
+
modification, are permitted provided that the following conditions
|
18
|
+
are met:
|
19
|
+
|
20
|
+
* Redistributions of source code must retain the above
|
21
|
+
copyright notice, this list of conditions and the following
|
22
|
+
disclaimer.
|
23
|
+
|
24
|
+
* Redistributions in binary form must reproduce the above
|
25
|
+
copyright notice, this list of conditions and the following
|
26
|
+
disclaimer in the documentation and/or other materials
|
27
|
+
provided with the distribution.
|
28
|
+
|
29
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
|
30
|
+
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
31
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
32
|
+
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
|
33
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
34
|
+
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
35
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
36
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
37
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
38
|
+
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
39
|
+
THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
40
|
+
SUCH DAMAGE.
|
41
|
+
|
42
|
+
***********************************************************************/
|
43
|
+
|
44
|
+
import {
|
45
|
+
AST_Accessor,
|
46
|
+
AST_Array,
|
47
|
+
AST_Arrow,
|
48
|
+
AST_Assign,
|
49
|
+
AST_BigInt,
|
50
|
+
AST_Binary,
|
51
|
+
AST_Block,
|
52
|
+
AST_BlockStatement,
|
53
|
+
AST_Boolean,
|
54
|
+
AST_Break,
|
55
|
+
AST_Call,
|
56
|
+
AST_Catch,
|
57
|
+
AST_Chain,
|
58
|
+
AST_Class,
|
59
|
+
AST_ClassExpression,
|
60
|
+
AST_ClassProperty,
|
61
|
+
AST_ConciseMethod,
|
62
|
+
AST_Conditional,
|
63
|
+
AST_Const,
|
64
|
+
AST_Constant,
|
65
|
+
AST_Debugger,
|
66
|
+
AST_Default,
|
67
|
+
AST_DefaultAssign,
|
68
|
+
AST_DefClass,
|
69
|
+
AST_Definitions,
|
70
|
+
AST_Defun,
|
71
|
+
AST_Destructuring,
|
72
|
+
AST_Directive,
|
73
|
+
AST_Do,
|
74
|
+
AST_Dot,
|
75
|
+
AST_DWLoop,
|
76
|
+
AST_EmptyStatement,
|
77
|
+
AST_Exit,
|
78
|
+
AST_Expansion,
|
79
|
+
AST_Export,
|
80
|
+
AST_False,
|
81
|
+
AST_For,
|
82
|
+
AST_ForIn,
|
83
|
+
AST_Function,
|
84
|
+
AST_Hole,
|
85
|
+
AST_If,
|
86
|
+
AST_Import,
|
87
|
+
AST_Infinity,
|
88
|
+
AST_IterationStatement,
|
89
|
+
AST_LabeledStatement,
|
90
|
+
AST_Lambda,
|
91
|
+
AST_Let,
|
92
|
+
AST_NaN,
|
93
|
+
AST_New,
|
94
|
+
AST_Node,
|
95
|
+
AST_Null,
|
96
|
+
AST_Number,
|
97
|
+
AST_Object,
|
98
|
+
AST_ObjectKeyVal,
|
99
|
+
AST_ObjectProperty,
|
100
|
+
AST_PrefixedTemplateString,
|
101
|
+
AST_PropAccess,
|
102
|
+
AST_RegExp,
|
103
|
+
AST_Return,
|
104
|
+
AST_Scope,
|
105
|
+
AST_Sequence,
|
106
|
+
AST_SimpleStatement,
|
107
|
+
AST_Statement,
|
108
|
+
AST_String,
|
109
|
+
AST_Sub,
|
110
|
+
AST_Switch,
|
111
|
+
AST_SwitchBranch,
|
112
|
+
AST_Symbol,
|
113
|
+
AST_SymbolBlockDeclaration,
|
114
|
+
AST_SymbolCatch,
|
115
|
+
AST_SymbolClassProperty,
|
116
|
+
AST_SymbolDeclaration,
|
117
|
+
AST_SymbolDefun,
|
118
|
+
AST_SymbolExport,
|
119
|
+
AST_SymbolFunarg,
|
120
|
+
AST_SymbolLambda,
|
121
|
+
AST_SymbolLet,
|
122
|
+
AST_SymbolMethod,
|
123
|
+
AST_SymbolRef,
|
124
|
+
AST_SymbolVar,
|
125
|
+
AST_TemplateString,
|
126
|
+
AST_This,
|
127
|
+
AST_Toplevel,
|
128
|
+
AST_True,
|
129
|
+
AST_Try,
|
130
|
+
AST_Unary,
|
131
|
+
AST_UnaryPostfix,
|
132
|
+
AST_UnaryPrefix,
|
133
|
+
AST_Undefined,
|
134
|
+
AST_Var,
|
135
|
+
AST_VarDef,
|
136
|
+
AST_While,
|
137
|
+
AST_With,
|
138
|
+
AST_Yield,
|
139
|
+
|
140
|
+
TreeTransformer,
|
141
|
+
TreeWalker,
|
142
|
+
walk,
|
143
|
+
walk_abort,
|
144
|
+
walk_parent,
|
145
|
+
|
146
|
+
_INLINE,
|
147
|
+
_NOINLINE,
|
148
|
+
_PURE
|
149
|
+
} from "../ast.js";
|
150
|
+
import {
|
151
|
+
defaults,
|
152
|
+
HOP,
|
153
|
+
keep_name,
|
154
|
+
make_node,
|
155
|
+
makePredicate,
|
156
|
+
map_add,
|
157
|
+
MAP,
|
158
|
+
member,
|
159
|
+
remove,
|
160
|
+
return_false,
|
161
|
+
return_true,
|
162
|
+
regexp_source_fix,
|
163
|
+
has_annotation
|
164
|
+
} from "../utils/index.js";
|
165
|
+
import { first_in_statement } from "../utils/first_in_statement.js";
|
166
|
+
import { equivalent_to } from "../equivalent-to.js";
|
167
|
+
import {
|
168
|
+
is_basic_identifier_string,
|
169
|
+
JS_Parse_Error,
|
170
|
+
parse,
|
171
|
+
PRECEDENCE,
|
172
|
+
} from "../parse.js";
|
173
|
+
import { OutputStream } from "../output.js";
|
174
|
+
import {
|
175
|
+
base54,
|
176
|
+
SymbolDef,
|
177
|
+
} from "../scope.js";
|
178
|
+
import "../size.js";
|
179
|
+
|
180
|
+
import "./evaluate.js";
|
181
|
+
import "./drop-side-effect-free.js";
|
182
|
+
import "./reduce-vars.js";
|
183
|
+
import {
|
184
|
+
is_undeclared_ref,
|
185
|
+
lazy_op,
|
186
|
+
is_nullish,
|
187
|
+
is_undefined,
|
188
|
+
is_lhs,
|
189
|
+
aborts,
|
190
|
+
} from "./inference.js";
|
191
|
+
import {
|
192
|
+
SQUEEZED,
|
193
|
+
OPTIMIZED,
|
194
|
+
INLINED,
|
195
|
+
CLEAR_BETWEEN_PASSES,
|
196
|
+
TOP,
|
197
|
+
WRITE_ONLY,
|
198
|
+
UNDEFINED,
|
199
|
+
UNUSED,
|
200
|
+
TRUTHY,
|
201
|
+
FALSY,
|
202
|
+
|
203
|
+
has_flag,
|
204
|
+
set_flag,
|
205
|
+
clear_flag,
|
206
|
+
} from "./compressor-flags.js";
|
207
|
+
import {
|
208
|
+
make_sequence,
|
209
|
+
best_of,
|
210
|
+
best_of_expression,
|
211
|
+
make_node_from_constant,
|
212
|
+
merge_sequence,
|
213
|
+
get_simple_key,
|
214
|
+
has_break_or_continue,
|
215
|
+
maintain_this_binding,
|
216
|
+
identifier_atom,
|
217
|
+
is_identifier_atom,
|
218
|
+
is_func_expr,
|
219
|
+
is_ref_of,
|
220
|
+
can_be_evicted_from_block,
|
221
|
+
as_statement_array,
|
222
|
+
is_iife_call,
|
223
|
+
is_recursive_ref
|
224
|
+
} from "./common.js";
|
225
|
+
import { tighten_body, trim_unreachable_code } from "./tighten-body.js";
|
226
|
+
|
227
|
+
class Compressor extends TreeWalker {
|
228
|
+
constructor(options, { false_by_default = false, mangle_options = false }) {
|
229
|
+
super();
|
230
|
+
if (options.defaults !== undefined && !options.defaults) false_by_default = true;
|
231
|
+
this.options = defaults(options, {
|
232
|
+
arguments : false,
|
233
|
+
arrows : !false_by_default,
|
234
|
+
booleans : !false_by_default,
|
235
|
+
booleans_as_integers : false,
|
236
|
+
collapse_vars : !false_by_default,
|
237
|
+
comparisons : !false_by_default,
|
238
|
+
computed_props: !false_by_default,
|
239
|
+
conditionals : !false_by_default,
|
240
|
+
dead_code : !false_by_default,
|
241
|
+
defaults : true,
|
242
|
+
directives : !false_by_default,
|
243
|
+
drop_console : false,
|
244
|
+
drop_debugger : !false_by_default,
|
245
|
+
ecma : 5,
|
246
|
+
evaluate : !false_by_default,
|
247
|
+
expression : false,
|
248
|
+
global_defs : false,
|
249
|
+
hoist_funs : false,
|
250
|
+
hoist_props : !false_by_default,
|
251
|
+
hoist_vars : false,
|
252
|
+
ie8 : false,
|
253
|
+
if_return : !false_by_default,
|
254
|
+
inline : !false_by_default,
|
255
|
+
join_vars : !false_by_default,
|
256
|
+
keep_classnames: false,
|
257
|
+
keep_fargs : true,
|
258
|
+
keep_fnames : false,
|
259
|
+
keep_infinity : false,
|
260
|
+
loops : !false_by_default,
|
261
|
+
module : false,
|
262
|
+
negate_iife : !false_by_default,
|
263
|
+
passes : 1,
|
264
|
+
properties : !false_by_default,
|
265
|
+
pure_getters : !false_by_default && "strict",
|
266
|
+
pure_funcs : null,
|
267
|
+
reduce_funcs : !false_by_default,
|
268
|
+
reduce_vars : !false_by_default,
|
269
|
+
sequences : !false_by_default,
|
270
|
+
side_effects : !false_by_default,
|
271
|
+
switches : !false_by_default,
|
272
|
+
top_retain : null,
|
273
|
+
toplevel : !!(options && options["top_retain"]),
|
274
|
+
typeofs : !false_by_default,
|
275
|
+
unsafe : false,
|
276
|
+
unsafe_arrows : false,
|
277
|
+
unsafe_comps : false,
|
278
|
+
unsafe_Function: false,
|
279
|
+
unsafe_math : false,
|
280
|
+
unsafe_symbols: false,
|
281
|
+
unsafe_methods: false,
|
282
|
+
unsafe_proto : false,
|
283
|
+
unsafe_regexp : false,
|
284
|
+
unsafe_undefined: false,
|
285
|
+
unused : !false_by_default,
|
286
|
+
warnings : false // legacy
|
287
|
+
}, true);
|
288
|
+
var global_defs = this.options["global_defs"];
|
289
|
+
if (typeof global_defs == "object") for (var key in global_defs) {
|
290
|
+
if (key[0] === "@" && HOP(global_defs, key)) {
|
291
|
+
global_defs[key.slice(1)] = parse(global_defs[key], {
|
292
|
+
expression: true
|
293
|
+
});
|
294
|
+
}
|
295
|
+
}
|
296
|
+
if (this.options["inline"] === true) this.options["inline"] = 3;
|
297
|
+
var pure_funcs = this.options["pure_funcs"];
|
298
|
+
if (typeof pure_funcs == "function") {
|
299
|
+
this.pure_funcs = pure_funcs;
|
300
|
+
} else {
|
301
|
+
this.pure_funcs = pure_funcs ? function(node) {
|
302
|
+
return !pure_funcs.includes(node.expression.print_to_string());
|
303
|
+
} : return_true;
|
304
|
+
}
|
305
|
+
var top_retain = this.options["top_retain"];
|
306
|
+
if (top_retain instanceof RegExp) {
|
307
|
+
this.top_retain = function(def) {
|
308
|
+
return top_retain.test(def.name);
|
309
|
+
};
|
310
|
+
} else if (typeof top_retain == "function") {
|
311
|
+
this.top_retain = top_retain;
|
312
|
+
} else if (top_retain) {
|
313
|
+
if (typeof top_retain == "string") {
|
314
|
+
top_retain = top_retain.split(/,/);
|
315
|
+
}
|
316
|
+
this.top_retain = function(def) {
|
317
|
+
return top_retain.includes(def.name);
|
318
|
+
};
|
319
|
+
}
|
320
|
+
if (this.options["module"]) {
|
321
|
+
this.directives["use strict"] = true;
|
322
|
+
this.options["toplevel"] = true;
|
323
|
+
}
|
324
|
+
var toplevel = this.options["toplevel"];
|
325
|
+
this.toplevel = typeof toplevel == "string" ? {
|
326
|
+
funcs: /funcs/.test(toplevel),
|
327
|
+
vars: /vars/.test(toplevel)
|
328
|
+
} : {
|
329
|
+
funcs: toplevel,
|
330
|
+
vars: toplevel
|
331
|
+
};
|
332
|
+
var sequences = this.options["sequences"];
|
333
|
+
this.sequences_limit = sequences == 1 ? 800 : sequences | 0;
|
334
|
+
this.evaluated_regexps = new Map();
|
335
|
+
this._toplevel = undefined;
|
336
|
+
this.mangle_options = mangle_options;
|
337
|
+
}
|
338
|
+
|
339
|
+
option(key) {
|
340
|
+
return this.options[key];
|
341
|
+
}
|
342
|
+
|
343
|
+
exposed(def) {
|
344
|
+
if (def.export) return true;
|
345
|
+
if (def.global) for (var i = 0, len = def.orig.length; i < len; i++)
|
346
|
+
if (!this.toplevel[def.orig[i] instanceof AST_SymbolDefun ? "funcs" : "vars"])
|
347
|
+
return true;
|
348
|
+
return false;
|
349
|
+
}
|
350
|
+
|
351
|
+
in_boolean_context() {
|
352
|
+
if (!this.option("booleans")) return false;
|
353
|
+
var self = this.self();
|
354
|
+
for (var i = 0, p; p = this.parent(i); i++) {
|
355
|
+
if (p instanceof AST_SimpleStatement
|
356
|
+
|| p instanceof AST_Conditional && p.condition === self
|
357
|
+
|| p instanceof AST_DWLoop && p.condition === self
|
358
|
+
|| p instanceof AST_For && p.condition === self
|
359
|
+
|| p instanceof AST_If && p.condition === self
|
360
|
+
|| p instanceof AST_UnaryPrefix && p.operator == "!" && p.expression === self) {
|
361
|
+
return true;
|
362
|
+
}
|
363
|
+
if (
|
364
|
+
p instanceof AST_Binary
|
365
|
+
&& (
|
366
|
+
p.operator == "&&"
|
367
|
+
|| p.operator == "||"
|
368
|
+
|| p.operator == "??"
|
369
|
+
)
|
370
|
+
|| p instanceof AST_Conditional
|
371
|
+
|| p.tail_node() === self
|
372
|
+
) {
|
373
|
+
self = p;
|
374
|
+
} else {
|
375
|
+
return false;
|
376
|
+
}
|
377
|
+
}
|
378
|
+
}
|
379
|
+
|
380
|
+
get_toplevel() {
|
381
|
+
return this._toplevel;
|
382
|
+
}
|
383
|
+
|
384
|
+
compress(toplevel) {
|
385
|
+
toplevel = toplevel.resolve_defines(this);
|
386
|
+
this._toplevel = toplevel;
|
387
|
+
if (this.option("expression")) {
|
388
|
+
this._toplevel.process_expression(true);
|
389
|
+
}
|
390
|
+
var passes = +this.options.passes || 1;
|
391
|
+
var min_count = 1 / 0;
|
392
|
+
var stopping = false;
|
393
|
+
var nth_identifier = this.mangle_options && this.mangle_options.nth_identifier || base54;
|
394
|
+
var mangle = { ie8: this.option("ie8"), nth_identifier: nth_identifier };
|
395
|
+
for (var pass = 0; pass < passes; pass++) {
|
396
|
+
this._toplevel.figure_out_scope(mangle);
|
397
|
+
if (pass === 0 && this.option("drop_console")) {
|
398
|
+
// must be run before reduce_vars and compress pass
|
399
|
+
this._toplevel = this._toplevel.drop_console();
|
400
|
+
}
|
401
|
+
if (pass > 0 || this.option("reduce_vars")) {
|
402
|
+
this._toplevel.reset_opt_flags(this);
|
403
|
+
}
|
404
|
+
this._toplevel = this._toplevel.transform(this);
|
405
|
+
if (passes > 1) {
|
406
|
+
let count = 0;
|
407
|
+
walk(this._toplevel, () => { count++; });
|
408
|
+
if (count < min_count) {
|
409
|
+
min_count = count;
|
410
|
+
stopping = false;
|
411
|
+
} else if (stopping) {
|
412
|
+
break;
|
413
|
+
} else {
|
414
|
+
stopping = true;
|
415
|
+
}
|
416
|
+
}
|
417
|
+
}
|
418
|
+
if (this.option("expression")) {
|
419
|
+
this._toplevel.process_expression(false);
|
420
|
+
}
|
421
|
+
toplevel = this._toplevel;
|
422
|
+
this._toplevel = undefined;
|
423
|
+
return toplevel;
|
424
|
+
}
|
425
|
+
|
426
|
+
before(node, descend) {
|
427
|
+
if (has_flag(node, SQUEEZED)) return node;
|
428
|
+
var was_scope = false;
|
429
|
+
if (node instanceof AST_Scope) {
|
430
|
+
node = node.hoist_properties(this);
|
431
|
+
node = node.hoist_declarations(this);
|
432
|
+
was_scope = true;
|
433
|
+
}
|
434
|
+
// Before https://github.com/mishoo/UglifyJS2/pull/1602 AST_Node.optimize()
|
435
|
+
// would call AST_Node.transform() if a different instance of AST_Node is
|
436
|
+
// produced after def_optimize().
|
437
|
+
// This corrupts TreeWalker.stack, which cause AST look-ups to malfunction.
|
438
|
+
// Migrate and defer all children's AST_Node.transform() to below, which
|
439
|
+
// will now happen after this parent AST_Node has been properly substituted
|
440
|
+
// thus gives a consistent AST snapshot.
|
441
|
+
descend(node, this);
|
442
|
+
// Existing code relies on how AST_Node.optimize() worked, and omitting the
|
443
|
+
// following replacement call would result in degraded efficiency of both
|
444
|
+
// output and performance.
|
445
|
+
descend(node, this);
|
446
|
+
var opt = node.optimize(this);
|
447
|
+
if (was_scope && opt instanceof AST_Scope) {
|
448
|
+
opt.drop_unused(this);
|
449
|
+
descend(opt, this);
|
450
|
+
}
|
451
|
+
if (opt === node) set_flag(opt, SQUEEZED);
|
452
|
+
return opt;
|
453
|
+
}
|
454
|
+
}
|
455
|
+
|
456
|
+
function def_optimize(node, optimizer) {
|
457
|
+
node.DEFMETHOD("optimize", function(compressor) {
|
458
|
+
var self = this;
|
459
|
+
if (has_flag(self, OPTIMIZED)) return self;
|
460
|
+
if (compressor.has_directive("use asm")) return self;
|
461
|
+
var opt = optimizer(self, compressor);
|
462
|
+
set_flag(opt, OPTIMIZED);
|
463
|
+
return opt;
|
464
|
+
});
|
465
|
+
}
|
466
|
+
|
467
|
+
def_optimize(AST_Node, function(self) {
|
468
|
+
return self;
|
469
|
+
});
|
470
|
+
|
471
|
+
AST_Toplevel.DEFMETHOD("drop_console", function() {
|
472
|
+
return this.transform(new TreeTransformer(function(self) {
|
473
|
+
if (self.TYPE == "Call") {
|
474
|
+
var exp = self.expression;
|
475
|
+
if (exp instanceof AST_PropAccess) {
|
476
|
+
var name = exp.expression;
|
477
|
+
while (name.expression) {
|
478
|
+
name = name.expression;
|
479
|
+
}
|
480
|
+
if (is_undeclared_ref(name) && name.name == "console") {
|
481
|
+
return make_node(AST_Undefined, self);
|
482
|
+
}
|
483
|
+
}
|
484
|
+
}
|
485
|
+
}));
|
486
|
+
});
|
487
|
+
|
488
|
+
AST_Node.DEFMETHOD("equivalent_to", function(node) {
|
489
|
+
return equivalent_to(this, node);
|
490
|
+
});
|
491
|
+
|
492
|
+
AST_Scope.DEFMETHOD("process_expression", function(insert, compressor) {
|
493
|
+
var self = this;
|
494
|
+
var tt = new TreeTransformer(function(node) {
|
495
|
+
if (insert && node instanceof AST_SimpleStatement) {
|
496
|
+
return make_node(AST_Return, node, {
|
497
|
+
value: node.body
|
498
|
+
});
|
499
|
+
}
|
500
|
+
if (!insert && node instanceof AST_Return) {
|
501
|
+
if (compressor) {
|
502
|
+
var value = node.value && node.value.drop_side_effect_free(compressor, true);
|
503
|
+
return value
|
504
|
+
? make_node(AST_SimpleStatement, node, { body: value })
|
505
|
+
: make_node(AST_EmptyStatement, node);
|
506
|
+
}
|
507
|
+
return make_node(AST_SimpleStatement, node, {
|
508
|
+
body: node.value || make_node(AST_UnaryPrefix, node, {
|
509
|
+
operator: "void",
|
510
|
+
expression: make_node(AST_Number, node, {
|
511
|
+
value: 0
|
512
|
+
})
|
513
|
+
})
|
514
|
+
});
|
515
|
+
}
|
516
|
+
if (node instanceof AST_Class || node instanceof AST_Lambda && node !== self) {
|
517
|
+
return node;
|
518
|
+
}
|
519
|
+
if (node instanceof AST_Block) {
|
520
|
+
var index = node.body.length - 1;
|
521
|
+
if (index >= 0) {
|
522
|
+
node.body[index] = node.body[index].transform(tt);
|
523
|
+
}
|
524
|
+
} else if (node instanceof AST_If) {
|
525
|
+
node.body = node.body.transform(tt);
|
526
|
+
if (node.alternative) {
|
527
|
+
node.alternative = node.alternative.transform(tt);
|
528
|
+
}
|
529
|
+
} else if (node instanceof AST_With) {
|
530
|
+
node.body = node.body.transform(tt);
|
531
|
+
}
|
532
|
+
return node;
|
533
|
+
});
|
534
|
+
self.transform(tt);
|
535
|
+
});
|
536
|
+
|
537
|
+
AST_Toplevel.DEFMETHOD("reset_opt_flags", function(compressor) {
|
538
|
+
const self = this;
|
539
|
+
const reduce_vars = compressor.option("reduce_vars");
|
540
|
+
|
541
|
+
const preparation = new TreeWalker(function(node, descend) {
|
542
|
+
clear_flag(node, CLEAR_BETWEEN_PASSES);
|
543
|
+
if (reduce_vars) {
|
544
|
+
if (compressor.top_retain
|
545
|
+
&& node instanceof AST_Defun // Only functions are retained
|
546
|
+
&& preparation.parent() === self
|
547
|
+
) {
|
548
|
+
set_flag(node, TOP);
|
549
|
+
}
|
550
|
+
return node.reduce_vars(preparation, descend, compressor);
|
551
|
+
}
|
552
|
+
});
|
553
|
+
// Stack of look-up tables to keep track of whether a `SymbolDef` has been
|
554
|
+
// properly assigned before use:
|
555
|
+
// - `push()` & `pop()` when visiting conditional branches
|
556
|
+
preparation.safe_ids = Object.create(null);
|
557
|
+
preparation.in_loop = null;
|
558
|
+
preparation.loop_ids = new Map();
|
559
|
+
preparation.defs_to_safe_ids = new Map();
|
560
|
+
self.walk(preparation);
|
561
|
+
});
|
562
|
+
|
563
|
+
AST_Symbol.DEFMETHOD("fixed_value", function() {
|
564
|
+
var fixed = this.thedef.fixed;
|
565
|
+
if (!fixed || fixed instanceof AST_Node) return fixed;
|
566
|
+
return fixed();
|
567
|
+
});
|
568
|
+
|
569
|
+
AST_SymbolRef.DEFMETHOD("is_immutable", function() {
|
570
|
+
var orig = this.definition().orig;
|
571
|
+
return orig.length == 1 && orig[0] instanceof AST_SymbolLambda;
|
572
|
+
});
|
573
|
+
|
574
|
+
function find_scope(tw) {
|
575
|
+
for (let i = 0;;i++) {
|
576
|
+
const p = tw.parent(i);
|
577
|
+
if (p instanceof AST_Toplevel) return p;
|
578
|
+
if (p instanceof AST_Lambda) return p;
|
579
|
+
if (p.block_scope) return p.block_scope;
|
580
|
+
}
|
581
|
+
}
|
582
|
+
|
583
|
+
function find_variable(compressor, name) {
|
584
|
+
var scope, i = 0;
|
585
|
+
while (scope = compressor.parent(i++)) {
|
586
|
+
if (scope instanceof AST_Scope) break;
|
587
|
+
if (scope instanceof AST_Catch && scope.argname) {
|
588
|
+
scope = scope.argname.definition().scope;
|
589
|
+
break;
|
590
|
+
}
|
591
|
+
}
|
592
|
+
return scope.find_variable(name);
|
593
|
+
}
|
594
|
+
|
595
|
+
function is_empty(thing) {
|
596
|
+
if (thing === null) return true;
|
597
|
+
if (thing instanceof AST_EmptyStatement) return true;
|
598
|
+
if (thing instanceof AST_BlockStatement) return thing.body.length == 0;
|
599
|
+
return false;
|
600
|
+
}
|
601
|
+
|
602
|
+
var global_names = makePredicate("Array Boolean clearInterval clearTimeout console Date decodeURI decodeURIComponent encodeURI encodeURIComponent Error escape eval EvalError Function isFinite isNaN JSON Math Number parseFloat parseInt RangeError ReferenceError RegExp Object setInterval setTimeout String SyntaxError TypeError unescape URIError");
|
603
|
+
AST_SymbolRef.DEFMETHOD("is_declared", function(compressor) {
|
604
|
+
return !this.definition().undeclared
|
605
|
+
|| compressor.option("unsafe") && global_names.has(this.name);
|
606
|
+
});
|
607
|
+
|
608
|
+
/* -----[ optimizers ]----- */
|
609
|
+
|
610
|
+
var directives = new Set(["use asm", "use strict"]);
|
611
|
+
def_optimize(AST_Directive, function(self, compressor) {
|
612
|
+
if (compressor.option("directives")
|
613
|
+
&& (!directives.has(self.value) || compressor.has_directive(self.value) !== self)) {
|
614
|
+
return make_node(AST_EmptyStatement, self);
|
615
|
+
}
|
616
|
+
return self;
|
617
|
+
});
|
618
|
+
|
619
|
+
def_optimize(AST_Debugger, function(self, compressor) {
|
620
|
+
if (compressor.option("drop_debugger"))
|
621
|
+
return make_node(AST_EmptyStatement, self);
|
622
|
+
return self;
|
623
|
+
});
|
624
|
+
|
625
|
+
def_optimize(AST_LabeledStatement, function(self, compressor) {
|
626
|
+
if (self.body instanceof AST_Break
|
627
|
+
&& compressor.loopcontrol_target(self.body) === self.body) {
|
628
|
+
return make_node(AST_EmptyStatement, self);
|
629
|
+
}
|
630
|
+
return self.label.references.length == 0 ? self.body : self;
|
631
|
+
});
|
632
|
+
|
633
|
+
def_optimize(AST_Block, function(self, compressor) {
|
634
|
+
tighten_body(self.body, compressor);
|
635
|
+
return self;
|
636
|
+
});
|
637
|
+
|
638
|
+
function can_be_extracted_from_if_block(node) {
|
639
|
+
return !(
|
640
|
+
node instanceof AST_Const
|
641
|
+
|| node instanceof AST_Let
|
642
|
+
|| node instanceof AST_Class
|
643
|
+
);
|
644
|
+
}
|
645
|
+
|
646
|
+
def_optimize(AST_BlockStatement, function(self, compressor) {
|
647
|
+
tighten_body(self.body, compressor);
|
648
|
+
switch (self.body.length) {
|
649
|
+
case 1:
|
650
|
+
if (!compressor.has_directive("use strict")
|
651
|
+
&& compressor.parent() instanceof AST_If
|
652
|
+
&& can_be_extracted_from_if_block(self.body[0])
|
653
|
+
|| can_be_evicted_from_block(self.body[0])) {
|
654
|
+
return self.body[0];
|
655
|
+
}
|
656
|
+
break;
|
657
|
+
case 0: return make_node(AST_EmptyStatement, self);
|
658
|
+
}
|
659
|
+
return self;
|
660
|
+
});
|
661
|
+
|
662
|
+
function opt_AST_Lambda(self, compressor) {
|
663
|
+
tighten_body(self.body, compressor);
|
664
|
+
if (compressor.option("side_effects")
|
665
|
+
&& self.body.length == 1
|
666
|
+
&& self.body[0] === compressor.has_directive("use strict")) {
|
667
|
+
self.body.length = 0;
|
668
|
+
}
|
669
|
+
return self;
|
670
|
+
}
|
671
|
+
def_optimize(AST_Lambda, opt_AST_Lambda);
|
672
|
+
|
673
|
+
const r_keep_assign = /keep_assign/;
|
674
|
+
AST_Scope.DEFMETHOD("drop_unused", function(compressor) {
|
675
|
+
if (!compressor.option("unused")) return;
|
676
|
+
if (compressor.has_directive("use asm")) return;
|
677
|
+
var self = this;
|
678
|
+
if (self.pinned()) return;
|
679
|
+
var drop_funcs = !(self instanceof AST_Toplevel) || compressor.toplevel.funcs;
|
680
|
+
var drop_vars = !(self instanceof AST_Toplevel) || compressor.toplevel.vars;
|
681
|
+
const assign_as_unused = r_keep_assign.test(compressor.option("unused")) ? return_false : function(node) {
|
682
|
+
if (node instanceof AST_Assign
|
683
|
+
&& !node.logical
|
684
|
+
&& (has_flag(node, WRITE_ONLY) || node.operator == "=")
|
685
|
+
) {
|
686
|
+
return node.left;
|
687
|
+
}
|
688
|
+
if (node instanceof AST_Unary && has_flag(node, WRITE_ONLY)) {
|
689
|
+
return node.expression;
|
690
|
+
}
|
691
|
+
};
|
692
|
+
var in_use_ids = new Map();
|
693
|
+
var fixed_ids = new Map();
|
694
|
+
if (self instanceof AST_Toplevel && compressor.top_retain) {
|
695
|
+
self.variables.forEach(function(def) {
|
696
|
+
if (compressor.top_retain(def) && !in_use_ids.has(def.id)) {
|
697
|
+
in_use_ids.set(def.id, def);
|
698
|
+
}
|
699
|
+
});
|
700
|
+
}
|
701
|
+
var var_defs_by_id = new Map();
|
702
|
+
var initializations = new Map();
|
703
|
+
// pass 1: find out which symbols are directly used in
|
704
|
+
// this scope (not in nested scopes).
|
705
|
+
var scope = this;
|
706
|
+
var tw = new TreeWalker(function(node, descend) {
|
707
|
+
if (node instanceof AST_Lambda && node.uses_arguments && !tw.has_directive("use strict")) {
|
708
|
+
node.argnames.forEach(function(argname) {
|
709
|
+
if (!(argname instanceof AST_SymbolDeclaration)) return;
|
710
|
+
var def = argname.definition();
|
711
|
+
if (!in_use_ids.has(def.id)) {
|
712
|
+
in_use_ids.set(def.id, def);
|
713
|
+
}
|
714
|
+
});
|
715
|
+
}
|
716
|
+
if (node === self) return;
|
717
|
+
if (node instanceof AST_Defun || node instanceof AST_DefClass) {
|
718
|
+
var node_def = node.name.definition();
|
719
|
+
const in_export = tw.parent() instanceof AST_Export;
|
720
|
+
if (in_export || !drop_funcs && scope === self) {
|
721
|
+
if (node_def.global && !in_use_ids.has(node_def.id)) {
|
722
|
+
in_use_ids.set(node_def.id, node_def);
|
723
|
+
}
|
724
|
+
}
|
725
|
+
if (node instanceof AST_DefClass) {
|
726
|
+
if (
|
727
|
+
node.extends
|
728
|
+
&& (node.extends.has_side_effects(compressor)
|
729
|
+
|| node.extends.may_throw(compressor))
|
730
|
+
) {
|
731
|
+
node.extends.walk(tw);
|
732
|
+
}
|
733
|
+
for (const prop of node.properties) {
|
734
|
+
if (
|
735
|
+
prop.has_side_effects(compressor) ||
|
736
|
+
prop.may_throw(compressor)
|
737
|
+
) {
|
738
|
+
prop.walk(tw);
|
739
|
+
}
|
740
|
+
}
|
741
|
+
}
|
742
|
+
map_add(initializations, node_def.id, node);
|
743
|
+
return true; // don't go in nested scopes
|
744
|
+
}
|
745
|
+
if (node instanceof AST_SymbolFunarg && scope === self) {
|
746
|
+
map_add(var_defs_by_id, node.definition().id, node);
|
747
|
+
}
|
748
|
+
if (node instanceof AST_Definitions && scope === self) {
|
749
|
+
const in_export = tw.parent() instanceof AST_Export;
|
750
|
+
node.definitions.forEach(function(def) {
|
751
|
+
if (def.name instanceof AST_SymbolVar) {
|
752
|
+
map_add(var_defs_by_id, def.name.definition().id, def);
|
753
|
+
}
|
754
|
+
if (in_export || !drop_vars) {
|
755
|
+
walk(def.name, node => {
|
756
|
+
if (node instanceof AST_SymbolDeclaration) {
|
757
|
+
const def = node.definition();
|
758
|
+
if (
|
759
|
+
(in_export || def.global)
|
760
|
+
&& !in_use_ids.has(def.id)
|
761
|
+
) {
|
762
|
+
in_use_ids.set(def.id, def);
|
763
|
+
}
|
764
|
+
}
|
765
|
+
});
|
766
|
+
}
|
767
|
+
if (def.value) {
|
768
|
+
if (def.name instanceof AST_Destructuring) {
|
769
|
+
def.walk(tw);
|
770
|
+
} else {
|
771
|
+
var node_def = def.name.definition();
|
772
|
+
map_add(initializations, node_def.id, def.value);
|
773
|
+
if (!node_def.chained && def.name.fixed_value() === def.value) {
|
774
|
+
fixed_ids.set(node_def.id, def);
|
775
|
+
}
|
776
|
+
}
|
777
|
+
if (def.value.has_side_effects(compressor)) {
|
778
|
+
def.value.walk(tw);
|
779
|
+
}
|
780
|
+
}
|
781
|
+
});
|
782
|
+
return true;
|
783
|
+
}
|
784
|
+
return scan_ref_scoped(node, descend);
|
785
|
+
});
|
786
|
+
self.walk(tw);
|
787
|
+
// pass 2: for every used symbol we need to walk its
|
788
|
+
// initialization code to figure out if it uses other
|
789
|
+
// symbols (that may not be in_use).
|
790
|
+
tw = new TreeWalker(scan_ref_scoped);
|
791
|
+
in_use_ids.forEach(function (def) {
|
792
|
+
var init = initializations.get(def.id);
|
793
|
+
if (init) init.forEach(function(init) {
|
794
|
+
init.walk(tw);
|
795
|
+
});
|
796
|
+
});
|
797
|
+
// pass 3: we should drop declarations not in_use
|
798
|
+
var tt = new TreeTransformer(
|
799
|
+
function before(node, descend, in_list) {
|
800
|
+
var parent = tt.parent();
|
801
|
+
if (drop_vars) {
|
802
|
+
const sym = assign_as_unused(node);
|
803
|
+
if (sym instanceof AST_SymbolRef) {
|
804
|
+
var def = sym.definition();
|
805
|
+
var in_use = in_use_ids.has(def.id);
|
806
|
+
if (node instanceof AST_Assign) {
|
807
|
+
if (!in_use || fixed_ids.has(def.id) && fixed_ids.get(def.id) !== node) {
|
808
|
+
return maintain_this_binding(parent, node, node.right.transform(tt));
|
809
|
+
}
|
810
|
+
} else if (!in_use) return in_list ? MAP.skip : make_node(AST_Number, node, {
|
811
|
+
value: 0
|
812
|
+
});
|
813
|
+
}
|
814
|
+
}
|
815
|
+
if (scope !== self) return;
|
816
|
+
var def;
|
817
|
+
if (node.name
|
818
|
+
&& (node instanceof AST_ClassExpression
|
819
|
+
&& !keep_name(compressor.option("keep_classnames"), (def = node.name.definition()).name)
|
820
|
+
|| node instanceof AST_Function
|
821
|
+
&& !keep_name(compressor.option("keep_fnames"), (def = node.name.definition()).name))) {
|
822
|
+
// any declarations with same name will overshadow
|
823
|
+
// name of this anonymous function and can therefore
|
824
|
+
// never be used anywhere
|
825
|
+
if (!in_use_ids.has(def.id) || def.orig.length > 1) node.name = null;
|
826
|
+
}
|
827
|
+
if (node instanceof AST_Lambda && !(node instanceof AST_Accessor)) {
|
828
|
+
var trim = !compressor.option("keep_fargs");
|
829
|
+
for (var a = node.argnames, i = a.length; --i >= 0;) {
|
830
|
+
var sym = a[i];
|
831
|
+
if (sym instanceof AST_Expansion) {
|
832
|
+
sym = sym.expression;
|
833
|
+
}
|
834
|
+
if (sym instanceof AST_DefaultAssign) {
|
835
|
+
sym = sym.left;
|
836
|
+
}
|
837
|
+
// Do not drop destructuring arguments.
|
838
|
+
// They constitute a type assertion, so dropping
|
839
|
+
// them would stop that TypeError which would happen
|
840
|
+
// if someone called it with an incorrectly formatted
|
841
|
+
// parameter.
|
842
|
+
if (!(sym instanceof AST_Destructuring) && !in_use_ids.has(sym.definition().id)) {
|
843
|
+
set_flag(sym, UNUSED);
|
844
|
+
if (trim) {
|
845
|
+
a.pop();
|
846
|
+
}
|
847
|
+
} else {
|
848
|
+
trim = false;
|
849
|
+
}
|
850
|
+
}
|
851
|
+
}
|
852
|
+
if ((node instanceof AST_Defun || node instanceof AST_DefClass) && node !== self) {
|
853
|
+
const def = node.name.definition();
|
854
|
+
let keep = def.global && !drop_funcs || in_use_ids.has(def.id);
|
855
|
+
if (!keep) {
|
856
|
+
def.eliminated++;
|
857
|
+
if (node instanceof AST_DefClass) {
|
858
|
+
// Classes might have extends with side effects
|
859
|
+
const side_effects = node.drop_side_effect_free(compressor);
|
860
|
+
if (side_effects) {
|
861
|
+
return make_node(AST_SimpleStatement, node, {
|
862
|
+
body: side_effects
|
863
|
+
});
|
864
|
+
}
|
865
|
+
}
|
866
|
+
return in_list ? MAP.skip : make_node(AST_EmptyStatement, node);
|
867
|
+
}
|
868
|
+
}
|
869
|
+
if (node instanceof AST_Definitions && !(parent instanceof AST_ForIn && parent.init === node)) {
|
870
|
+
var drop_block = !(parent instanceof AST_Toplevel) && !(node instanceof AST_Var);
|
871
|
+
// place uninitialized names at the start
|
872
|
+
var body = [], head = [], tail = [];
|
873
|
+
// for unused names whose initialization has
|
874
|
+
// side effects, we can cascade the init. code
|
875
|
+
// into the next one, or next statement.
|
876
|
+
var side_effects = [];
|
877
|
+
node.definitions.forEach(function(def) {
|
878
|
+
if (def.value) def.value = def.value.transform(tt);
|
879
|
+
var is_destructure = def.name instanceof AST_Destructuring;
|
880
|
+
var sym = is_destructure
|
881
|
+
? new SymbolDef(null, { name: "<destructure>" }) /* fake SymbolDef */
|
882
|
+
: def.name.definition();
|
883
|
+
if (drop_block && sym.global) return tail.push(def);
|
884
|
+
if (!(drop_vars || drop_block)
|
885
|
+
|| is_destructure
|
886
|
+
&& (def.name.names.length
|
887
|
+
|| def.name.is_array
|
888
|
+
|| compressor.option("pure_getters") != true)
|
889
|
+
|| in_use_ids.has(sym.id)
|
890
|
+
) {
|
891
|
+
if (def.value && fixed_ids.has(sym.id) && fixed_ids.get(sym.id) !== def) {
|
892
|
+
def.value = def.value.drop_side_effect_free(compressor);
|
893
|
+
}
|
894
|
+
if (def.name instanceof AST_SymbolVar) {
|
895
|
+
var var_defs = var_defs_by_id.get(sym.id);
|
896
|
+
if (var_defs.length > 1 && (!def.value || sym.orig.indexOf(def.name) > sym.eliminated)) {
|
897
|
+
if (def.value) {
|
898
|
+
var ref = make_node(AST_SymbolRef, def.name, def.name);
|
899
|
+
sym.references.push(ref);
|
900
|
+
var assign = make_node(AST_Assign, def, {
|
901
|
+
operator: "=",
|
902
|
+
logical: false,
|
903
|
+
left: ref,
|
904
|
+
right: def.value
|
905
|
+
});
|
906
|
+
if (fixed_ids.get(sym.id) === def) {
|
907
|
+
fixed_ids.set(sym.id, assign);
|
908
|
+
}
|
909
|
+
side_effects.push(assign.transform(tt));
|
910
|
+
}
|
911
|
+
remove(var_defs, def);
|
912
|
+
sym.eliminated++;
|
913
|
+
return;
|
914
|
+
}
|
915
|
+
}
|
916
|
+
if (def.value) {
|
917
|
+
if (side_effects.length > 0) {
|
918
|
+
if (tail.length > 0) {
|
919
|
+
side_effects.push(def.value);
|
920
|
+
def.value = make_sequence(def.value, side_effects);
|
921
|
+
} else {
|
922
|
+
body.push(make_node(AST_SimpleStatement, node, {
|
923
|
+
body: make_sequence(node, side_effects)
|
924
|
+
}));
|
925
|
+
}
|
926
|
+
side_effects = [];
|
927
|
+
}
|
928
|
+
tail.push(def);
|
929
|
+
} else {
|
930
|
+
head.push(def);
|
931
|
+
}
|
932
|
+
} else if (sym.orig[0] instanceof AST_SymbolCatch) {
|
933
|
+
var value = def.value && def.value.drop_side_effect_free(compressor);
|
934
|
+
if (value) side_effects.push(value);
|
935
|
+
def.value = null;
|
936
|
+
head.push(def);
|
937
|
+
} else {
|
938
|
+
var value = def.value && def.value.drop_side_effect_free(compressor);
|
939
|
+
if (value) {
|
940
|
+
side_effects.push(value);
|
941
|
+
}
|
942
|
+
sym.eliminated++;
|
943
|
+
}
|
944
|
+
});
|
945
|
+
if (head.length > 0 || tail.length > 0) {
|
946
|
+
node.definitions = head.concat(tail);
|
947
|
+
body.push(node);
|
948
|
+
}
|
949
|
+
if (side_effects.length > 0) {
|
950
|
+
body.push(make_node(AST_SimpleStatement, node, {
|
951
|
+
body: make_sequence(node, side_effects)
|
952
|
+
}));
|
953
|
+
}
|
954
|
+
switch (body.length) {
|
955
|
+
case 0:
|
956
|
+
return in_list ? MAP.skip : make_node(AST_EmptyStatement, node);
|
957
|
+
case 1:
|
958
|
+
return body[0];
|
959
|
+
default:
|
960
|
+
return in_list ? MAP.splice(body) : make_node(AST_BlockStatement, node, {
|
961
|
+
body: body
|
962
|
+
});
|
963
|
+
}
|
964
|
+
}
|
965
|
+
// certain combination of unused name + side effect leads to:
|
966
|
+
// https://github.com/mishoo/UglifyJS2/issues/44
|
967
|
+
// https://github.com/mishoo/UglifyJS2/issues/1830
|
968
|
+
// https://github.com/mishoo/UglifyJS2/issues/1838
|
969
|
+
// that's an invalid AST.
|
970
|
+
// We fix it at this stage by moving the `var` outside the `for`.
|
971
|
+
if (node instanceof AST_For) {
|
972
|
+
descend(node, this);
|
973
|
+
var block;
|
974
|
+
if (node.init instanceof AST_BlockStatement) {
|
975
|
+
block = node.init;
|
976
|
+
node.init = block.body.pop();
|
977
|
+
block.body.push(node);
|
978
|
+
}
|
979
|
+
if (node.init instanceof AST_SimpleStatement) {
|
980
|
+
node.init = node.init.body;
|
981
|
+
} else if (is_empty(node.init)) {
|
982
|
+
node.init = null;
|
983
|
+
}
|
984
|
+
return !block ? node : in_list ? MAP.splice(block.body) : block;
|
985
|
+
}
|
986
|
+
if (node instanceof AST_LabeledStatement
|
987
|
+
&& node.body instanceof AST_For
|
988
|
+
) {
|
989
|
+
descend(node, this);
|
990
|
+
if (node.body instanceof AST_BlockStatement) {
|
991
|
+
var block = node.body;
|
992
|
+
node.body = block.body.pop();
|
993
|
+
block.body.push(node);
|
994
|
+
return in_list ? MAP.splice(block.body) : block;
|
995
|
+
}
|
996
|
+
return node;
|
997
|
+
}
|
998
|
+
if (node instanceof AST_BlockStatement) {
|
999
|
+
descend(node, this);
|
1000
|
+
if (in_list && node.body.every(can_be_evicted_from_block)) {
|
1001
|
+
return MAP.splice(node.body);
|
1002
|
+
}
|
1003
|
+
return node;
|
1004
|
+
}
|
1005
|
+
if (node instanceof AST_Scope) {
|
1006
|
+
const save_scope = scope;
|
1007
|
+
scope = node;
|
1008
|
+
descend(node, this);
|
1009
|
+
scope = save_scope;
|
1010
|
+
return node;
|
1011
|
+
}
|
1012
|
+
}
|
1013
|
+
);
|
1014
|
+
|
1015
|
+
self.transform(tt);
|
1016
|
+
|
1017
|
+
function scan_ref_scoped(node, descend) {
|
1018
|
+
var node_def;
|
1019
|
+
const sym = assign_as_unused(node);
|
1020
|
+
if (sym instanceof AST_SymbolRef
|
1021
|
+
&& !is_ref_of(node.left, AST_SymbolBlockDeclaration)
|
1022
|
+
&& self.variables.get(sym.name) === (node_def = sym.definition())
|
1023
|
+
) {
|
1024
|
+
if (node instanceof AST_Assign) {
|
1025
|
+
node.right.walk(tw);
|
1026
|
+
if (!node_def.chained && node.left.fixed_value() === node.right) {
|
1027
|
+
fixed_ids.set(node_def.id, node);
|
1028
|
+
}
|
1029
|
+
}
|
1030
|
+
return true;
|
1031
|
+
}
|
1032
|
+
if (node instanceof AST_SymbolRef) {
|
1033
|
+
node_def = node.definition();
|
1034
|
+
if (!in_use_ids.has(node_def.id)) {
|
1035
|
+
in_use_ids.set(node_def.id, node_def);
|
1036
|
+
if (node_def.orig[0] instanceof AST_SymbolCatch) {
|
1037
|
+
const redef = node_def.scope.is_block_scope()
|
1038
|
+
&& node_def.scope.get_defun_scope().variables.get(node_def.name);
|
1039
|
+
if (redef) in_use_ids.set(redef.id, redef);
|
1040
|
+
}
|
1041
|
+
}
|
1042
|
+
return true;
|
1043
|
+
}
|
1044
|
+
if (node instanceof AST_Scope) {
|
1045
|
+
var save_scope = scope;
|
1046
|
+
scope = node;
|
1047
|
+
descend();
|
1048
|
+
scope = save_scope;
|
1049
|
+
return true;
|
1050
|
+
}
|
1051
|
+
}
|
1052
|
+
});
|
1053
|
+
|
1054
|
+
AST_Scope.DEFMETHOD("hoist_declarations", function(compressor) {
|
1055
|
+
var self = this;
|
1056
|
+
if (compressor.has_directive("use asm")) return self;
|
1057
|
+
// Hoisting makes no sense in an arrow func
|
1058
|
+
if (!Array.isArray(self.body)) return self;
|
1059
|
+
|
1060
|
+
var hoist_funs = compressor.option("hoist_funs");
|
1061
|
+
var hoist_vars = compressor.option("hoist_vars");
|
1062
|
+
|
1063
|
+
if (hoist_funs || hoist_vars) {
|
1064
|
+
var dirs = [];
|
1065
|
+
var hoisted = [];
|
1066
|
+
var vars = new Map(), vars_found = 0, var_decl = 0;
|
1067
|
+
// let's count var_decl first, we seem to waste a lot of
|
1068
|
+
// space if we hoist `var` when there's only one.
|
1069
|
+
walk(self, node => {
|
1070
|
+
if (node instanceof AST_Scope && node !== self)
|
1071
|
+
return true;
|
1072
|
+
if (node instanceof AST_Var) {
|
1073
|
+
++var_decl;
|
1074
|
+
return true;
|
1075
|
+
}
|
1076
|
+
});
|
1077
|
+
hoist_vars = hoist_vars && var_decl > 1;
|
1078
|
+
var tt = new TreeTransformer(
|
1079
|
+
function before(node) {
|
1080
|
+
if (node !== self) {
|
1081
|
+
if (node instanceof AST_Directive) {
|
1082
|
+
dirs.push(node);
|
1083
|
+
return make_node(AST_EmptyStatement, node);
|
1084
|
+
}
|
1085
|
+
if (hoist_funs && node instanceof AST_Defun
|
1086
|
+
&& !(tt.parent() instanceof AST_Export)
|
1087
|
+
&& tt.parent() === self) {
|
1088
|
+
hoisted.push(node);
|
1089
|
+
return make_node(AST_EmptyStatement, node);
|
1090
|
+
}
|
1091
|
+
if (
|
1092
|
+
hoist_vars
|
1093
|
+
&& node instanceof AST_Var
|
1094
|
+
&& !node.definitions.some(def => def.name instanceof AST_Destructuring)
|
1095
|
+
) {
|
1096
|
+
node.definitions.forEach(function(def) {
|
1097
|
+
vars.set(def.name.name, def);
|
1098
|
+
++vars_found;
|
1099
|
+
});
|
1100
|
+
var seq = node.to_assignments(compressor);
|
1101
|
+
var p = tt.parent();
|
1102
|
+
if (p instanceof AST_ForIn && p.init === node) {
|
1103
|
+
if (seq == null) {
|
1104
|
+
var def = node.definitions[0].name;
|
1105
|
+
return make_node(AST_SymbolRef, def, def);
|
1106
|
+
}
|
1107
|
+
return seq;
|
1108
|
+
}
|
1109
|
+
if (p instanceof AST_For && p.init === node) {
|
1110
|
+
return seq;
|
1111
|
+
}
|
1112
|
+
if (!seq) return make_node(AST_EmptyStatement, node);
|
1113
|
+
return make_node(AST_SimpleStatement, node, {
|
1114
|
+
body: seq
|
1115
|
+
});
|
1116
|
+
}
|
1117
|
+
if (node instanceof AST_Scope)
|
1118
|
+
return node; // to avoid descending in nested scopes
|
1119
|
+
}
|
1120
|
+
}
|
1121
|
+
);
|
1122
|
+
self = self.transform(tt);
|
1123
|
+
if (vars_found > 0) {
|
1124
|
+
// collect only vars which don't show up in self's arguments list
|
1125
|
+
var defs = [];
|
1126
|
+
const is_lambda = self instanceof AST_Lambda;
|
1127
|
+
const args_as_names = is_lambda ? self.args_as_names() : null;
|
1128
|
+
vars.forEach((def, name) => {
|
1129
|
+
if (is_lambda && args_as_names.some((x) => x.name === def.name.name)) {
|
1130
|
+
vars.delete(name);
|
1131
|
+
} else {
|
1132
|
+
def = def.clone();
|
1133
|
+
def.value = null;
|
1134
|
+
defs.push(def);
|
1135
|
+
vars.set(name, def);
|
1136
|
+
}
|
1137
|
+
});
|
1138
|
+
if (defs.length > 0) {
|
1139
|
+
// try to merge in assignments
|
1140
|
+
for (var i = 0; i < self.body.length;) {
|
1141
|
+
if (self.body[i] instanceof AST_SimpleStatement) {
|
1142
|
+
var expr = self.body[i].body, sym, assign;
|
1143
|
+
if (expr instanceof AST_Assign
|
1144
|
+
&& expr.operator == "="
|
1145
|
+
&& (sym = expr.left) instanceof AST_Symbol
|
1146
|
+
&& vars.has(sym.name)
|
1147
|
+
) {
|
1148
|
+
var def = vars.get(sym.name);
|
1149
|
+
if (def.value) break;
|
1150
|
+
def.value = expr.right;
|
1151
|
+
remove(defs, def);
|
1152
|
+
defs.push(def);
|
1153
|
+
self.body.splice(i, 1);
|
1154
|
+
continue;
|
1155
|
+
}
|
1156
|
+
if (expr instanceof AST_Sequence
|
1157
|
+
&& (assign = expr.expressions[0]) instanceof AST_Assign
|
1158
|
+
&& assign.operator == "="
|
1159
|
+
&& (sym = assign.left) instanceof AST_Symbol
|
1160
|
+
&& vars.has(sym.name)
|
1161
|
+
) {
|
1162
|
+
var def = vars.get(sym.name);
|
1163
|
+
if (def.value) break;
|
1164
|
+
def.value = assign.right;
|
1165
|
+
remove(defs, def);
|
1166
|
+
defs.push(def);
|
1167
|
+
self.body[i].body = make_sequence(expr, expr.expressions.slice(1));
|
1168
|
+
continue;
|
1169
|
+
}
|
1170
|
+
}
|
1171
|
+
if (self.body[i] instanceof AST_EmptyStatement) {
|
1172
|
+
self.body.splice(i, 1);
|
1173
|
+
continue;
|
1174
|
+
}
|
1175
|
+
if (self.body[i] instanceof AST_BlockStatement) {
|
1176
|
+
self.body.splice(i, 1, ...self.body[i].body);
|
1177
|
+
continue;
|
1178
|
+
}
|
1179
|
+
break;
|
1180
|
+
}
|
1181
|
+
defs = make_node(AST_Var, self, {
|
1182
|
+
definitions: defs
|
1183
|
+
});
|
1184
|
+
hoisted.push(defs);
|
1185
|
+
}
|
1186
|
+
}
|
1187
|
+
self.body = dirs.concat(hoisted, self.body);
|
1188
|
+
}
|
1189
|
+
return self;
|
1190
|
+
});
|
1191
|
+
|
1192
|
+
AST_Scope.DEFMETHOD("hoist_properties", function(compressor) {
|
1193
|
+
var self = this;
|
1194
|
+
if (!compressor.option("hoist_props") || compressor.has_directive("use asm")) return self;
|
1195
|
+
var top_retain = self instanceof AST_Toplevel && compressor.top_retain || return_false;
|
1196
|
+
var defs_by_id = new Map();
|
1197
|
+
var hoister = new TreeTransformer(function(node, descend) {
|
1198
|
+
if (node instanceof AST_Definitions
|
1199
|
+
&& hoister.parent() instanceof AST_Export) return node;
|
1200
|
+
if (node instanceof AST_VarDef) {
|
1201
|
+
const sym = node.name;
|
1202
|
+
let def;
|
1203
|
+
let value;
|
1204
|
+
if (sym.scope === self
|
1205
|
+
&& (def = sym.definition()).escaped != 1
|
1206
|
+
&& !def.assignments
|
1207
|
+
&& !def.direct_access
|
1208
|
+
&& !def.single_use
|
1209
|
+
&& !compressor.exposed(def)
|
1210
|
+
&& !top_retain(def)
|
1211
|
+
&& (value = sym.fixed_value()) === node.value
|
1212
|
+
&& value instanceof AST_Object
|
1213
|
+
&& !value.properties.some(prop =>
|
1214
|
+
prop instanceof AST_Expansion || prop.computed_key()
|
1215
|
+
)
|
1216
|
+
) {
|
1217
|
+
descend(node, this);
|
1218
|
+
const defs = new Map();
|
1219
|
+
const assignments = [];
|
1220
|
+
value.properties.forEach(({ key, value }) => {
|
1221
|
+
const scope = find_scope(hoister);
|
1222
|
+
const symbol = self.create_symbol(sym.CTOR, {
|
1223
|
+
source: sym,
|
1224
|
+
scope,
|
1225
|
+
conflict_scopes: new Set([
|
1226
|
+
scope,
|
1227
|
+
...sym.definition().references.map(ref => ref.scope)
|
1228
|
+
]),
|
1229
|
+
tentative_name: sym.name + "_" + key
|
1230
|
+
});
|
1231
|
+
|
1232
|
+
defs.set(String(key), symbol.definition());
|
1233
|
+
|
1234
|
+
assignments.push(make_node(AST_VarDef, node, {
|
1235
|
+
name: symbol,
|
1236
|
+
value
|
1237
|
+
}));
|
1238
|
+
});
|
1239
|
+
defs_by_id.set(def.id, defs);
|
1240
|
+
return MAP.splice(assignments);
|
1241
|
+
}
|
1242
|
+
} else if (node instanceof AST_PropAccess
|
1243
|
+
&& node.expression instanceof AST_SymbolRef
|
1244
|
+
) {
|
1245
|
+
const defs = defs_by_id.get(node.expression.definition().id);
|
1246
|
+
if (defs) {
|
1247
|
+
const def = defs.get(String(get_simple_key(node.property)));
|
1248
|
+
const sym = make_node(AST_SymbolRef, node, {
|
1249
|
+
name: def.name,
|
1250
|
+
scope: node.expression.scope,
|
1251
|
+
thedef: def
|
1252
|
+
});
|
1253
|
+
sym.reference({});
|
1254
|
+
return sym;
|
1255
|
+
}
|
1256
|
+
}
|
1257
|
+
});
|
1258
|
+
return self.transform(hoister);
|
1259
|
+
});
|
1260
|
+
|
1261
|
+
def_optimize(AST_SimpleStatement, function(self, compressor) {
|
1262
|
+
if (compressor.option("side_effects")) {
|
1263
|
+
var body = self.body;
|
1264
|
+
var node = body.drop_side_effect_free(compressor, true);
|
1265
|
+
if (!node) {
|
1266
|
+
return make_node(AST_EmptyStatement, self);
|
1267
|
+
}
|
1268
|
+
if (node !== body) {
|
1269
|
+
return make_node(AST_SimpleStatement, self, { body: node });
|
1270
|
+
}
|
1271
|
+
}
|
1272
|
+
return self;
|
1273
|
+
});
|
1274
|
+
|
1275
|
+
def_optimize(AST_While, function(self, compressor) {
|
1276
|
+
return compressor.option("loops") ? make_node(AST_For, self, self).optimize(compressor) : self;
|
1277
|
+
});
|
1278
|
+
|
1279
|
+
def_optimize(AST_Do, function(self, compressor) {
|
1280
|
+
if (!compressor.option("loops")) return self;
|
1281
|
+
var cond = self.condition.tail_node().evaluate(compressor);
|
1282
|
+
if (!(cond instanceof AST_Node)) {
|
1283
|
+
if (cond) return make_node(AST_For, self, {
|
1284
|
+
body: make_node(AST_BlockStatement, self.body, {
|
1285
|
+
body: [
|
1286
|
+
self.body,
|
1287
|
+
make_node(AST_SimpleStatement, self.condition, {
|
1288
|
+
body: self.condition
|
1289
|
+
})
|
1290
|
+
]
|
1291
|
+
})
|
1292
|
+
}).optimize(compressor);
|
1293
|
+
if (!has_break_or_continue(self, compressor.parent())) {
|
1294
|
+
return make_node(AST_BlockStatement, self.body, {
|
1295
|
+
body: [
|
1296
|
+
self.body,
|
1297
|
+
make_node(AST_SimpleStatement, self.condition, {
|
1298
|
+
body: self.condition
|
1299
|
+
})
|
1300
|
+
]
|
1301
|
+
}).optimize(compressor);
|
1302
|
+
}
|
1303
|
+
}
|
1304
|
+
return self;
|
1305
|
+
});
|
1306
|
+
|
1307
|
+
function if_break_in_loop(self, compressor) {
|
1308
|
+
var first = self.body instanceof AST_BlockStatement ? self.body.body[0] : self.body;
|
1309
|
+
if (compressor.option("dead_code") && is_break(first)) {
|
1310
|
+
var body = [];
|
1311
|
+
if (self.init instanceof AST_Statement) {
|
1312
|
+
body.push(self.init);
|
1313
|
+
} else if (self.init) {
|
1314
|
+
body.push(make_node(AST_SimpleStatement, self.init, {
|
1315
|
+
body: self.init
|
1316
|
+
}));
|
1317
|
+
}
|
1318
|
+
if (self.condition) {
|
1319
|
+
body.push(make_node(AST_SimpleStatement, self.condition, {
|
1320
|
+
body: self.condition
|
1321
|
+
}));
|
1322
|
+
}
|
1323
|
+
trim_unreachable_code(compressor, self.body, body);
|
1324
|
+
return make_node(AST_BlockStatement, self, {
|
1325
|
+
body: body
|
1326
|
+
});
|
1327
|
+
}
|
1328
|
+
if (first instanceof AST_If) {
|
1329
|
+
if (is_break(first.body)) {
|
1330
|
+
if (self.condition) {
|
1331
|
+
self.condition = make_node(AST_Binary, self.condition, {
|
1332
|
+
left: self.condition,
|
1333
|
+
operator: "&&",
|
1334
|
+
right: first.condition.negate(compressor),
|
1335
|
+
});
|
1336
|
+
} else {
|
1337
|
+
self.condition = first.condition.negate(compressor);
|
1338
|
+
}
|
1339
|
+
drop_it(first.alternative);
|
1340
|
+
} else if (is_break(first.alternative)) {
|
1341
|
+
if (self.condition) {
|
1342
|
+
self.condition = make_node(AST_Binary, self.condition, {
|
1343
|
+
left: self.condition,
|
1344
|
+
operator: "&&",
|
1345
|
+
right: first.condition,
|
1346
|
+
});
|
1347
|
+
} else {
|
1348
|
+
self.condition = first.condition;
|
1349
|
+
}
|
1350
|
+
drop_it(first.body);
|
1351
|
+
}
|
1352
|
+
}
|
1353
|
+
return self;
|
1354
|
+
|
1355
|
+
function is_break(node) {
|
1356
|
+
return node instanceof AST_Break
|
1357
|
+
&& compressor.loopcontrol_target(node) === compressor.self();
|
1358
|
+
}
|
1359
|
+
|
1360
|
+
function drop_it(rest) {
|
1361
|
+
rest = as_statement_array(rest);
|
1362
|
+
if (self.body instanceof AST_BlockStatement) {
|
1363
|
+
self.body = self.body.clone();
|
1364
|
+
self.body.body = rest.concat(self.body.body.slice(1));
|
1365
|
+
self.body = self.body.transform(compressor);
|
1366
|
+
} else {
|
1367
|
+
self.body = make_node(AST_BlockStatement, self.body, {
|
1368
|
+
body: rest
|
1369
|
+
}).transform(compressor);
|
1370
|
+
}
|
1371
|
+
self = if_break_in_loop(self, compressor);
|
1372
|
+
}
|
1373
|
+
}
|
1374
|
+
|
1375
|
+
def_optimize(AST_For, function(self, compressor) {
|
1376
|
+
if (!compressor.option("loops")) return self;
|
1377
|
+
if (compressor.option("side_effects") && self.init) {
|
1378
|
+
self.init = self.init.drop_side_effect_free(compressor);
|
1379
|
+
}
|
1380
|
+
if (self.condition) {
|
1381
|
+
var cond = self.condition.evaluate(compressor);
|
1382
|
+
if (!(cond instanceof AST_Node)) {
|
1383
|
+
if (cond) self.condition = null;
|
1384
|
+
else if (!compressor.option("dead_code")) {
|
1385
|
+
var orig = self.condition;
|
1386
|
+
self.condition = make_node_from_constant(cond, self.condition);
|
1387
|
+
self.condition = best_of_expression(self.condition.transform(compressor), orig);
|
1388
|
+
}
|
1389
|
+
}
|
1390
|
+
if (compressor.option("dead_code")) {
|
1391
|
+
if (cond instanceof AST_Node) cond = self.condition.tail_node().evaluate(compressor);
|
1392
|
+
if (!cond) {
|
1393
|
+
var body = [];
|
1394
|
+
trim_unreachable_code(compressor, self.body, body);
|
1395
|
+
if (self.init instanceof AST_Statement) {
|
1396
|
+
body.push(self.init);
|
1397
|
+
} else if (self.init) {
|
1398
|
+
body.push(make_node(AST_SimpleStatement, self.init, {
|
1399
|
+
body: self.init
|
1400
|
+
}));
|
1401
|
+
}
|
1402
|
+
body.push(make_node(AST_SimpleStatement, self.condition, {
|
1403
|
+
body: self.condition
|
1404
|
+
}));
|
1405
|
+
return make_node(AST_BlockStatement, self, { body: body }).optimize(compressor);
|
1406
|
+
}
|
1407
|
+
}
|
1408
|
+
}
|
1409
|
+
return if_break_in_loop(self, compressor);
|
1410
|
+
});
|
1411
|
+
|
1412
|
+
def_optimize(AST_If, function(self, compressor) {
|
1413
|
+
if (is_empty(self.alternative)) self.alternative = null;
|
1414
|
+
|
1415
|
+
if (!compressor.option("conditionals")) return self;
|
1416
|
+
// if condition can be statically determined, drop
|
1417
|
+
// one of the blocks. note, statically determined implies
|
1418
|
+
// “has no side effects”; also it doesn't work for cases like
|
1419
|
+
// `x && true`, though it probably should.
|
1420
|
+
var cond = self.condition.evaluate(compressor);
|
1421
|
+
if (!compressor.option("dead_code") && !(cond instanceof AST_Node)) {
|
1422
|
+
var orig = self.condition;
|
1423
|
+
self.condition = make_node_from_constant(cond, orig);
|
1424
|
+
self.condition = best_of_expression(self.condition.transform(compressor), orig);
|
1425
|
+
}
|
1426
|
+
if (compressor.option("dead_code")) {
|
1427
|
+
if (cond instanceof AST_Node) cond = self.condition.tail_node().evaluate(compressor);
|
1428
|
+
if (!cond) {
|
1429
|
+
var body = [];
|
1430
|
+
trim_unreachable_code(compressor, self.body, body);
|
1431
|
+
body.push(make_node(AST_SimpleStatement, self.condition, {
|
1432
|
+
body: self.condition
|
1433
|
+
}));
|
1434
|
+
if (self.alternative) body.push(self.alternative);
|
1435
|
+
return make_node(AST_BlockStatement, self, { body: body }).optimize(compressor);
|
1436
|
+
} else if (!(cond instanceof AST_Node)) {
|
1437
|
+
var body = [];
|
1438
|
+
body.push(make_node(AST_SimpleStatement, self.condition, {
|
1439
|
+
body: self.condition
|
1440
|
+
}));
|
1441
|
+
body.push(self.body);
|
1442
|
+
if (self.alternative) {
|
1443
|
+
trim_unreachable_code(compressor, self.alternative, body);
|
1444
|
+
}
|
1445
|
+
return make_node(AST_BlockStatement, self, { body: body }).optimize(compressor);
|
1446
|
+
}
|
1447
|
+
}
|
1448
|
+
var negated = self.condition.negate(compressor);
|
1449
|
+
var self_condition_length = self.condition.size();
|
1450
|
+
var negated_length = negated.size();
|
1451
|
+
var negated_is_best = negated_length < self_condition_length;
|
1452
|
+
if (self.alternative && negated_is_best) {
|
1453
|
+
negated_is_best = false; // because we already do the switch here.
|
1454
|
+
// no need to swap values of self_condition_length and negated_length
|
1455
|
+
// here because they are only used in an equality comparison later on.
|
1456
|
+
self.condition = negated;
|
1457
|
+
var tmp = self.body;
|
1458
|
+
self.body = self.alternative || make_node(AST_EmptyStatement, self);
|
1459
|
+
self.alternative = tmp;
|
1460
|
+
}
|
1461
|
+
if (is_empty(self.body) && is_empty(self.alternative)) {
|
1462
|
+
return make_node(AST_SimpleStatement, self.condition, {
|
1463
|
+
body: self.condition.clone()
|
1464
|
+
}).optimize(compressor);
|
1465
|
+
}
|
1466
|
+
if (self.body instanceof AST_SimpleStatement
|
1467
|
+
&& self.alternative instanceof AST_SimpleStatement) {
|
1468
|
+
return make_node(AST_SimpleStatement, self, {
|
1469
|
+
body: make_node(AST_Conditional, self, {
|
1470
|
+
condition : self.condition,
|
1471
|
+
consequent : self.body.body,
|
1472
|
+
alternative : self.alternative.body
|
1473
|
+
})
|
1474
|
+
}).optimize(compressor);
|
1475
|
+
}
|
1476
|
+
if (is_empty(self.alternative) && self.body instanceof AST_SimpleStatement) {
|
1477
|
+
if (self_condition_length === negated_length && !negated_is_best
|
1478
|
+
&& self.condition instanceof AST_Binary && self.condition.operator == "||") {
|
1479
|
+
// although the code length of self.condition and negated are the same,
|
1480
|
+
// negated does not require additional surrounding parentheses.
|
1481
|
+
// see https://github.com/mishoo/UglifyJS2/issues/979
|
1482
|
+
negated_is_best = true;
|
1483
|
+
}
|
1484
|
+
if (negated_is_best) return make_node(AST_SimpleStatement, self, {
|
1485
|
+
body: make_node(AST_Binary, self, {
|
1486
|
+
operator : "||",
|
1487
|
+
left : negated,
|
1488
|
+
right : self.body.body
|
1489
|
+
})
|
1490
|
+
}).optimize(compressor);
|
1491
|
+
return make_node(AST_SimpleStatement, self, {
|
1492
|
+
body: make_node(AST_Binary, self, {
|
1493
|
+
operator : "&&",
|
1494
|
+
left : self.condition,
|
1495
|
+
right : self.body.body
|
1496
|
+
})
|
1497
|
+
}).optimize(compressor);
|
1498
|
+
}
|
1499
|
+
if (self.body instanceof AST_EmptyStatement
|
1500
|
+
&& self.alternative instanceof AST_SimpleStatement) {
|
1501
|
+
return make_node(AST_SimpleStatement, self, {
|
1502
|
+
body: make_node(AST_Binary, self, {
|
1503
|
+
operator : "||",
|
1504
|
+
left : self.condition,
|
1505
|
+
right : self.alternative.body
|
1506
|
+
})
|
1507
|
+
}).optimize(compressor);
|
1508
|
+
}
|
1509
|
+
if (self.body instanceof AST_Exit
|
1510
|
+
&& self.alternative instanceof AST_Exit
|
1511
|
+
&& self.body.TYPE == self.alternative.TYPE) {
|
1512
|
+
return make_node(self.body.CTOR, self, {
|
1513
|
+
value: make_node(AST_Conditional, self, {
|
1514
|
+
condition : self.condition,
|
1515
|
+
consequent : self.body.value || make_node(AST_Undefined, self.body),
|
1516
|
+
alternative : self.alternative.value || make_node(AST_Undefined, self.alternative)
|
1517
|
+
}).transform(compressor)
|
1518
|
+
}).optimize(compressor);
|
1519
|
+
}
|
1520
|
+
if (self.body instanceof AST_If
|
1521
|
+
&& !self.body.alternative
|
1522
|
+
&& !self.alternative) {
|
1523
|
+
self = make_node(AST_If, self, {
|
1524
|
+
condition: make_node(AST_Binary, self.condition, {
|
1525
|
+
operator: "&&",
|
1526
|
+
left: self.condition,
|
1527
|
+
right: self.body.condition
|
1528
|
+
}),
|
1529
|
+
body: self.body.body,
|
1530
|
+
alternative: null
|
1531
|
+
});
|
1532
|
+
}
|
1533
|
+
if (aborts(self.body)) {
|
1534
|
+
if (self.alternative) {
|
1535
|
+
var alt = self.alternative;
|
1536
|
+
self.alternative = null;
|
1537
|
+
return make_node(AST_BlockStatement, self, {
|
1538
|
+
body: [ self, alt ]
|
1539
|
+
}).optimize(compressor);
|
1540
|
+
}
|
1541
|
+
}
|
1542
|
+
if (aborts(self.alternative)) {
|
1543
|
+
var body = self.body;
|
1544
|
+
self.body = self.alternative;
|
1545
|
+
self.condition = negated_is_best ? negated : self.condition.negate(compressor);
|
1546
|
+
self.alternative = null;
|
1547
|
+
return make_node(AST_BlockStatement, self, {
|
1548
|
+
body: [ self, body ]
|
1549
|
+
}).optimize(compressor);
|
1550
|
+
}
|
1551
|
+
return self;
|
1552
|
+
});
|
1553
|
+
|
1554
|
+
def_optimize(AST_Switch, function(self, compressor) {
|
1555
|
+
if (!compressor.option("switches")) return self;
|
1556
|
+
var branch;
|
1557
|
+
var value = self.expression.evaluate(compressor);
|
1558
|
+
if (!(value instanceof AST_Node)) {
|
1559
|
+
var orig = self.expression;
|
1560
|
+
self.expression = make_node_from_constant(value, orig);
|
1561
|
+
self.expression = best_of_expression(self.expression.transform(compressor), orig);
|
1562
|
+
}
|
1563
|
+
if (!compressor.option("dead_code")) return self;
|
1564
|
+
if (value instanceof AST_Node) {
|
1565
|
+
value = self.expression.tail_node().evaluate(compressor);
|
1566
|
+
}
|
1567
|
+
var decl = [];
|
1568
|
+
var body = [];
|
1569
|
+
var default_branch;
|
1570
|
+
var exact_match;
|
1571
|
+
for (var i = 0, len = self.body.length; i < len && !exact_match; i++) {
|
1572
|
+
branch = self.body[i];
|
1573
|
+
if (branch instanceof AST_Default) {
|
1574
|
+
if (!default_branch) {
|
1575
|
+
default_branch = branch;
|
1576
|
+
} else {
|
1577
|
+
eliminate_branch(branch, body[body.length - 1]);
|
1578
|
+
}
|
1579
|
+
} else if (!(value instanceof AST_Node)) {
|
1580
|
+
var exp = branch.expression.evaluate(compressor);
|
1581
|
+
if (!(exp instanceof AST_Node) && exp !== value) {
|
1582
|
+
eliminate_branch(branch, body[body.length - 1]);
|
1583
|
+
continue;
|
1584
|
+
}
|
1585
|
+
if (exp instanceof AST_Node) exp = branch.expression.tail_node().evaluate(compressor);
|
1586
|
+
if (exp === value) {
|
1587
|
+
exact_match = branch;
|
1588
|
+
if (default_branch) {
|
1589
|
+
var default_index = body.indexOf(default_branch);
|
1590
|
+
body.splice(default_index, 1);
|
1591
|
+
eliminate_branch(default_branch, body[default_index - 1]);
|
1592
|
+
default_branch = null;
|
1593
|
+
}
|
1594
|
+
}
|
1595
|
+
}
|
1596
|
+
body.push(branch);
|
1597
|
+
}
|
1598
|
+
while (i < len) eliminate_branch(self.body[i++], body[body.length - 1]);
|
1599
|
+
self.body = body;
|
1600
|
+
|
1601
|
+
let default_or_exact = default_branch || exact_match;
|
1602
|
+
default_branch = null;
|
1603
|
+
exact_match = null;
|
1604
|
+
|
1605
|
+
// group equivalent branches so they will be located next to each other,
|
1606
|
+
// that way the next micro-optimization will merge them.
|
1607
|
+
// ** bail micro-optimization if not a simple switch case with breaks
|
1608
|
+
if (body.every((branch, i) =>
|
1609
|
+
(branch === default_or_exact || branch.expression instanceof AST_Constant)
|
1610
|
+
&& (branch.body.length === 0 || aborts(branch) || body.length - 1 === i))
|
1611
|
+
) {
|
1612
|
+
for (let i = 0; i < body.length; i++) {
|
1613
|
+
const branch = body[i];
|
1614
|
+
for (let j = i + 1; j < body.length; j++) {
|
1615
|
+
const next = body[j];
|
1616
|
+
if (next.body.length === 0) continue;
|
1617
|
+
const last_branch = j === (body.length - 1);
|
1618
|
+
const equivalentBranch = branches_equivalent(next, branch, false);
|
1619
|
+
if (equivalentBranch || (last_branch && branches_equivalent(next, branch, true))) {
|
1620
|
+
if (!equivalentBranch && last_branch) {
|
1621
|
+
next.body.push(make_node(AST_Break));
|
1622
|
+
}
|
1623
|
+
|
1624
|
+
// let's find previous siblings with inert fallthrough...
|
1625
|
+
let x = j - 1;
|
1626
|
+
let fallthroughDepth = 0;
|
1627
|
+
while (x > i) {
|
1628
|
+
if (is_inert_body(body[x--])) {
|
1629
|
+
fallthroughDepth++;
|
1630
|
+
} else {
|
1631
|
+
break;
|
1632
|
+
}
|
1633
|
+
}
|
1634
|
+
|
1635
|
+
const plucked = body.splice(j - fallthroughDepth, 1 + fallthroughDepth);
|
1636
|
+
body.splice(i + 1, 0, ...plucked);
|
1637
|
+
i += plucked.length;
|
1638
|
+
}
|
1639
|
+
}
|
1640
|
+
}
|
1641
|
+
}
|
1642
|
+
|
1643
|
+
// merge equivalent branches in a row
|
1644
|
+
for (let i = 0; i < body.length; i++) {
|
1645
|
+
let branch = body[i];
|
1646
|
+
if (branch.body.length === 0) continue;
|
1647
|
+
if (!aborts(branch)) continue;
|
1648
|
+
|
1649
|
+
for (let j = i + 1; j < body.length; i++, j++) {
|
1650
|
+
let next = body[j];
|
1651
|
+
if (next.body.length === 0) continue;
|
1652
|
+
if (
|
1653
|
+
branches_equivalent(next, branch, false)
|
1654
|
+
|| (j === body.length - 1 && branches_equivalent(next, branch, true))
|
1655
|
+
) {
|
1656
|
+
branch.body = [];
|
1657
|
+
branch = next;
|
1658
|
+
continue;
|
1659
|
+
}
|
1660
|
+
break;
|
1661
|
+
}
|
1662
|
+
}
|
1663
|
+
|
1664
|
+
// Prune any empty branches at the end of the switch statement.
|
1665
|
+
{
|
1666
|
+
let i = body.length - 1;
|
1667
|
+
for (; i >= 0; i--) {
|
1668
|
+
let bbody = body[i].body;
|
1669
|
+
if (is_break(bbody[bbody.length - 1], compressor)) bbody.pop();
|
1670
|
+
if (!is_inert_body(body[i])) break;
|
1671
|
+
}
|
1672
|
+
// i now points to the index of a branch that contains a body. By incrementing, it's
|
1673
|
+
// pointing to the first branch that's empty.
|
1674
|
+
i++;
|
1675
|
+
if (!default_or_exact || body.indexOf(default_or_exact) >= i) {
|
1676
|
+
// The default behavior is to do nothing. We can take advantage of that to
|
1677
|
+
// remove all case expressions that are side-effect free that also do
|
1678
|
+
// nothing, since they'll default to doing nothing. But we can't remove any
|
1679
|
+
// case expressions before one that would side-effect, since they may cause
|
1680
|
+
// the side-effect to be skipped.
|
1681
|
+
for (let j = body.length - 1; j >= i; j--) {
|
1682
|
+
let branch = body[j];
|
1683
|
+
if (branch === default_or_exact) {
|
1684
|
+
default_or_exact = null;
|
1685
|
+
body.pop();
|
1686
|
+
} else if (!branch.expression.has_side_effects(compressor)) {
|
1687
|
+
body.pop();
|
1688
|
+
} else {
|
1689
|
+
break;
|
1690
|
+
}
|
1691
|
+
}
|
1692
|
+
}
|
1693
|
+
}
|
1694
|
+
|
1695
|
+
|
1696
|
+
// Prune side-effect free branches that fall into default.
|
1697
|
+
DEFAULT: if (default_or_exact) {
|
1698
|
+
let default_index = body.indexOf(default_or_exact);
|
1699
|
+
let default_body_index = default_index;
|
1700
|
+
for (; default_body_index < body.length - 1; default_body_index++) {
|
1701
|
+
if (!is_inert_body(body[default_body_index])) break;
|
1702
|
+
}
|
1703
|
+
if (default_body_index < body.length - 1) {
|
1704
|
+
break DEFAULT;
|
1705
|
+
}
|
1706
|
+
|
1707
|
+
let side_effect_index = body.length - 1;
|
1708
|
+
for (; side_effect_index >= 0; side_effect_index--) {
|
1709
|
+
let branch = body[side_effect_index];
|
1710
|
+
if (branch === default_or_exact) continue;
|
1711
|
+
if (branch.expression.has_side_effects(compressor)) break;
|
1712
|
+
}
|
1713
|
+
// If the default behavior comes after any side-effect case expressions,
|
1714
|
+
// then we can fold all side-effect free cases into the default branch.
|
1715
|
+
// If the side-effect case is after the default, then any side-effect
|
1716
|
+
// free cases could prevent the side-effect from occurring.
|
1717
|
+
if (default_body_index > side_effect_index) {
|
1718
|
+
let prev_body_index = default_index - 1;
|
1719
|
+
for (; prev_body_index >= 0; prev_body_index--) {
|
1720
|
+
if (!is_inert_body(body[prev_body_index])) break;
|
1721
|
+
}
|
1722
|
+
let before = Math.max(side_effect_index, prev_body_index) + 1;
|
1723
|
+
let after = default_index;
|
1724
|
+
if (side_effect_index > default_index) {
|
1725
|
+
// If the default falls into the same body as a side-effect
|
1726
|
+
// case, then we need preserve that case and only prune the
|
1727
|
+
// cases after it.
|
1728
|
+
after = side_effect_index;
|
1729
|
+
body[side_effect_index].body = body[default_body_index].body;
|
1730
|
+
} else {
|
1731
|
+
// The default will be the last branch.
|
1732
|
+
default_or_exact.body = body[default_body_index].body;
|
1733
|
+
}
|
1734
|
+
|
1735
|
+
// Prune everything after the default (or last side-effect case)
|
1736
|
+
// until the next case with a body.
|
1737
|
+
body.splice(after + 1, default_body_index - after);
|
1738
|
+
// Prune everything before the default that falls into it.
|
1739
|
+
body.splice(before, default_index - before);
|
1740
|
+
}
|
1741
|
+
}
|
1742
|
+
|
1743
|
+
// See if we can remove the switch entirely if all cases (the default) fall into the same case body.
|
1744
|
+
DEFAULT: if (default_or_exact) {
|
1745
|
+
let i = body.findIndex(branch => !is_inert_body(branch));
|
1746
|
+
let caseBody;
|
1747
|
+
// `i` is equal to one of the following:
|
1748
|
+
// - `-1`, there is no body in the switch statement.
|
1749
|
+
// - `body.length - 1`, all cases fall into the same body.
|
1750
|
+
// - anything else, there are multiple bodies in the switch.
|
1751
|
+
if (i === body.length - 1) {
|
1752
|
+
// All cases fall into the case body.
|
1753
|
+
let branch = body[i];
|
1754
|
+
if (has_nested_break(self)) break DEFAULT;
|
1755
|
+
|
1756
|
+
// This is the last case body, and we've already pruned any breaks, so it's
|
1757
|
+
// safe to hoist.
|
1758
|
+
caseBody = make_node(AST_BlockStatement, branch, {
|
1759
|
+
body: branch.body
|
1760
|
+
});
|
1761
|
+
branch.body = [];
|
1762
|
+
} else if (i !== -1) {
|
1763
|
+
// If there are multiple bodies, then we cannot optimize anything.
|
1764
|
+
break DEFAULT;
|
1765
|
+
}
|
1766
|
+
|
1767
|
+
let sideEffect = body.find(branch => {
|
1768
|
+
return (
|
1769
|
+
branch !== default_or_exact
|
1770
|
+
&& branch.expression.has_side_effects(compressor)
|
1771
|
+
);
|
1772
|
+
});
|
1773
|
+
// If no cases cause a side-effect, we can eliminate the switch entirely.
|
1774
|
+
if (!sideEffect) {
|
1775
|
+
return make_node(AST_BlockStatement, self, {
|
1776
|
+
body: decl.concat(
|
1777
|
+
statement(self.expression),
|
1778
|
+
default_or_exact.expression ? statement(default_or_exact.expression) : [],
|
1779
|
+
caseBody || []
|
1780
|
+
)
|
1781
|
+
}).optimize(compressor);
|
1782
|
+
}
|
1783
|
+
|
1784
|
+
// If we're this far, either there was no body or all cases fell into the same body.
|
1785
|
+
// If there was no body, then we don't need a default branch (because the default is
|
1786
|
+
// do nothing). If there was a body, we'll extract it to after the switch, so the
|
1787
|
+
// switch's new default is to do nothing and we can still prune it.
|
1788
|
+
const default_index = body.indexOf(default_or_exact);
|
1789
|
+
body.splice(default_index, 1);
|
1790
|
+
default_or_exact = null;
|
1791
|
+
|
1792
|
+
if (caseBody) {
|
1793
|
+
// Recurse into switch statement one more time so that we can append the case body
|
1794
|
+
// outside of the switch. This recursion will only happen once since we've pruned
|
1795
|
+
// the default case.
|
1796
|
+
return make_node(AST_BlockStatement, self, {
|
1797
|
+
body: decl.concat(self, caseBody)
|
1798
|
+
}).optimize(compressor);
|
1799
|
+
}
|
1800
|
+
// If we fall here, there is a default branch somewhere, there are no case bodies,
|
1801
|
+
// and there's a side-effect somewhere. Just let the below paths take care of it.
|
1802
|
+
}
|
1803
|
+
|
1804
|
+
if (body.length > 0) {
|
1805
|
+
body[0].body = decl.concat(body[0].body);
|
1806
|
+
}
|
1807
|
+
|
1808
|
+
if (body.length == 0) {
|
1809
|
+
return make_node(AST_BlockStatement, self, {
|
1810
|
+
body: decl.concat(statement(self.expression))
|
1811
|
+
}).optimize(compressor);
|
1812
|
+
}
|
1813
|
+
if (body.length == 1 && !has_nested_break(self)) {
|
1814
|
+
// This is the last case body, and we've already pruned any breaks, so it's
|
1815
|
+
// safe to hoist.
|
1816
|
+
let branch = body[0];
|
1817
|
+
return make_node(AST_If, self, {
|
1818
|
+
condition: make_node(AST_Binary, self, {
|
1819
|
+
operator: "===",
|
1820
|
+
left: self.expression,
|
1821
|
+
right: branch.expression,
|
1822
|
+
}),
|
1823
|
+
body: make_node(AST_BlockStatement, branch, {
|
1824
|
+
body: branch.body
|
1825
|
+
}),
|
1826
|
+
alternative: null
|
1827
|
+
}).optimize(compressor);
|
1828
|
+
}
|
1829
|
+
if (body.length === 2 && default_or_exact && !has_nested_break(self)) {
|
1830
|
+
let branch = body[0] === default_or_exact ? body[1] : body[0];
|
1831
|
+
let exact_exp = default_or_exact.expression && statement(default_or_exact.expression);
|
1832
|
+
if (aborts(body[0])) {
|
1833
|
+
// Only the first branch body could have a break (at the last statement)
|
1834
|
+
let first = body[0];
|
1835
|
+
if (is_break(first.body[first.body.length - 1], compressor)) {
|
1836
|
+
first.body.pop();
|
1837
|
+
}
|
1838
|
+
return make_node(AST_If, self, {
|
1839
|
+
condition: make_node(AST_Binary, self, {
|
1840
|
+
operator: "===",
|
1841
|
+
left: self.expression,
|
1842
|
+
right: branch.expression,
|
1843
|
+
}),
|
1844
|
+
body: make_node(AST_BlockStatement, branch, {
|
1845
|
+
body: branch.body
|
1846
|
+
}),
|
1847
|
+
alternative: make_node(AST_BlockStatement, default_or_exact, {
|
1848
|
+
body: [].concat(
|
1849
|
+
exact_exp || [],
|
1850
|
+
default_or_exact.body
|
1851
|
+
)
|
1852
|
+
})
|
1853
|
+
}).optimize(compressor);
|
1854
|
+
}
|
1855
|
+
let operator = "===";
|
1856
|
+
let consequent = make_node(AST_BlockStatement, branch, {
|
1857
|
+
body: branch.body,
|
1858
|
+
});
|
1859
|
+
let always = make_node(AST_BlockStatement, default_or_exact, {
|
1860
|
+
body: [].concat(
|
1861
|
+
exact_exp || [],
|
1862
|
+
default_or_exact.body
|
1863
|
+
)
|
1864
|
+
});
|
1865
|
+
if (body[0] === default_or_exact) {
|
1866
|
+
operator = "!==";
|
1867
|
+
let tmp = always;
|
1868
|
+
always = consequent;
|
1869
|
+
consequent = tmp;
|
1870
|
+
}
|
1871
|
+
return make_node(AST_BlockStatement, self, {
|
1872
|
+
body: [
|
1873
|
+
make_node(AST_If, self, {
|
1874
|
+
condition: make_node(AST_Binary, self, {
|
1875
|
+
operator: operator,
|
1876
|
+
left: self.expression,
|
1877
|
+
right: branch.expression,
|
1878
|
+
}),
|
1879
|
+
body: consequent,
|
1880
|
+
alternative: null
|
1881
|
+
})
|
1882
|
+
].concat(always)
|
1883
|
+
}).optimize(compressor);
|
1884
|
+
}
|
1885
|
+
return self;
|
1886
|
+
|
1887
|
+
function eliminate_branch(branch, prev) {
|
1888
|
+
if (prev && !aborts(prev)) {
|
1889
|
+
prev.body = prev.body.concat(branch.body);
|
1890
|
+
} else {
|
1891
|
+
trim_unreachable_code(compressor, branch, decl);
|
1892
|
+
}
|
1893
|
+
}
|
1894
|
+
function branches_equivalent(branch, prev, insertBreak) {
|
1895
|
+
let bbody = branch.body;
|
1896
|
+
let pbody = prev.body;
|
1897
|
+
if (insertBreak) {
|
1898
|
+
bbody = bbody.concat(make_node(AST_Break));
|
1899
|
+
}
|
1900
|
+
if (bbody.length !== pbody.length) return false;
|
1901
|
+
let bblock = make_node(AST_BlockStatement, branch, { body: bbody });
|
1902
|
+
let pblock = make_node(AST_BlockStatement, prev, { body: pbody });
|
1903
|
+
return bblock.equivalent_to(pblock);
|
1904
|
+
}
|
1905
|
+
function statement(expression) {
|
1906
|
+
return make_node(AST_SimpleStatement, expression, {
|
1907
|
+
body: expression
|
1908
|
+
});
|
1909
|
+
}
|
1910
|
+
function has_nested_break(root) {
|
1911
|
+
let has_break = false;
|
1912
|
+
let tw = new TreeWalker(node => {
|
1913
|
+
if (has_break) return true;
|
1914
|
+
if (node instanceof AST_Lambda) return true;
|
1915
|
+
if (node instanceof AST_SimpleStatement) return true;
|
1916
|
+
if (!is_break(node, tw)) return;
|
1917
|
+
let parent = tw.parent();
|
1918
|
+
if (
|
1919
|
+
parent instanceof AST_SwitchBranch
|
1920
|
+
&& parent.body[parent.body.length - 1] === node
|
1921
|
+
) {
|
1922
|
+
return;
|
1923
|
+
}
|
1924
|
+
has_break = true;
|
1925
|
+
});
|
1926
|
+
root.walk(tw);
|
1927
|
+
return has_break;
|
1928
|
+
}
|
1929
|
+
function is_break(node, stack) {
|
1930
|
+
return node instanceof AST_Break
|
1931
|
+
&& stack.loopcontrol_target(node) === self;
|
1932
|
+
}
|
1933
|
+
function is_inert_body(branch) {
|
1934
|
+
return !aborts(branch) && !make_node(AST_BlockStatement, branch, {
|
1935
|
+
body: branch.body
|
1936
|
+
}).has_side_effects(compressor);
|
1937
|
+
}
|
1938
|
+
});
|
1939
|
+
|
1940
|
+
def_optimize(AST_Try, function(self, compressor) {
|
1941
|
+
tighten_body(self.body, compressor);
|
1942
|
+
if (self.bcatch && self.bfinally && self.bfinally.body.every(is_empty)) self.bfinally = null;
|
1943
|
+
if (compressor.option("dead_code") && self.body.every(is_empty)) {
|
1944
|
+
var body = [];
|
1945
|
+
if (self.bcatch) {
|
1946
|
+
trim_unreachable_code(compressor, self.bcatch, body);
|
1947
|
+
}
|
1948
|
+
if (self.bfinally) body.push(...self.bfinally.body);
|
1949
|
+
return make_node(AST_BlockStatement, self, {
|
1950
|
+
body: body
|
1951
|
+
}).optimize(compressor);
|
1952
|
+
}
|
1953
|
+
return self;
|
1954
|
+
});
|
1955
|
+
|
1956
|
+
AST_Definitions.DEFMETHOD("remove_initializers", function() {
|
1957
|
+
var decls = [];
|
1958
|
+
this.definitions.forEach(function(def) {
|
1959
|
+
if (def.name instanceof AST_SymbolDeclaration) {
|
1960
|
+
def.value = null;
|
1961
|
+
decls.push(def);
|
1962
|
+
} else {
|
1963
|
+
walk(def.name, node => {
|
1964
|
+
if (node instanceof AST_SymbolDeclaration) {
|
1965
|
+
decls.push(make_node(AST_VarDef, def, {
|
1966
|
+
name: node,
|
1967
|
+
value: null
|
1968
|
+
}));
|
1969
|
+
}
|
1970
|
+
});
|
1971
|
+
}
|
1972
|
+
});
|
1973
|
+
this.definitions = decls;
|
1974
|
+
});
|
1975
|
+
|
1976
|
+
AST_Definitions.DEFMETHOD("to_assignments", function(compressor) {
|
1977
|
+
var reduce_vars = compressor.option("reduce_vars");
|
1978
|
+
var assignments = [];
|
1979
|
+
|
1980
|
+
for (const def of this.definitions) {
|
1981
|
+
if (def.value) {
|
1982
|
+
var name = make_node(AST_SymbolRef, def.name, def.name);
|
1983
|
+
assignments.push(make_node(AST_Assign, def, {
|
1984
|
+
operator : "=",
|
1985
|
+
logical: false,
|
1986
|
+
left : name,
|
1987
|
+
right : def.value
|
1988
|
+
}));
|
1989
|
+
if (reduce_vars) name.definition().fixed = false;
|
1990
|
+
} else if (def.value) {
|
1991
|
+
// Because it's a destructuring, do not turn into an assignment.
|
1992
|
+
var varDef = make_node(AST_VarDef, def, {
|
1993
|
+
name: def.name,
|
1994
|
+
value: def.value
|
1995
|
+
});
|
1996
|
+
var var_ = make_node(AST_Var, def, {
|
1997
|
+
definitions: [ varDef ]
|
1998
|
+
});
|
1999
|
+
assignments.push(var_);
|
2000
|
+
}
|
2001
|
+
const thedef = def.name.definition();
|
2002
|
+
thedef.eliminated++;
|
2003
|
+
thedef.replaced--;
|
2004
|
+
}
|
2005
|
+
|
2006
|
+
if (assignments.length == 0) return null;
|
2007
|
+
return make_sequence(this, assignments);
|
2008
|
+
});
|
2009
|
+
|
2010
|
+
def_optimize(AST_Definitions, function(self) {
|
2011
|
+
if (self.definitions.length == 0)
|
2012
|
+
return make_node(AST_EmptyStatement, self);
|
2013
|
+
return self;
|
2014
|
+
});
|
2015
|
+
|
2016
|
+
def_optimize(AST_VarDef, function(self, compressor) {
|
2017
|
+
if (
|
2018
|
+
self.name instanceof AST_SymbolLet
|
2019
|
+
&& self.value != null
|
2020
|
+
&& is_undefined(self.value, compressor)
|
2021
|
+
) {
|
2022
|
+
self.value = null;
|
2023
|
+
}
|
2024
|
+
return self;
|
2025
|
+
});
|
2026
|
+
|
2027
|
+
def_optimize(AST_Import, function(self) {
|
2028
|
+
return self;
|
2029
|
+
});
|
2030
|
+
|
2031
|
+
// TODO this only works with AST_Defun, shouldn't it work for other ways of defining functions?
|
2032
|
+
function retain_top_func(fn, compressor) {
|
2033
|
+
return compressor.top_retain
|
2034
|
+
&& fn instanceof AST_Defun
|
2035
|
+
&& has_flag(fn, TOP)
|
2036
|
+
&& fn.name
|
2037
|
+
&& compressor.top_retain(fn.name);
|
2038
|
+
}
|
2039
|
+
|
2040
|
+
def_optimize(AST_Call, function(self, compressor) {
|
2041
|
+
var exp = self.expression;
|
2042
|
+
var fn = exp;
|
2043
|
+
inline_array_like_spread(self.args);
|
2044
|
+
var simple_args = self.args.every((arg) =>
|
2045
|
+
!(arg instanceof AST_Expansion)
|
2046
|
+
);
|
2047
|
+
|
2048
|
+
if (compressor.option("reduce_vars")
|
2049
|
+
&& fn instanceof AST_SymbolRef
|
2050
|
+
&& !has_annotation(self, _NOINLINE)
|
2051
|
+
) {
|
2052
|
+
const fixed = fn.fixed_value();
|
2053
|
+
if (!retain_top_func(fixed, compressor)) {
|
2054
|
+
fn = fixed;
|
2055
|
+
}
|
2056
|
+
}
|
2057
|
+
|
2058
|
+
var is_func = fn instanceof AST_Lambda;
|
2059
|
+
|
2060
|
+
if (is_func && fn.pinned()) return self;
|
2061
|
+
|
2062
|
+
if (compressor.option("unused")
|
2063
|
+
&& simple_args
|
2064
|
+
&& is_func
|
2065
|
+
&& !fn.uses_arguments) {
|
2066
|
+
var pos = 0, last = 0;
|
2067
|
+
for (var i = 0, len = self.args.length; i < len; i++) {
|
2068
|
+
if (fn.argnames[i] instanceof AST_Expansion) {
|
2069
|
+
if (has_flag(fn.argnames[i].expression, UNUSED)) while (i < len) {
|
2070
|
+
var node = self.args[i++].drop_side_effect_free(compressor);
|
2071
|
+
if (node) {
|
2072
|
+
self.args[pos++] = node;
|
2073
|
+
}
|
2074
|
+
} else while (i < len) {
|
2075
|
+
self.args[pos++] = self.args[i++];
|
2076
|
+
}
|
2077
|
+
last = pos;
|
2078
|
+
break;
|
2079
|
+
}
|
2080
|
+
var trim = i >= fn.argnames.length;
|
2081
|
+
if (trim || has_flag(fn.argnames[i], UNUSED)) {
|
2082
|
+
var node = self.args[i].drop_side_effect_free(compressor);
|
2083
|
+
if (node) {
|
2084
|
+
self.args[pos++] = node;
|
2085
|
+
} else if (!trim) {
|
2086
|
+
self.args[pos++] = make_node(AST_Number, self.args[i], {
|
2087
|
+
value: 0
|
2088
|
+
});
|
2089
|
+
continue;
|
2090
|
+
}
|
2091
|
+
} else {
|
2092
|
+
self.args[pos++] = self.args[i];
|
2093
|
+
}
|
2094
|
+
last = pos;
|
2095
|
+
}
|
2096
|
+
self.args.length = last;
|
2097
|
+
}
|
2098
|
+
|
2099
|
+
if (compressor.option("unsafe")) {
|
2100
|
+
if (exp instanceof AST_Dot && exp.start.value === "Array" && exp.property === "from" && self.args.length === 1) {
|
2101
|
+
const [argument] = self.args;
|
2102
|
+
if (argument instanceof AST_Array) {
|
2103
|
+
return make_node(AST_Array, argument, {
|
2104
|
+
elements: argument.elements
|
2105
|
+
}).optimize(compressor);
|
2106
|
+
}
|
2107
|
+
}
|
2108
|
+
if (is_undeclared_ref(exp)) switch (exp.name) {
|
2109
|
+
case "Array":
|
2110
|
+
if (self.args.length != 1) {
|
2111
|
+
return make_node(AST_Array, self, {
|
2112
|
+
elements: self.args
|
2113
|
+
}).optimize(compressor);
|
2114
|
+
} else if (self.args[0] instanceof AST_Number && self.args[0].value <= 11) {
|
2115
|
+
const elements = [];
|
2116
|
+
for (let i = 0; i < self.args[0].value; i++) elements.push(new AST_Hole);
|
2117
|
+
return new AST_Array({ elements });
|
2118
|
+
}
|
2119
|
+
break;
|
2120
|
+
case "Object":
|
2121
|
+
if (self.args.length == 0) {
|
2122
|
+
return make_node(AST_Object, self, {
|
2123
|
+
properties: []
|
2124
|
+
});
|
2125
|
+
}
|
2126
|
+
break;
|
2127
|
+
case "String":
|
2128
|
+
if (self.args.length == 0) return make_node(AST_String, self, {
|
2129
|
+
value: ""
|
2130
|
+
});
|
2131
|
+
if (self.args.length <= 1) return make_node(AST_Binary, self, {
|
2132
|
+
left: self.args[0],
|
2133
|
+
operator: "+",
|
2134
|
+
right: make_node(AST_String, self, { value: "" })
|
2135
|
+
}).optimize(compressor);
|
2136
|
+
break;
|
2137
|
+
case "Number":
|
2138
|
+
if (self.args.length == 0) return make_node(AST_Number, self, {
|
2139
|
+
value: 0
|
2140
|
+
});
|
2141
|
+
if (self.args.length == 1 && compressor.option("unsafe_math")) {
|
2142
|
+
return make_node(AST_UnaryPrefix, self, {
|
2143
|
+
expression: self.args[0],
|
2144
|
+
operator: "+"
|
2145
|
+
}).optimize(compressor);
|
2146
|
+
}
|
2147
|
+
break;
|
2148
|
+
case "Symbol":
|
2149
|
+
if (self.args.length == 1 && self.args[0] instanceof AST_String && compressor.option("unsafe_symbols"))
|
2150
|
+
self.args.length = 0;
|
2151
|
+
break;
|
2152
|
+
case "Boolean":
|
2153
|
+
if (self.args.length == 0) return make_node(AST_False, self);
|
2154
|
+
if (self.args.length == 1) return make_node(AST_UnaryPrefix, self, {
|
2155
|
+
expression: make_node(AST_UnaryPrefix, self, {
|
2156
|
+
expression: self.args[0],
|
2157
|
+
operator: "!"
|
2158
|
+
}),
|
2159
|
+
operator: "!"
|
2160
|
+
}).optimize(compressor);
|
2161
|
+
break;
|
2162
|
+
case "RegExp":
|
2163
|
+
var params = [];
|
2164
|
+
if (self.args.length >= 1
|
2165
|
+
&& self.args.length <= 2
|
2166
|
+
&& self.args.every((arg) => {
|
2167
|
+
var value = arg.evaluate(compressor);
|
2168
|
+
params.push(value);
|
2169
|
+
return arg !== value;
|
2170
|
+
})
|
2171
|
+
) {
|
2172
|
+
let [ source, flags ] = params;
|
2173
|
+
source = regexp_source_fix(new RegExp(source).source);
|
2174
|
+
const rx = make_node(AST_RegExp, self, {
|
2175
|
+
value: { source, flags }
|
2176
|
+
});
|
2177
|
+
if (rx._eval(compressor) !== rx) {
|
2178
|
+
return rx;
|
2179
|
+
}
|
2180
|
+
}
|
2181
|
+
break;
|
2182
|
+
} else if (exp instanceof AST_Dot) switch(exp.property) {
|
2183
|
+
case "toString":
|
2184
|
+
if (self.args.length == 0 && !exp.expression.may_throw_on_access(compressor)) {
|
2185
|
+
return make_node(AST_Binary, self, {
|
2186
|
+
left: make_node(AST_String, self, { value: "" }),
|
2187
|
+
operator: "+",
|
2188
|
+
right: exp.expression
|
2189
|
+
}).optimize(compressor);
|
2190
|
+
}
|
2191
|
+
break;
|
2192
|
+
case "join":
|
2193
|
+
if (exp.expression instanceof AST_Array) EXIT: {
|
2194
|
+
var separator;
|
2195
|
+
if (self.args.length > 0) {
|
2196
|
+
separator = self.args[0].evaluate(compressor);
|
2197
|
+
if (separator === self.args[0]) break EXIT; // not a constant
|
2198
|
+
}
|
2199
|
+
var elements = [];
|
2200
|
+
var consts = [];
|
2201
|
+
for (var i = 0, len = exp.expression.elements.length; i < len; i++) {
|
2202
|
+
var el = exp.expression.elements[i];
|
2203
|
+
if (el instanceof AST_Expansion) break EXIT;
|
2204
|
+
var value = el.evaluate(compressor);
|
2205
|
+
if (value !== el) {
|
2206
|
+
consts.push(value);
|
2207
|
+
} else {
|
2208
|
+
if (consts.length > 0) {
|
2209
|
+
elements.push(make_node(AST_String, self, {
|
2210
|
+
value: consts.join(separator)
|
2211
|
+
}));
|
2212
|
+
consts.length = 0;
|
2213
|
+
}
|
2214
|
+
elements.push(el);
|
2215
|
+
}
|
2216
|
+
}
|
2217
|
+
if (consts.length > 0) {
|
2218
|
+
elements.push(make_node(AST_String, self, {
|
2219
|
+
value: consts.join(separator)
|
2220
|
+
}));
|
2221
|
+
}
|
2222
|
+
if (elements.length == 0) return make_node(AST_String, self, { value: "" });
|
2223
|
+
if (elements.length == 1) {
|
2224
|
+
if (elements[0].is_string(compressor)) {
|
2225
|
+
return elements[0];
|
2226
|
+
}
|
2227
|
+
return make_node(AST_Binary, elements[0], {
|
2228
|
+
operator : "+",
|
2229
|
+
left : make_node(AST_String, self, { value: "" }),
|
2230
|
+
right : elements[0]
|
2231
|
+
});
|
2232
|
+
}
|
2233
|
+
if (separator == "") {
|
2234
|
+
var first;
|
2235
|
+
if (elements[0].is_string(compressor)
|
2236
|
+
|| elements[1].is_string(compressor)) {
|
2237
|
+
first = elements.shift();
|
2238
|
+
} else {
|
2239
|
+
first = make_node(AST_String, self, { value: "" });
|
2240
|
+
}
|
2241
|
+
return elements.reduce(function(prev, el) {
|
2242
|
+
return make_node(AST_Binary, el, {
|
2243
|
+
operator : "+",
|
2244
|
+
left : prev,
|
2245
|
+
right : el
|
2246
|
+
});
|
2247
|
+
}, first).optimize(compressor);
|
2248
|
+
}
|
2249
|
+
// need this awkward cloning to not affect original element
|
2250
|
+
// best_of will decide which one to get through.
|
2251
|
+
var node = self.clone();
|
2252
|
+
node.expression = node.expression.clone();
|
2253
|
+
node.expression.expression = node.expression.expression.clone();
|
2254
|
+
node.expression.expression.elements = elements;
|
2255
|
+
return best_of(compressor, self, node);
|
2256
|
+
}
|
2257
|
+
break;
|
2258
|
+
case "charAt":
|
2259
|
+
if (exp.expression.is_string(compressor)) {
|
2260
|
+
var arg = self.args[0];
|
2261
|
+
var index = arg ? arg.evaluate(compressor) : 0;
|
2262
|
+
if (index !== arg) {
|
2263
|
+
return make_node(AST_Sub, exp, {
|
2264
|
+
expression: exp.expression,
|
2265
|
+
property: make_node_from_constant(index | 0, arg || exp)
|
2266
|
+
}).optimize(compressor);
|
2267
|
+
}
|
2268
|
+
}
|
2269
|
+
break;
|
2270
|
+
case "apply":
|
2271
|
+
if (self.args.length == 2 && self.args[1] instanceof AST_Array) {
|
2272
|
+
var args = self.args[1].elements.slice();
|
2273
|
+
args.unshift(self.args[0]);
|
2274
|
+
return make_node(AST_Call, self, {
|
2275
|
+
expression: make_node(AST_Dot, exp, {
|
2276
|
+
expression: exp.expression,
|
2277
|
+
optional: false,
|
2278
|
+
property: "call"
|
2279
|
+
}),
|
2280
|
+
args: args
|
2281
|
+
}).optimize(compressor);
|
2282
|
+
}
|
2283
|
+
break;
|
2284
|
+
case "call":
|
2285
|
+
var func = exp.expression;
|
2286
|
+
if (func instanceof AST_SymbolRef) {
|
2287
|
+
func = func.fixed_value();
|
2288
|
+
}
|
2289
|
+
if (func instanceof AST_Lambda && !func.contains_this()) {
|
2290
|
+
return (self.args.length ? make_sequence(this, [
|
2291
|
+
self.args[0],
|
2292
|
+
make_node(AST_Call, self, {
|
2293
|
+
expression: exp.expression,
|
2294
|
+
args: self.args.slice(1)
|
2295
|
+
})
|
2296
|
+
]) : make_node(AST_Call, self, {
|
2297
|
+
expression: exp.expression,
|
2298
|
+
args: []
|
2299
|
+
})).optimize(compressor);
|
2300
|
+
}
|
2301
|
+
break;
|
2302
|
+
}
|
2303
|
+
}
|
2304
|
+
|
2305
|
+
if (compressor.option("unsafe_Function")
|
2306
|
+
&& is_undeclared_ref(exp)
|
2307
|
+
&& exp.name == "Function") {
|
2308
|
+
// new Function() => function(){}
|
2309
|
+
if (self.args.length == 0) return make_node(AST_Function, self, {
|
2310
|
+
argnames: [],
|
2311
|
+
body: []
|
2312
|
+
}).optimize(compressor);
|
2313
|
+
var nth_identifier = compressor.mangle_options && compressor.mangle_options.nth_identifier || base54;
|
2314
|
+
if (self.args.every((x) => x instanceof AST_String)) {
|
2315
|
+
// quite a corner-case, but we can handle it:
|
2316
|
+
// https://github.com/mishoo/UglifyJS2/issues/203
|
2317
|
+
// if the code argument is a constant, then we can minify it.
|
2318
|
+
try {
|
2319
|
+
var code = "n(function(" + self.args.slice(0, -1).map(function(arg) {
|
2320
|
+
return arg.value;
|
2321
|
+
}).join(",") + "){" + self.args[self.args.length - 1].value + "})";
|
2322
|
+
var ast = parse(code);
|
2323
|
+
var mangle = { ie8: compressor.option("ie8"), nth_identifier: nth_identifier };
|
2324
|
+
ast.figure_out_scope(mangle);
|
2325
|
+
var comp = new Compressor(compressor.options, {
|
2326
|
+
mangle_options: compressor.mangle_options
|
2327
|
+
});
|
2328
|
+
ast = ast.transform(comp);
|
2329
|
+
ast.figure_out_scope(mangle);
|
2330
|
+
ast.compute_char_frequency(mangle);
|
2331
|
+
ast.mangle_names(mangle);
|
2332
|
+
var fun;
|
2333
|
+
walk(ast, node => {
|
2334
|
+
if (is_func_expr(node)) {
|
2335
|
+
fun = node;
|
2336
|
+
return walk_abort;
|
2337
|
+
}
|
2338
|
+
});
|
2339
|
+
var code = OutputStream();
|
2340
|
+
AST_BlockStatement.prototype._codegen.call(fun, fun, code);
|
2341
|
+
self.args = [
|
2342
|
+
make_node(AST_String, self, {
|
2343
|
+
value: fun.argnames.map(function(arg) {
|
2344
|
+
return arg.print_to_string();
|
2345
|
+
}).join(",")
|
2346
|
+
}),
|
2347
|
+
make_node(AST_String, self.args[self.args.length - 1], {
|
2348
|
+
value: code.get().replace(/^{|}$/g, "")
|
2349
|
+
})
|
2350
|
+
];
|
2351
|
+
return self;
|
2352
|
+
} catch (ex) {
|
2353
|
+
if (!(ex instanceof JS_Parse_Error)) {
|
2354
|
+
throw ex;
|
2355
|
+
}
|
2356
|
+
|
2357
|
+
// Otherwise, it crashes at runtime. Or maybe it's nonstandard syntax.
|
2358
|
+
}
|
2359
|
+
}
|
2360
|
+
}
|
2361
|
+
|
2362
|
+
var stat = is_func && fn.body[0];
|
2363
|
+
var is_regular_func = is_func && !fn.is_generator && !fn.async;
|
2364
|
+
var can_inline = is_regular_func && compressor.option("inline") && !self.is_callee_pure(compressor);
|
2365
|
+
if (can_inline && stat instanceof AST_Return) {
|
2366
|
+
let returned = stat.value;
|
2367
|
+
if (!returned || returned.is_constant_expression()) {
|
2368
|
+
if (returned) {
|
2369
|
+
returned = returned.clone(true);
|
2370
|
+
} else {
|
2371
|
+
returned = make_node(AST_Undefined, self);
|
2372
|
+
}
|
2373
|
+
const args = self.args.concat(returned);
|
2374
|
+
return make_sequence(self, args).optimize(compressor);
|
2375
|
+
}
|
2376
|
+
|
2377
|
+
// optimize identity function
|
2378
|
+
if (
|
2379
|
+
fn.argnames.length === 1
|
2380
|
+
&& (fn.argnames[0] instanceof AST_SymbolFunarg)
|
2381
|
+
&& self.args.length < 2
|
2382
|
+
&& returned instanceof AST_SymbolRef
|
2383
|
+
&& returned.name === fn.argnames[0].name
|
2384
|
+
) {
|
2385
|
+
const replacement =
|
2386
|
+
(self.args[0] || make_node(AST_Undefined)).optimize(compressor);
|
2387
|
+
|
2388
|
+
let parent;
|
2389
|
+
if (
|
2390
|
+
replacement instanceof AST_PropAccess
|
2391
|
+
&& (parent = compressor.parent()) instanceof AST_Call
|
2392
|
+
&& parent.expression === self
|
2393
|
+
) {
|
2394
|
+
// identity function was being used to remove `this`, like in
|
2395
|
+
//
|
2396
|
+
// id(bag.no_this)(...)
|
2397
|
+
//
|
2398
|
+
// Replace with a larger but more effish (0, bag.no_this) wrapper.
|
2399
|
+
|
2400
|
+
return make_sequence(self, [
|
2401
|
+
make_node(AST_Number, self, { value: 0 }),
|
2402
|
+
replacement
|
2403
|
+
]);
|
2404
|
+
}
|
2405
|
+
// replace call with first argument or undefined if none passed
|
2406
|
+
return replacement;
|
2407
|
+
}
|
2408
|
+
}
|
2409
|
+
|
2410
|
+
if (can_inline) {
|
2411
|
+
var scope, in_loop, level = -1;
|
2412
|
+
let def;
|
2413
|
+
let returned_value;
|
2414
|
+
let nearest_scope;
|
2415
|
+
if (simple_args
|
2416
|
+
&& !fn.uses_arguments
|
2417
|
+
&& !(compressor.parent() instanceof AST_Class)
|
2418
|
+
&& !(fn.name && fn instanceof AST_Function)
|
2419
|
+
&& (returned_value = can_flatten_body(stat))
|
2420
|
+
&& (exp === fn
|
2421
|
+
|| has_annotation(self, _INLINE)
|
2422
|
+
|| compressor.option("unused")
|
2423
|
+
&& (def = exp.definition()).references.length == 1
|
2424
|
+
&& !is_recursive_ref(compressor, def)
|
2425
|
+
&& fn.is_constant_expression(exp.scope))
|
2426
|
+
&& !has_annotation(self, _PURE | _NOINLINE)
|
2427
|
+
&& !fn.contains_this()
|
2428
|
+
&& can_inject_symbols()
|
2429
|
+
&& (nearest_scope = find_scope(compressor))
|
2430
|
+
&& !scope_encloses_variables_in_this_scope(nearest_scope, fn)
|
2431
|
+
&& !(function in_default_assign() {
|
2432
|
+
// Due to the fact function parameters have their own scope
|
2433
|
+
// which can't use `var something` in the function body within,
|
2434
|
+
// we simply don't inline into DefaultAssign.
|
2435
|
+
let i = 0;
|
2436
|
+
let p;
|
2437
|
+
while ((p = compressor.parent(i++))) {
|
2438
|
+
if (p instanceof AST_DefaultAssign) return true;
|
2439
|
+
if (p instanceof AST_Block) break;
|
2440
|
+
}
|
2441
|
+
return false;
|
2442
|
+
})()
|
2443
|
+
&& !(scope instanceof AST_Class)
|
2444
|
+
) {
|
2445
|
+
set_flag(fn, SQUEEZED);
|
2446
|
+
nearest_scope.add_child_scope(fn);
|
2447
|
+
return make_sequence(self, flatten_fn(returned_value)).optimize(compressor);
|
2448
|
+
}
|
2449
|
+
}
|
2450
|
+
|
2451
|
+
if (can_inline && has_annotation(self, _INLINE)) {
|
2452
|
+
set_flag(fn, SQUEEZED);
|
2453
|
+
fn = make_node(fn.CTOR === AST_Defun ? AST_Function : fn.CTOR, fn, fn);
|
2454
|
+
fn = fn.clone(true);
|
2455
|
+
fn.figure_out_scope({}, {
|
2456
|
+
parent_scope: find_scope(compressor),
|
2457
|
+
toplevel: compressor.get_toplevel()
|
2458
|
+
});
|
2459
|
+
|
2460
|
+
return make_node(AST_Call, self, {
|
2461
|
+
expression: fn,
|
2462
|
+
args: self.args,
|
2463
|
+
}).optimize(compressor);
|
2464
|
+
}
|
2465
|
+
|
2466
|
+
const can_drop_this_call = is_regular_func && compressor.option("side_effects") && fn.body.every(is_empty);
|
2467
|
+
if (can_drop_this_call) {
|
2468
|
+
var args = self.args.concat(make_node(AST_Undefined, self));
|
2469
|
+
return make_sequence(self, args).optimize(compressor);
|
2470
|
+
}
|
2471
|
+
|
2472
|
+
if (compressor.option("negate_iife")
|
2473
|
+
&& compressor.parent() instanceof AST_SimpleStatement
|
2474
|
+
&& is_iife_call(self)) {
|
2475
|
+
return self.negate(compressor, true);
|
2476
|
+
}
|
2477
|
+
|
2478
|
+
var ev = self.evaluate(compressor);
|
2479
|
+
if (ev !== self) {
|
2480
|
+
ev = make_node_from_constant(ev, self).optimize(compressor);
|
2481
|
+
return best_of(compressor, ev, self);
|
2482
|
+
}
|
2483
|
+
|
2484
|
+
return self;
|
2485
|
+
|
2486
|
+
function return_value(stat) {
|
2487
|
+
if (!stat) return make_node(AST_Undefined, self);
|
2488
|
+
if (stat instanceof AST_Return) {
|
2489
|
+
if (!stat.value) return make_node(AST_Undefined, self);
|
2490
|
+
return stat.value.clone(true);
|
2491
|
+
}
|
2492
|
+
if (stat instanceof AST_SimpleStatement) {
|
2493
|
+
return make_node(AST_UnaryPrefix, stat, {
|
2494
|
+
operator: "void",
|
2495
|
+
expression: stat.body.clone(true)
|
2496
|
+
});
|
2497
|
+
}
|
2498
|
+
}
|
2499
|
+
|
2500
|
+
function can_flatten_body(stat) {
|
2501
|
+
var body = fn.body;
|
2502
|
+
var len = body.length;
|
2503
|
+
if (compressor.option("inline") < 3) {
|
2504
|
+
return len == 1 && return_value(stat);
|
2505
|
+
}
|
2506
|
+
stat = null;
|
2507
|
+
for (var i = 0; i < len; i++) {
|
2508
|
+
var line = body[i];
|
2509
|
+
if (line instanceof AST_Var) {
|
2510
|
+
if (stat && !line.definitions.every((var_def) =>
|
2511
|
+
!var_def.value
|
2512
|
+
)) {
|
2513
|
+
return false;
|
2514
|
+
}
|
2515
|
+
} else if (stat) {
|
2516
|
+
return false;
|
2517
|
+
} else if (!(line instanceof AST_EmptyStatement)) {
|
2518
|
+
stat = line;
|
2519
|
+
}
|
2520
|
+
}
|
2521
|
+
return return_value(stat);
|
2522
|
+
}
|
2523
|
+
|
2524
|
+
function can_inject_args(block_scoped, safe_to_inject) {
|
2525
|
+
for (var i = 0, len = fn.argnames.length; i < len; i++) {
|
2526
|
+
var arg = fn.argnames[i];
|
2527
|
+
if (arg instanceof AST_DefaultAssign) {
|
2528
|
+
if (has_flag(arg.left, UNUSED)) continue;
|
2529
|
+
return false;
|
2530
|
+
}
|
2531
|
+
if (arg instanceof AST_Destructuring) return false;
|
2532
|
+
if (arg instanceof AST_Expansion) {
|
2533
|
+
if (has_flag(arg.expression, UNUSED)) continue;
|
2534
|
+
return false;
|
2535
|
+
}
|
2536
|
+
if (has_flag(arg, UNUSED)) continue;
|
2537
|
+
if (!safe_to_inject
|
2538
|
+
|| block_scoped.has(arg.name)
|
2539
|
+
|| identifier_atom.has(arg.name)
|
2540
|
+
|| scope.conflicting_def(arg.name)) {
|
2541
|
+
return false;
|
2542
|
+
}
|
2543
|
+
if (in_loop) in_loop.push(arg.definition());
|
2544
|
+
}
|
2545
|
+
return true;
|
2546
|
+
}
|
2547
|
+
|
2548
|
+
function can_inject_vars(block_scoped, safe_to_inject) {
|
2549
|
+
var len = fn.body.length;
|
2550
|
+
for (var i = 0; i < len; i++) {
|
2551
|
+
var stat = fn.body[i];
|
2552
|
+
if (!(stat instanceof AST_Var)) continue;
|
2553
|
+
if (!safe_to_inject) return false;
|
2554
|
+
for (var j = stat.definitions.length; --j >= 0;) {
|
2555
|
+
var name = stat.definitions[j].name;
|
2556
|
+
if (name instanceof AST_Destructuring
|
2557
|
+
|| block_scoped.has(name.name)
|
2558
|
+
|| identifier_atom.has(name.name)
|
2559
|
+
|| scope.conflicting_def(name.name)) {
|
2560
|
+
return false;
|
2561
|
+
}
|
2562
|
+
if (in_loop) in_loop.push(name.definition());
|
2563
|
+
}
|
2564
|
+
}
|
2565
|
+
return true;
|
2566
|
+
}
|
2567
|
+
|
2568
|
+
function can_inject_symbols() {
|
2569
|
+
var block_scoped = new Set();
|
2570
|
+
do {
|
2571
|
+
scope = compressor.parent(++level);
|
2572
|
+
if (scope.is_block_scope() && scope.block_scope) {
|
2573
|
+
// TODO this is sometimes undefined during compression.
|
2574
|
+
// But it should always have a value!
|
2575
|
+
scope.block_scope.variables.forEach(function (variable) {
|
2576
|
+
block_scoped.add(variable.name);
|
2577
|
+
});
|
2578
|
+
}
|
2579
|
+
if (scope instanceof AST_Catch) {
|
2580
|
+
// TODO can we delete? AST_Catch is a block scope.
|
2581
|
+
if (scope.argname) {
|
2582
|
+
block_scoped.add(scope.argname.name);
|
2583
|
+
}
|
2584
|
+
} else if (scope instanceof AST_IterationStatement) {
|
2585
|
+
in_loop = [];
|
2586
|
+
} else if (scope instanceof AST_SymbolRef) {
|
2587
|
+
if (scope.fixed_value() instanceof AST_Scope) return false;
|
2588
|
+
}
|
2589
|
+
} while (!(scope instanceof AST_Scope));
|
2590
|
+
|
2591
|
+
var safe_to_inject = !(scope instanceof AST_Toplevel) || compressor.toplevel.vars;
|
2592
|
+
var inline = compressor.option("inline");
|
2593
|
+
if (!can_inject_vars(block_scoped, inline >= 3 && safe_to_inject)) return false;
|
2594
|
+
if (!can_inject_args(block_scoped, inline >= 2 && safe_to_inject)) return false;
|
2595
|
+
return !in_loop || in_loop.length == 0 || !is_reachable(fn, in_loop);
|
2596
|
+
}
|
2597
|
+
|
2598
|
+
function append_var(decls, expressions, name, value) {
|
2599
|
+
var def = name.definition();
|
2600
|
+
|
2601
|
+
// Name already exists, only when a function argument had the same name
|
2602
|
+
const already_appended = scope.variables.has(name.name);
|
2603
|
+
if (!already_appended) {
|
2604
|
+
scope.variables.set(name.name, def);
|
2605
|
+
scope.enclosed.push(def);
|
2606
|
+
decls.push(make_node(AST_VarDef, name, {
|
2607
|
+
name: name,
|
2608
|
+
value: null
|
2609
|
+
}));
|
2610
|
+
}
|
2611
|
+
|
2612
|
+
var sym = make_node(AST_SymbolRef, name, name);
|
2613
|
+
def.references.push(sym);
|
2614
|
+
if (value) expressions.push(make_node(AST_Assign, self, {
|
2615
|
+
operator: "=",
|
2616
|
+
logical: false,
|
2617
|
+
left: sym,
|
2618
|
+
right: value.clone()
|
2619
|
+
}));
|
2620
|
+
}
|
2621
|
+
|
2622
|
+
function flatten_args(decls, expressions) {
|
2623
|
+
var len = fn.argnames.length;
|
2624
|
+
for (var i = self.args.length; --i >= len;) {
|
2625
|
+
expressions.push(self.args[i]);
|
2626
|
+
}
|
2627
|
+
for (i = len; --i >= 0;) {
|
2628
|
+
var name = fn.argnames[i];
|
2629
|
+
var value = self.args[i];
|
2630
|
+
if (has_flag(name, UNUSED) || !name.name || scope.conflicting_def(name.name)) {
|
2631
|
+
if (value) expressions.push(value);
|
2632
|
+
} else {
|
2633
|
+
var symbol = make_node(AST_SymbolVar, name, name);
|
2634
|
+
name.definition().orig.push(symbol);
|
2635
|
+
if (!value && in_loop) value = make_node(AST_Undefined, self);
|
2636
|
+
append_var(decls, expressions, symbol, value);
|
2637
|
+
}
|
2638
|
+
}
|
2639
|
+
decls.reverse();
|
2640
|
+
expressions.reverse();
|
2641
|
+
}
|
2642
|
+
|
2643
|
+
function flatten_vars(decls, expressions) {
|
2644
|
+
var pos = expressions.length;
|
2645
|
+
for (var i = 0, lines = fn.body.length; i < lines; i++) {
|
2646
|
+
var stat = fn.body[i];
|
2647
|
+
if (!(stat instanceof AST_Var)) continue;
|
2648
|
+
for (var j = 0, defs = stat.definitions.length; j < defs; j++) {
|
2649
|
+
var var_def = stat.definitions[j];
|
2650
|
+
var name = var_def.name;
|
2651
|
+
append_var(decls, expressions, name, var_def.value);
|
2652
|
+
if (in_loop && fn.argnames.every((argname) =>
|
2653
|
+
argname.name != name.name
|
2654
|
+
)) {
|
2655
|
+
var def = fn.variables.get(name.name);
|
2656
|
+
var sym = make_node(AST_SymbolRef, name, name);
|
2657
|
+
def.references.push(sym);
|
2658
|
+
expressions.splice(pos++, 0, make_node(AST_Assign, var_def, {
|
2659
|
+
operator: "=",
|
2660
|
+
logical: false,
|
2661
|
+
left: sym,
|
2662
|
+
right: make_node(AST_Undefined, name)
|
2663
|
+
}));
|
2664
|
+
}
|
2665
|
+
}
|
2666
|
+
}
|
2667
|
+
}
|
2668
|
+
|
2669
|
+
function flatten_fn(returned_value) {
|
2670
|
+
var decls = [];
|
2671
|
+
var expressions = [];
|
2672
|
+
flatten_args(decls, expressions);
|
2673
|
+
flatten_vars(decls, expressions);
|
2674
|
+
expressions.push(returned_value);
|
2675
|
+
|
2676
|
+
if (decls.length) {
|
2677
|
+
const i = scope.body.indexOf(compressor.parent(level - 1)) + 1;
|
2678
|
+
scope.body.splice(i, 0, make_node(AST_Var, fn, {
|
2679
|
+
definitions: decls
|
2680
|
+
}));
|
2681
|
+
}
|
2682
|
+
|
2683
|
+
return expressions.map(exp => exp.clone(true));
|
2684
|
+
}
|
2685
|
+
});
|
2686
|
+
|
2687
|
+
def_optimize(AST_New, function(self, compressor) {
|
2688
|
+
if (
|
2689
|
+
compressor.option("unsafe") &&
|
2690
|
+
is_undeclared_ref(self.expression) &&
|
2691
|
+
["Object", "RegExp", "Function", "Error", "Array"].includes(self.expression.name)
|
2692
|
+
) return make_node(AST_Call, self, self).transform(compressor);
|
2693
|
+
return self;
|
2694
|
+
});
|
2695
|
+
|
2696
|
+
def_optimize(AST_Sequence, function(self, compressor) {
|
2697
|
+
if (!compressor.option("side_effects")) return self;
|
2698
|
+
var expressions = [];
|
2699
|
+
filter_for_side_effects();
|
2700
|
+
var end = expressions.length - 1;
|
2701
|
+
trim_right_for_undefined();
|
2702
|
+
if (end == 0) {
|
2703
|
+
self = maintain_this_binding(compressor.parent(), compressor.self(), expressions[0]);
|
2704
|
+
if (!(self instanceof AST_Sequence)) self = self.optimize(compressor);
|
2705
|
+
return self;
|
2706
|
+
}
|
2707
|
+
self.expressions = expressions;
|
2708
|
+
return self;
|
2709
|
+
|
2710
|
+
function filter_for_side_effects() {
|
2711
|
+
var first = first_in_statement(compressor);
|
2712
|
+
var last = self.expressions.length - 1;
|
2713
|
+
self.expressions.forEach(function(expr, index) {
|
2714
|
+
if (index < last) expr = expr.drop_side_effect_free(compressor, first);
|
2715
|
+
if (expr) {
|
2716
|
+
merge_sequence(expressions, expr);
|
2717
|
+
first = false;
|
2718
|
+
}
|
2719
|
+
});
|
2720
|
+
}
|
2721
|
+
|
2722
|
+
function trim_right_for_undefined() {
|
2723
|
+
while (end > 0 && is_undefined(expressions[end], compressor)) end--;
|
2724
|
+
if (end < expressions.length - 1) {
|
2725
|
+
expressions[end] = make_node(AST_UnaryPrefix, self, {
|
2726
|
+
operator : "void",
|
2727
|
+
expression : expressions[end]
|
2728
|
+
});
|
2729
|
+
expressions.length = end + 1;
|
2730
|
+
}
|
2731
|
+
}
|
2732
|
+
});
|
2733
|
+
|
2734
|
+
AST_Unary.DEFMETHOD("lift_sequences", function(compressor) {
|
2735
|
+
if (compressor.option("sequences")) {
|
2736
|
+
if (this.expression instanceof AST_Sequence) {
|
2737
|
+
var x = this.expression.expressions.slice();
|
2738
|
+
var e = this.clone();
|
2739
|
+
e.expression = x.pop();
|
2740
|
+
x.push(e);
|
2741
|
+
return make_sequence(this, x).optimize(compressor);
|
2742
|
+
}
|
2743
|
+
}
|
2744
|
+
return this;
|
2745
|
+
});
|
2746
|
+
|
2747
|
+
def_optimize(AST_UnaryPostfix, function(self, compressor) {
|
2748
|
+
return self.lift_sequences(compressor);
|
2749
|
+
});
|
2750
|
+
|
2751
|
+
def_optimize(AST_UnaryPrefix, function(self, compressor) {
|
2752
|
+
var e = self.expression;
|
2753
|
+
if (
|
2754
|
+
self.operator == "delete" &&
|
2755
|
+
!(
|
2756
|
+
e instanceof AST_SymbolRef ||
|
2757
|
+
e instanceof AST_PropAccess ||
|
2758
|
+
e instanceof AST_Chain ||
|
2759
|
+
is_identifier_atom(e)
|
2760
|
+
)
|
2761
|
+
) {
|
2762
|
+
return make_sequence(self, [e, make_node(AST_True, self)]).optimize(compressor);
|
2763
|
+
}
|
2764
|
+
var seq = self.lift_sequences(compressor);
|
2765
|
+
if (seq !== self) {
|
2766
|
+
return seq;
|
2767
|
+
}
|
2768
|
+
if (compressor.option("side_effects") && self.operator == "void") {
|
2769
|
+
e = e.drop_side_effect_free(compressor);
|
2770
|
+
if (e) {
|
2771
|
+
self.expression = e;
|
2772
|
+
return self;
|
2773
|
+
} else {
|
2774
|
+
return make_node(AST_Undefined, self).optimize(compressor);
|
2775
|
+
}
|
2776
|
+
}
|
2777
|
+
if (compressor.in_boolean_context()) {
|
2778
|
+
switch (self.operator) {
|
2779
|
+
case "!":
|
2780
|
+
if (e instanceof AST_UnaryPrefix && e.operator == "!") {
|
2781
|
+
// !!foo ==> foo, if we're in boolean context
|
2782
|
+
return e.expression;
|
2783
|
+
}
|
2784
|
+
if (e instanceof AST_Binary) {
|
2785
|
+
self = best_of(compressor, self, e.negate(compressor, first_in_statement(compressor)));
|
2786
|
+
}
|
2787
|
+
break;
|
2788
|
+
case "typeof":
|
2789
|
+
// typeof always returns a non-empty string, thus it's
|
2790
|
+
// always true in booleans
|
2791
|
+
// And we don't need to check if it's undeclared, because in typeof, that's OK
|
2792
|
+
return (e instanceof AST_SymbolRef ? make_node(AST_True, self) : make_sequence(self, [
|
2793
|
+
e,
|
2794
|
+
make_node(AST_True, self)
|
2795
|
+
])).optimize(compressor);
|
2796
|
+
}
|
2797
|
+
}
|
2798
|
+
if (self.operator == "-" && e instanceof AST_Infinity) {
|
2799
|
+
e = e.transform(compressor);
|
2800
|
+
}
|
2801
|
+
if (e instanceof AST_Binary
|
2802
|
+
&& (self.operator == "+" || self.operator == "-")
|
2803
|
+
&& (e.operator == "*" || e.operator == "/" || e.operator == "%")) {
|
2804
|
+
return make_node(AST_Binary, self, {
|
2805
|
+
operator: e.operator,
|
2806
|
+
left: make_node(AST_UnaryPrefix, e.left, {
|
2807
|
+
operator: self.operator,
|
2808
|
+
expression: e.left
|
2809
|
+
}),
|
2810
|
+
right: e.right
|
2811
|
+
});
|
2812
|
+
}
|
2813
|
+
// avoids infinite recursion of numerals
|
2814
|
+
if (self.operator != "-"
|
2815
|
+
|| !(e instanceof AST_Number || e instanceof AST_Infinity || e instanceof AST_BigInt)) {
|
2816
|
+
var ev = self.evaluate(compressor);
|
2817
|
+
if (ev !== self) {
|
2818
|
+
ev = make_node_from_constant(ev, self).optimize(compressor);
|
2819
|
+
return best_of(compressor, ev, self);
|
2820
|
+
}
|
2821
|
+
}
|
2822
|
+
return self;
|
2823
|
+
});
|
2824
|
+
|
2825
|
+
AST_Binary.DEFMETHOD("lift_sequences", function(compressor) {
|
2826
|
+
if (compressor.option("sequences")) {
|
2827
|
+
if (this.left instanceof AST_Sequence) {
|
2828
|
+
var x = this.left.expressions.slice();
|
2829
|
+
var e = this.clone();
|
2830
|
+
e.left = x.pop();
|
2831
|
+
x.push(e);
|
2832
|
+
return make_sequence(this, x).optimize(compressor);
|
2833
|
+
}
|
2834
|
+
if (this.right instanceof AST_Sequence && !this.left.has_side_effects(compressor)) {
|
2835
|
+
var assign = this.operator == "=" && this.left instanceof AST_SymbolRef;
|
2836
|
+
var x = this.right.expressions;
|
2837
|
+
var last = x.length - 1;
|
2838
|
+
for (var i = 0; i < last; i++) {
|
2839
|
+
if (!assign && x[i].has_side_effects(compressor)) break;
|
2840
|
+
}
|
2841
|
+
if (i == last) {
|
2842
|
+
x = x.slice();
|
2843
|
+
var e = this.clone();
|
2844
|
+
e.right = x.pop();
|
2845
|
+
x.push(e);
|
2846
|
+
return make_sequence(this, x).optimize(compressor);
|
2847
|
+
} else if (i > 0) {
|
2848
|
+
var e = this.clone();
|
2849
|
+
e.right = make_sequence(this.right, x.slice(i));
|
2850
|
+
x = x.slice(0, i);
|
2851
|
+
x.push(e);
|
2852
|
+
return make_sequence(this, x).optimize(compressor);
|
2853
|
+
}
|
2854
|
+
}
|
2855
|
+
}
|
2856
|
+
return this;
|
2857
|
+
});
|
2858
|
+
|
2859
|
+
var commutativeOperators = makePredicate("== === != !== * & | ^");
|
2860
|
+
function is_object(node) {
|
2861
|
+
return node instanceof AST_Array
|
2862
|
+
|| node instanceof AST_Lambda
|
2863
|
+
|| node instanceof AST_Object
|
2864
|
+
|| node instanceof AST_Class;
|
2865
|
+
}
|
2866
|
+
|
2867
|
+
def_optimize(AST_Binary, function(self, compressor) {
|
2868
|
+
function reversible() {
|
2869
|
+
return self.left.is_constant()
|
2870
|
+
|| self.right.is_constant()
|
2871
|
+
|| !self.left.has_side_effects(compressor)
|
2872
|
+
&& !self.right.has_side_effects(compressor);
|
2873
|
+
}
|
2874
|
+
function reverse(op) {
|
2875
|
+
if (reversible()) {
|
2876
|
+
if (op) self.operator = op;
|
2877
|
+
var tmp = self.left;
|
2878
|
+
self.left = self.right;
|
2879
|
+
self.right = tmp;
|
2880
|
+
}
|
2881
|
+
}
|
2882
|
+
if (commutativeOperators.has(self.operator)) {
|
2883
|
+
if (self.right.is_constant()
|
2884
|
+
&& !self.left.is_constant()) {
|
2885
|
+
// if right is a constant, whatever side effects the
|
2886
|
+
// left side might have could not influence the
|
2887
|
+
// result. hence, force switch.
|
2888
|
+
|
2889
|
+
if (!(self.left instanceof AST_Binary
|
2890
|
+
&& PRECEDENCE[self.left.operator] >= PRECEDENCE[self.operator])) {
|
2891
|
+
reverse();
|
2892
|
+
}
|
2893
|
+
}
|
2894
|
+
}
|
2895
|
+
self = self.lift_sequences(compressor);
|
2896
|
+
if (compressor.option("comparisons")) switch (self.operator) {
|
2897
|
+
case "===":
|
2898
|
+
case "!==":
|
2899
|
+
var is_strict_comparison = true;
|
2900
|
+
if ((self.left.is_string(compressor) && self.right.is_string(compressor)) ||
|
2901
|
+
(self.left.is_number(compressor) && self.right.is_number(compressor)) ||
|
2902
|
+
(self.left.is_boolean() && self.right.is_boolean()) ||
|
2903
|
+
self.left.equivalent_to(self.right)) {
|
2904
|
+
self.operator = self.operator.substr(0, 2);
|
2905
|
+
}
|
2906
|
+
// XXX: intentionally falling down to the next case
|
2907
|
+
case "==":
|
2908
|
+
case "!=":
|
2909
|
+
// void 0 == x => null == x
|
2910
|
+
if (!is_strict_comparison && is_undefined(self.left, compressor)) {
|
2911
|
+
self.left = make_node(AST_Null, self.left);
|
2912
|
+
} else if (compressor.option("typeofs")
|
2913
|
+
// "undefined" == typeof x => undefined === x
|
2914
|
+
&& self.left instanceof AST_String
|
2915
|
+
&& self.left.value == "undefined"
|
2916
|
+
&& self.right instanceof AST_UnaryPrefix
|
2917
|
+
&& self.right.operator == "typeof") {
|
2918
|
+
var expr = self.right.expression;
|
2919
|
+
if (expr instanceof AST_SymbolRef ? expr.is_declared(compressor)
|
2920
|
+
: !(expr instanceof AST_PropAccess && compressor.option("ie8"))) {
|
2921
|
+
self.right = expr;
|
2922
|
+
self.left = make_node(AST_Undefined, self.left).optimize(compressor);
|
2923
|
+
if (self.operator.length == 2) self.operator += "=";
|
2924
|
+
}
|
2925
|
+
} else if (self.left instanceof AST_SymbolRef
|
2926
|
+
// obj !== obj => false
|
2927
|
+
&& self.right instanceof AST_SymbolRef
|
2928
|
+
&& self.left.definition() === self.right.definition()
|
2929
|
+
&& is_object(self.left.fixed_value())) {
|
2930
|
+
return make_node(self.operator[0] == "=" ? AST_True : AST_False, self);
|
2931
|
+
}
|
2932
|
+
break;
|
2933
|
+
case "&&":
|
2934
|
+
case "||":
|
2935
|
+
var lhs = self.left;
|
2936
|
+
if (lhs.operator == self.operator) {
|
2937
|
+
lhs = lhs.right;
|
2938
|
+
}
|
2939
|
+
if (lhs instanceof AST_Binary
|
2940
|
+
&& lhs.operator == (self.operator == "&&" ? "!==" : "===")
|
2941
|
+
&& self.right instanceof AST_Binary
|
2942
|
+
&& lhs.operator == self.right.operator
|
2943
|
+
&& (is_undefined(lhs.left, compressor) && self.right.left instanceof AST_Null
|
2944
|
+
|| lhs.left instanceof AST_Null && is_undefined(self.right.left, compressor))
|
2945
|
+
&& !lhs.right.has_side_effects(compressor)
|
2946
|
+
&& lhs.right.equivalent_to(self.right.right)) {
|
2947
|
+
var combined = make_node(AST_Binary, self, {
|
2948
|
+
operator: lhs.operator.slice(0, -1),
|
2949
|
+
left: make_node(AST_Null, self),
|
2950
|
+
right: lhs.right
|
2951
|
+
});
|
2952
|
+
if (lhs !== self.left) {
|
2953
|
+
combined = make_node(AST_Binary, self, {
|
2954
|
+
operator: self.operator,
|
2955
|
+
left: self.left.left,
|
2956
|
+
right: combined
|
2957
|
+
});
|
2958
|
+
}
|
2959
|
+
return combined;
|
2960
|
+
}
|
2961
|
+
break;
|
2962
|
+
}
|
2963
|
+
if (self.operator == "+" && compressor.in_boolean_context()) {
|
2964
|
+
var ll = self.left.evaluate(compressor);
|
2965
|
+
var rr = self.right.evaluate(compressor);
|
2966
|
+
if (ll && typeof ll == "string") {
|
2967
|
+
return make_sequence(self, [
|
2968
|
+
self.right,
|
2969
|
+
make_node(AST_True, self)
|
2970
|
+
]).optimize(compressor);
|
2971
|
+
}
|
2972
|
+
if (rr && typeof rr == "string") {
|
2973
|
+
return make_sequence(self, [
|
2974
|
+
self.left,
|
2975
|
+
make_node(AST_True, self)
|
2976
|
+
]).optimize(compressor);
|
2977
|
+
}
|
2978
|
+
}
|
2979
|
+
if (compressor.option("comparisons") && self.is_boolean()) {
|
2980
|
+
if (!(compressor.parent() instanceof AST_Binary)
|
2981
|
+
|| compressor.parent() instanceof AST_Assign) {
|
2982
|
+
var negated = make_node(AST_UnaryPrefix, self, {
|
2983
|
+
operator: "!",
|
2984
|
+
expression: self.negate(compressor, first_in_statement(compressor))
|
2985
|
+
});
|
2986
|
+
self = best_of(compressor, self, negated);
|
2987
|
+
}
|
2988
|
+
if (compressor.option("unsafe_comps")) {
|
2989
|
+
switch (self.operator) {
|
2990
|
+
case "<": reverse(">"); break;
|
2991
|
+
case "<=": reverse(">="); break;
|
2992
|
+
}
|
2993
|
+
}
|
2994
|
+
}
|
2995
|
+
if (self.operator == "+") {
|
2996
|
+
if (self.right instanceof AST_String
|
2997
|
+
&& self.right.getValue() == ""
|
2998
|
+
&& self.left.is_string(compressor)) {
|
2999
|
+
return self.left;
|
3000
|
+
}
|
3001
|
+
if (self.left instanceof AST_String
|
3002
|
+
&& self.left.getValue() == ""
|
3003
|
+
&& self.right.is_string(compressor)) {
|
3004
|
+
return self.right;
|
3005
|
+
}
|
3006
|
+
if (self.left instanceof AST_Binary
|
3007
|
+
&& self.left.operator == "+"
|
3008
|
+
&& self.left.left instanceof AST_String
|
3009
|
+
&& self.left.left.getValue() == ""
|
3010
|
+
&& self.right.is_string(compressor)) {
|
3011
|
+
self.left = self.left.right;
|
3012
|
+
return self;
|
3013
|
+
}
|
3014
|
+
}
|
3015
|
+
if (compressor.option("evaluate")) {
|
3016
|
+
switch (self.operator) {
|
3017
|
+
case "&&":
|
3018
|
+
var ll = has_flag(self.left, TRUTHY)
|
3019
|
+
? true
|
3020
|
+
: has_flag(self.left, FALSY)
|
3021
|
+
? false
|
3022
|
+
: self.left.evaluate(compressor);
|
3023
|
+
if (!ll) {
|
3024
|
+
return maintain_this_binding(compressor.parent(), compressor.self(), self.left).optimize(compressor);
|
3025
|
+
} else if (!(ll instanceof AST_Node)) {
|
3026
|
+
return make_sequence(self, [ self.left, self.right ]).optimize(compressor);
|
3027
|
+
}
|
3028
|
+
var rr = self.right.evaluate(compressor);
|
3029
|
+
if (!rr) {
|
3030
|
+
if (compressor.in_boolean_context()) {
|
3031
|
+
return make_sequence(self, [
|
3032
|
+
self.left,
|
3033
|
+
make_node(AST_False, self)
|
3034
|
+
]).optimize(compressor);
|
3035
|
+
} else {
|
3036
|
+
set_flag(self, FALSY);
|
3037
|
+
}
|
3038
|
+
} else if (!(rr instanceof AST_Node)) {
|
3039
|
+
var parent = compressor.parent();
|
3040
|
+
if (parent.operator == "&&" && parent.left === compressor.self() || compressor.in_boolean_context()) {
|
3041
|
+
return self.left.optimize(compressor);
|
3042
|
+
}
|
3043
|
+
}
|
3044
|
+
// x || false && y ---> x ? y : false
|
3045
|
+
if (self.left.operator == "||") {
|
3046
|
+
var lr = self.left.right.evaluate(compressor);
|
3047
|
+
if (!lr) return make_node(AST_Conditional, self, {
|
3048
|
+
condition: self.left.left,
|
3049
|
+
consequent: self.right,
|
3050
|
+
alternative: self.left.right
|
3051
|
+
}).optimize(compressor);
|
3052
|
+
}
|
3053
|
+
break;
|
3054
|
+
case "||":
|
3055
|
+
var ll = has_flag(self.left, TRUTHY)
|
3056
|
+
? true
|
3057
|
+
: has_flag(self.left, FALSY)
|
3058
|
+
? false
|
3059
|
+
: self.left.evaluate(compressor);
|
3060
|
+
if (!ll) {
|
3061
|
+
return make_sequence(self, [ self.left, self.right ]).optimize(compressor);
|
3062
|
+
} else if (!(ll instanceof AST_Node)) {
|
3063
|
+
return maintain_this_binding(compressor.parent(), compressor.self(), self.left).optimize(compressor);
|
3064
|
+
}
|
3065
|
+
var rr = self.right.evaluate(compressor);
|
3066
|
+
if (!rr) {
|
3067
|
+
var parent = compressor.parent();
|
3068
|
+
if (parent.operator == "||" && parent.left === compressor.self() || compressor.in_boolean_context()) {
|
3069
|
+
return self.left.optimize(compressor);
|
3070
|
+
}
|
3071
|
+
} else if (!(rr instanceof AST_Node)) {
|
3072
|
+
if (compressor.in_boolean_context()) {
|
3073
|
+
return make_sequence(self, [
|
3074
|
+
self.left,
|
3075
|
+
make_node(AST_True, self)
|
3076
|
+
]).optimize(compressor);
|
3077
|
+
} else {
|
3078
|
+
set_flag(self, TRUTHY);
|
3079
|
+
}
|
3080
|
+
}
|
3081
|
+
if (self.left.operator == "&&") {
|
3082
|
+
var lr = self.left.right.evaluate(compressor);
|
3083
|
+
if (lr && !(lr instanceof AST_Node)) return make_node(AST_Conditional, self, {
|
3084
|
+
condition: self.left.left,
|
3085
|
+
consequent: self.left.right,
|
3086
|
+
alternative: self.right
|
3087
|
+
}).optimize(compressor);
|
3088
|
+
}
|
3089
|
+
break;
|
3090
|
+
case "??":
|
3091
|
+
if (is_nullish(self.left, compressor)) {
|
3092
|
+
return self.right;
|
3093
|
+
}
|
3094
|
+
|
3095
|
+
var ll = self.left.evaluate(compressor);
|
3096
|
+
if (!(ll instanceof AST_Node)) {
|
3097
|
+
// if we know the value for sure we can simply compute right away.
|
3098
|
+
return ll == null ? self.right : self.left;
|
3099
|
+
}
|
3100
|
+
|
3101
|
+
if (compressor.in_boolean_context()) {
|
3102
|
+
const rr = self.right.evaluate(compressor);
|
3103
|
+
if (!(rr instanceof AST_Node) && !rr) {
|
3104
|
+
return self.left;
|
3105
|
+
}
|
3106
|
+
}
|
3107
|
+
}
|
3108
|
+
var associative = true;
|
3109
|
+
switch (self.operator) {
|
3110
|
+
case "+":
|
3111
|
+
// (x + "foo") + "bar" => x + "foobar"
|
3112
|
+
if (self.right instanceof AST_Constant
|
3113
|
+
&& self.left instanceof AST_Binary
|
3114
|
+
&& self.left.operator == "+"
|
3115
|
+
&& self.left.is_string(compressor)) {
|
3116
|
+
var binary = make_node(AST_Binary, self, {
|
3117
|
+
operator: "+",
|
3118
|
+
left: self.left.right,
|
3119
|
+
right: self.right,
|
3120
|
+
});
|
3121
|
+
var r = binary.optimize(compressor);
|
3122
|
+
if (binary !== r) {
|
3123
|
+
self = make_node(AST_Binary, self, {
|
3124
|
+
operator: "+",
|
3125
|
+
left: self.left.left,
|
3126
|
+
right: r
|
3127
|
+
});
|
3128
|
+
}
|
3129
|
+
}
|
3130
|
+
// (x + "foo") + ("bar" + y) => (x + "foobar") + y
|
3131
|
+
if (self.left instanceof AST_Binary
|
3132
|
+
&& self.left.operator == "+"
|
3133
|
+
&& self.left.is_string(compressor)
|
3134
|
+
&& self.right instanceof AST_Binary
|
3135
|
+
&& self.right.operator == "+"
|
3136
|
+
&& self.right.is_string(compressor)) {
|
3137
|
+
var binary = make_node(AST_Binary, self, {
|
3138
|
+
operator: "+",
|
3139
|
+
left: self.left.right,
|
3140
|
+
right: self.right.left,
|
3141
|
+
});
|
3142
|
+
var m = binary.optimize(compressor);
|
3143
|
+
if (binary !== m) {
|
3144
|
+
self = make_node(AST_Binary, self, {
|
3145
|
+
operator: "+",
|
3146
|
+
left: make_node(AST_Binary, self.left, {
|
3147
|
+
operator: "+",
|
3148
|
+
left: self.left.left,
|
3149
|
+
right: m
|
3150
|
+
}),
|
3151
|
+
right: self.right.right
|
3152
|
+
});
|
3153
|
+
}
|
3154
|
+
}
|
3155
|
+
// a + -b => a - b
|
3156
|
+
if (self.right instanceof AST_UnaryPrefix
|
3157
|
+
&& self.right.operator == "-"
|
3158
|
+
&& self.left.is_number(compressor)) {
|
3159
|
+
self = make_node(AST_Binary, self, {
|
3160
|
+
operator: "-",
|
3161
|
+
left: self.left,
|
3162
|
+
right: self.right.expression
|
3163
|
+
});
|
3164
|
+
break;
|
3165
|
+
}
|
3166
|
+
// -a + b => b - a
|
3167
|
+
if (self.left instanceof AST_UnaryPrefix
|
3168
|
+
&& self.left.operator == "-"
|
3169
|
+
&& reversible()
|
3170
|
+
&& self.right.is_number(compressor)) {
|
3171
|
+
self = make_node(AST_Binary, self, {
|
3172
|
+
operator: "-",
|
3173
|
+
left: self.right,
|
3174
|
+
right: self.left.expression
|
3175
|
+
});
|
3176
|
+
break;
|
3177
|
+
}
|
3178
|
+
// `foo${bar}baz` + 1 => `foo${bar}baz1`
|
3179
|
+
if (self.left instanceof AST_TemplateString) {
|
3180
|
+
var l = self.left;
|
3181
|
+
var r = self.right.evaluate(compressor);
|
3182
|
+
if (r != self.right) {
|
3183
|
+
l.segments[l.segments.length - 1].value += String(r);
|
3184
|
+
return l;
|
3185
|
+
}
|
3186
|
+
}
|
3187
|
+
// 1 + `foo${bar}baz` => `1foo${bar}baz`
|
3188
|
+
if (self.right instanceof AST_TemplateString) {
|
3189
|
+
var r = self.right;
|
3190
|
+
var l = self.left.evaluate(compressor);
|
3191
|
+
if (l != self.left) {
|
3192
|
+
r.segments[0].value = String(l) + r.segments[0].value;
|
3193
|
+
return r;
|
3194
|
+
}
|
3195
|
+
}
|
3196
|
+
// `1${bar}2` + `foo${bar}baz` => `1${bar}2foo${bar}baz`
|
3197
|
+
if (self.left instanceof AST_TemplateString
|
3198
|
+
&& self.right instanceof AST_TemplateString) {
|
3199
|
+
var l = self.left;
|
3200
|
+
var segments = l.segments;
|
3201
|
+
var r = self.right;
|
3202
|
+
segments[segments.length - 1].value += r.segments[0].value;
|
3203
|
+
for (var i = 1; i < r.segments.length; i++) {
|
3204
|
+
segments.push(r.segments[i]);
|
3205
|
+
}
|
3206
|
+
return l;
|
3207
|
+
}
|
3208
|
+
case "*":
|
3209
|
+
associative = compressor.option("unsafe_math");
|
3210
|
+
case "&":
|
3211
|
+
case "|":
|
3212
|
+
case "^":
|
3213
|
+
// a + +b => +b + a
|
3214
|
+
if (self.left.is_number(compressor)
|
3215
|
+
&& self.right.is_number(compressor)
|
3216
|
+
&& reversible()
|
3217
|
+
&& !(self.left instanceof AST_Binary
|
3218
|
+
&& self.left.operator != self.operator
|
3219
|
+
&& PRECEDENCE[self.left.operator] >= PRECEDENCE[self.operator])) {
|
3220
|
+
var reversed = make_node(AST_Binary, self, {
|
3221
|
+
operator: self.operator,
|
3222
|
+
left: self.right,
|
3223
|
+
right: self.left
|
3224
|
+
});
|
3225
|
+
if (self.right instanceof AST_Constant
|
3226
|
+
&& !(self.left instanceof AST_Constant)) {
|
3227
|
+
self = best_of(compressor, reversed, self);
|
3228
|
+
} else {
|
3229
|
+
self = best_of(compressor, self, reversed);
|
3230
|
+
}
|
3231
|
+
}
|
3232
|
+
if (associative && self.is_number(compressor)) {
|
3233
|
+
// a + (b + c) => (a + b) + c
|
3234
|
+
if (self.right instanceof AST_Binary
|
3235
|
+
&& self.right.operator == self.operator) {
|
3236
|
+
self = make_node(AST_Binary, self, {
|
3237
|
+
operator: self.operator,
|
3238
|
+
left: make_node(AST_Binary, self.left, {
|
3239
|
+
operator: self.operator,
|
3240
|
+
left: self.left,
|
3241
|
+
right: self.right.left,
|
3242
|
+
start: self.left.start,
|
3243
|
+
end: self.right.left.end
|
3244
|
+
}),
|
3245
|
+
right: self.right.right
|
3246
|
+
});
|
3247
|
+
}
|
3248
|
+
// (n + 2) + 3 => 5 + n
|
3249
|
+
// (2 * n) * 3 => 6 + n
|
3250
|
+
if (self.right instanceof AST_Constant
|
3251
|
+
&& self.left instanceof AST_Binary
|
3252
|
+
&& self.left.operator == self.operator) {
|
3253
|
+
if (self.left.left instanceof AST_Constant) {
|
3254
|
+
self = make_node(AST_Binary, self, {
|
3255
|
+
operator: self.operator,
|
3256
|
+
left: make_node(AST_Binary, self.left, {
|
3257
|
+
operator: self.operator,
|
3258
|
+
left: self.left.left,
|
3259
|
+
right: self.right,
|
3260
|
+
start: self.left.left.start,
|
3261
|
+
end: self.right.end
|
3262
|
+
}),
|
3263
|
+
right: self.left.right
|
3264
|
+
});
|
3265
|
+
} else if (self.left.right instanceof AST_Constant) {
|
3266
|
+
self = make_node(AST_Binary, self, {
|
3267
|
+
operator: self.operator,
|
3268
|
+
left: make_node(AST_Binary, self.left, {
|
3269
|
+
operator: self.operator,
|
3270
|
+
left: self.left.right,
|
3271
|
+
right: self.right,
|
3272
|
+
start: self.left.right.start,
|
3273
|
+
end: self.right.end
|
3274
|
+
}),
|
3275
|
+
right: self.left.left
|
3276
|
+
});
|
3277
|
+
}
|
3278
|
+
}
|
3279
|
+
// (a | 1) | (2 | d) => (3 | a) | b
|
3280
|
+
if (self.left instanceof AST_Binary
|
3281
|
+
&& self.left.operator == self.operator
|
3282
|
+
&& self.left.right instanceof AST_Constant
|
3283
|
+
&& self.right instanceof AST_Binary
|
3284
|
+
&& self.right.operator == self.operator
|
3285
|
+
&& self.right.left instanceof AST_Constant) {
|
3286
|
+
self = make_node(AST_Binary, self, {
|
3287
|
+
operator: self.operator,
|
3288
|
+
left: make_node(AST_Binary, self.left, {
|
3289
|
+
operator: self.operator,
|
3290
|
+
left: make_node(AST_Binary, self.left.left, {
|
3291
|
+
operator: self.operator,
|
3292
|
+
left: self.left.right,
|
3293
|
+
right: self.right.left,
|
3294
|
+
start: self.left.right.start,
|
3295
|
+
end: self.right.left.end
|
3296
|
+
}),
|
3297
|
+
right: self.left.left
|
3298
|
+
}),
|
3299
|
+
right: self.right.right
|
3300
|
+
});
|
3301
|
+
}
|
3302
|
+
}
|
3303
|
+
}
|
3304
|
+
}
|
3305
|
+
// x && (y && z) ==> x && y && z
|
3306
|
+
// x || (y || z) ==> x || y || z
|
3307
|
+
// x + ("y" + z) ==> x + "y" + z
|
3308
|
+
// "x" + (y + "z")==> "x" + y + "z"
|
3309
|
+
if (self.right instanceof AST_Binary
|
3310
|
+
&& self.right.operator == self.operator
|
3311
|
+
&& (lazy_op.has(self.operator)
|
3312
|
+
|| (self.operator == "+"
|
3313
|
+
&& (self.right.left.is_string(compressor)
|
3314
|
+
|| (self.left.is_string(compressor)
|
3315
|
+
&& self.right.right.is_string(compressor)))))
|
3316
|
+
) {
|
3317
|
+
self.left = make_node(AST_Binary, self.left, {
|
3318
|
+
operator : self.operator,
|
3319
|
+
left : self.left.transform(compressor),
|
3320
|
+
right : self.right.left.transform(compressor)
|
3321
|
+
});
|
3322
|
+
self.right = self.right.right.transform(compressor);
|
3323
|
+
return self.transform(compressor);
|
3324
|
+
}
|
3325
|
+
var ev = self.evaluate(compressor);
|
3326
|
+
if (ev !== self) {
|
3327
|
+
ev = make_node_from_constant(ev, self).optimize(compressor);
|
3328
|
+
return best_of(compressor, ev, self);
|
3329
|
+
}
|
3330
|
+
return self;
|
3331
|
+
});
|
3332
|
+
|
3333
|
+
def_optimize(AST_SymbolExport, function(self) {
|
3334
|
+
return self;
|
3335
|
+
});
|
3336
|
+
|
3337
|
+
function within_array_or_object_literal(compressor) {
|
3338
|
+
var node, level = 0;
|
3339
|
+
while (node = compressor.parent(level++)) {
|
3340
|
+
if (node instanceof AST_Statement) return false;
|
3341
|
+
if (node instanceof AST_Array
|
3342
|
+
|| node instanceof AST_ObjectKeyVal
|
3343
|
+
|| node instanceof AST_Object) {
|
3344
|
+
return true;
|
3345
|
+
}
|
3346
|
+
}
|
3347
|
+
return false;
|
3348
|
+
}
|
3349
|
+
|
3350
|
+
def_optimize(AST_SymbolRef, function(self, compressor) {
|
3351
|
+
if (
|
3352
|
+
!compressor.option("ie8")
|
3353
|
+
&& is_undeclared_ref(self)
|
3354
|
+
&& !compressor.find_parent(AST_With)
|
3355
|
+
) {
|
3356
|
+
switch (self.name) {
|
3357
|
+
case "undefined":
|
3358
|
+
return make_node(AST_Undefined, self).optimize(compressor);
|
3359
|
+
case "NaN":
|
3360
|
+
return make_node(AST_NaN, self).optimize(compressor);
|
3361
|
+
case "Infinity":
|
3362
|
+
return make_node(AST_Infinity, self).optimize(compressor);
|
3363
|
+
}
|
3364
|
+
}
|
3365
|
+
|
3366
|
+
const parent = compressor.parent();
|
3367
|
+
if (compressor.option("reduce_vars") && is_lhs(self, parent) !== self) {
|
3368
|
+
const def = self.definition();
|
3369
|
+
const nearest_scope = find_scope(compressor);
|
3370
|
+
if (compressor.top_retain && def.global && compressor.top_retain(def)) {
|
3371
|
+
def.fixed = false;
|
3372
|
+
def.single_use = false;
|
3373
|
+
return self;
|
3374
|
+
}
|
3375
|
+
|
3376
|
+
let fixed = self.fixed_value();
|
3377
|
+
let single_use = def.single_use
|
3378
|
+
&& !(parent instanceof AST_Call
|
3379
|
+
&& (parent.is_callee_pure(compressor))
|
3380
|
+
|| has_annotation(parent, _NOINLINE))
|
3381
|
+
&& !(parent instanceof AST_Export
|
3382
|
+
&& fixed instanceof AST_Lambda
|
3383
|
+
&& fixed.name);
|
3384
|
+
|
3385
|
+
if (single_use && fixed instanceof AST_Node) {
|
3386
|
+
single_use =
|
3387
|
+
!fixed.has_side_effects(compressor)
|
3388
|
+
&& !fixed.may_throw(compressor);
|
3389
|
+
}
|
3390
|
+
|
3391
|
+
if (single_use && (fixed instanceof AST_Lambda || fixed instanceof AST_Class)) {
|
3392
|
+
if (retain_top_func(fixed, compressor)) {
|
3393
|
+
single_use = false;
|
3394
|
+
} else if (def.scope !== self.scope
|
3395
|
+
&& (def.escaped == 1
|
3396
|
+
|| has_flag(fixed, INLINED)
|
3397
|
+
|| within_array_or_object_literal(compressor)
|
3398
|
+
|| !compressor.option("reduce_funcs"))) {
|
3399
|
+
single_use = false;
|
3400
|
+
} else if (is_recursive_ref(compressor, def)) {
|
3401
|
+
single_use = false;
|
3402
|
+
} else if (def.scope !== self.scope || def.orig[0] instanceof AST_SymbolFunarg) {
|
3403
|
+
single_use = fixed.is_constant_expression(self.scope);
|
3404
|
+
if (single_use == "f") {
|
3405
|
+
var scope = self.scope;
|
3406
|
+
do {
|
3407
|
+
if (scope instanceof AST_Defun || is_func_expr(scope)) {
|
3408
|
+
set_flag(scope, INLINED);
|
3409
|
+
}
|
3410
|
+
} while (scope = scope.parent_scope);
|
3411
|
+
}
|
3412
|
+
}
|
3413
|
+
}
|
3414
|
+
|
3415
|
+
if (single_use && fixed instanceof AST_Lambda) {
|
3416
|
+
single_use =
|
3417
|
+
def.scope === self.scope
|
3418
|
+
&& !scope_encloses_variables_in_this_scope(nearest_scope, fixed)
|
3419
|
+
|| parent instanceof AST_Call
|
3420
|
+
&& parent.expression === self
|
3421
|
+
&& !scope_encloses_variables_in_this_scope(nearest_scope, fixed)
|
3422
|
+
&& !(fixed.name && fixed.name.definition().recursive_refs > 0);
|
3423
|
+
}
|
3424
|
+
|
3425
|
+
if (single_use && fixed) {
|
3426
|
+
if (fixed instanceof AST_DefClass) {
|
3427
|
+
set_flag(fixed, SQUEEZED);
|
3428
|
+
fixed = make_node(AST_ClassExpression, fixed, fixed);
|
3429
|
+
}
|
3430
|
+
if (fixed instanceof AST_Defun) {
|
3431
|
+
set_flag(fixed, SQUEEZED);
|
3432
|
+
fixed = make_node(AST_Function, fixed, fixed);
|
3433
|
+
}
|
3434
|
+
if (def.recursive_refs > 0 && fixed.name instanceof AST_SymbolDefun) {
|
3435
|
+
const defun_def = fixed.name.definition();
|
3436
|
+
let lambda_def = fixed.variables.get(fixed.name.name);
|
3437
|
+
let name = lambda_def && lambda_def.orig[0];
|
3438
|
+
if (!(name instanceof AST_SymbolLambda)) {
|
3439
|
+
name = make_node(AST_SymbolLambda, fixed.name, fixed.name);
|
3440
|
+
name.scope = fixed;
|
3441
|
+
fixed.name = name;
|
3442
|
+
lambda_def = fixed.def_function(name);
|
3443
|
+
}
|
3444
|
+
walk(fixed, node => {
|
3445
|
+
if (node instanceof AST_SymbolRef && node.definition() === defun_def) {
|
3446
|
+
node.thedef = lambda_def;
|
3447
|
+
lambda_def.references.push(node);
|
3448
|
+
}
|
3449
|
+
});
|
3450
|
+
}
|
3451
|
+
if (
|
3452
|
+
(fixed instanceof AST_Lambda || fixed instanceof AST_Class)
|
3453
|
+
&& fixed.parent_scope !== nearest_scope
|
3454
|
+
) {
|
3455
|
+
fixed = fixed.clone(true, compressor.get_toplevel());
|
3456
|
+
|
3457
|
+
nearest_scope.add_child_scope(fixed);
|
3458
|
+
}
|
3459
|
+
return fixed.optimize(compressor);
|
3460
|
+
}
|
3461
|
+
|
3462
|
+
// multiple uses
|
3463
|
+
if (fixed) {
|
3464
|
+
let replace;
|
3465
|
+
|
3466
|
+
if (fixed instanceof AST_This) {
|
3467
|
+
if (!(def.orig[0] instanceof AST_SymbolFunarg)
|
3468
|
+
&& def.references.every((ref) =>
|
3469
|
+
def.scope === ref.scope
|
3470
|
+
)) {
|
3471
|
+
replace = fixed;
|
3472
|
+
}
|
3473
|
+
} else {
|
3474
|
+
var ev = fixed.evaluate(compressor);
|
3475
|
+
if (
|
3476
|
+
ev !== fixed
|
3477
|
+
&& (compressor.option("unsafe_regexp") || !(ev instanceof RegExp))
|
3478
|
+
) {
|
3479
|
+
replace = make_node_from_constant(ev, fixed);
|
3480
|
+
}
|
3481
|
+
}
|
3482
|
+
|
3483
|
+
if (replace) {
|
3484
|
+
const name_length = self.size(compressor);
|
3485
|
+
const replace_size = replace.size(compressor);
|
3486
|
+
|
3487
|
+
let overhead = 0;
|
3488
|
+
if (compressor.option("unused") && !compressor.exposed(def)) {
|
3489
|
+
overhead =
|
3490
|
+
(name_length + 2 + replace_size) /
|
3491
|
+
(def.references.length - def.assignments);
|
3492
|
+
}
|
3493
|
+
|
3494
|
+
if (replace_size <= name_length + overhead) {
|
3495
|
+
return replace;
|
3496
|
+
}
|
3497
|
+
}
|
3498
|
+
}
|
3499
|
+
}
|
3500
|
+
|
3501
|
+
return self;
|
3502
|
+
});
|
3503
|
+
|
3504
|
+
function scope_encloses_variables_in_this_scope(scope, pulled_scope) {
|
3505
|
+
for (const enclosed of pulled_scope.enclosed) {
|
3506
|
+
if (pulled_scope.variables.has(enclosed.name)) {
|
3507
|
+
continue;
|
3508
|
+
}
|
3509
|
+
const looked_up = scope.find_variable(enclosed.name);
|
3510
|
+
if (looked_up) {
|
3511
|
+
if (looked_up === enclosed) continue;
|
3512
|
+
return true;
|
3513
|
+
}
|
3514
|
+
}
|
3515
|
+
return false;
|
3516
|
+
}
|
3517
|
+
|
3518
|
+
function is_atomic(lhs, self) {
|
3519
|
+
return lhs instanceof AST_SymbolRef || lhs.TYPE === self.TYPE;
|
3520
|
+
}
|
3521
|
+
|
3522
|
+
def_optimize(AST_Undefined, function(self, compressor) {
|
3523
|
+
if (compressor.option("unsafe_undefined")) {
|
3524
|
+
var undef = find_variable(compressor, "undefined");
|
3525
|
+
if (undef) {
|
3526
|
+
var ref = make_node(AST_SymbolRef, self, {
|
3527
|
+
name : "undefined",
|
3528
|
+
scope : undef.scope,
|
3529
|
+
thedef : undef
|
3530
|
+
});
|
3531
|
+
set_flag(ref, UNDEFINED);
|
3532
|
+
return ref;
|
3533
|
+
}
|
3534
|
+
}
|
3535
|
+
var lhs = is_lhs(compressor.self(), compressor.parent());
|
3536
|
+
if (lhs && is_atomic(lhs, self)) return self;
|
3537
|
+
return make_node(AST_UnaryPrefix, self, {
|
3538
|
+
operator: "void",
|
3539
|
+
expression: make_node(AST_Number, self, {
|
3540
|
+
value: 0
|
3541
|
+
})
|
3542
|
+
});
|
3543
|
+
});
|
3544
|
+
|
3545
|
+
def_optimize(AST_Infinity, function(self, compressor) {
|
3546
|
+
var lhs = is_lhs(compressor.self(), compressor.parent());
|
3547
|
+
if (lhs && is_atomic(lhs, self)) return self;
|
3548
|
+
if (
|
3549
|
+
compressor.option("keep_infinity")
|
3550
|
+
&& !(lhs && !is_atomic(lhs, self))
|
3551
|
+
&& !find_variable(compressor, "Infinity")
|
3552
|
+
) {
|
3553
|
+
return self;
|
3554
|
+
}
|
3555
|
+
return make_node(AST_Binary, self, {
|
3556
|
+
operator: "/",
|
3557
|
+
left: make_node(AST_Number, self, {
|
3558
|
+
value: 1
|
3559
|
+
}),
|
3560
|
+
right: make_node(AST_Number, self, {
|
3561
|
+
value: 0
|
3562
|
+
})
|
3563
|
+
});
|
3564
|
+
});
|
3565
|
+
|
3566
|
+
def_optimize(AST_NaN, function(self, compressor) {
|
3567
|
+
var lhs = is_lhs(compressor.self(), compressor.parent());
|
3568
|
+
if (lhs && !is_atomic(lhs, self)
|
3569
|
+
|| find_variable(compressor, "NaN")) {
|
3570
|
+
return make_node(AST_Binary, self, {
|
3571
|
+
operator: "/",
|
3572
|
+
left: make_node(AST_Number, self, {
|
3573
|
+
value: 0
|
3574
|
+
}),
|
3575
|
+
right: make_node(AST_Number, self, {
|
3576
|
+
value: 0
|
3577
|
+
})
|
3578
|
+
});
|
3579
|
+
}
|
3580
|
+
return self;
|
3581
|
+
});
|
3582
|
+
|
3583
|
+
function is_reachable(self, defs) {
|
3584
|
+
const find_ref = node => {
|
3585
|
+
if (node instanceof AST_SymbolRef && member(node.definition(), defs)) {
|
3586
|
+
return walk_abort;
|
3587
|
+
}
|
3588
|
+
};
|
3589
|
+
|
3590
|
+
return walk_parent(self, (node, info) => {
|
3591
|
+
if (node instanceof AST_Scope && node !== self) {
|
3592
|
+
var parent = info.parent();
|
3593
|
+
|
3594
|
+
if (
|
3595
|
+
parent instanceof AST_Call
|
3596
|
+
&& parent.expression === node
|
3597
|
+
// Async/Generators aren't guaranteed to sync evaluate all of
|
3598
|
+
// their body steps, so it's possible they close over the variable.
|
3599
|
+
&& !(node.async || node.is_generator)
|
3600
|
+
) {
|
3601
|
+
return;
|
3602
|
+
}
|
3603
|
+
|
3604
|
+
if (walk(node, find_ref)) return walk_abort;
|
3605
|
+
|
3606
|
+
return true;
|
3607
|
+
}
|
3608
|
+
});
|
3609
|
+
}
|
3610
|
+
|
3611
|
+
const ASSIGN_OPS = makePredicate("+ - / * % >> << >>> | ^ &");
|
3612
|
+
const ASSIGN_OPS_COMMUTATIVE = makePredicate("* | ^ &");
|
3613
|
+
def_optimize(AST_Assign, function(self, compressor) {
|
3614
|
+
if (self.logical) {
|
3615
|
+
return self.lift_sequences(compressor);
|
3616
|
+
}
|
3617
|
+
|
3618
|
+
var def;
|
3619
|
+
if (compressor.option("dead_code")
|
3620
|
+
&& self.left instanceof AST_SymbolRef
|
3621
|
+
&& (def = self.left.definition()).scope === compressor.find_parent(AST_Lambda)) {
|
3622
|
+
var level = 0, node, parent = self;
|
3623
|
+
do {
|
3624
|
+
node = parent;
|
3625
|
+
parent = compressor.parent(level++);
|
3626
|
+
if (parent instanceof AST_Exit) {
|
3627
|
+
if (in_try(level, parent)) break;
|
3628
|
+
if (is_reachable(def.scope, [ def ])) break;
|
3629
|
+
if (self.operator == "=") return self.right;
|
3630
|
+
def.fixed = false;
|
3631
|
+
return make_node(AST_Binary, self, {
|
3632
|
+
operator: self.operator.slice(0, -1),
|
3633
|
+
left: self.left,
|
3634
|
+
right: self.right
|
3635
|
+
}).optimize(compressor);
|
3636
|
+
}
|
3637
|
+
} while (parent instanceof AST_Binary && parent.right === node
|
3638
|
+
|| parent instanceof AST_Sequence && parent.tail_node() === node);
|
3639
|
+
}
|
3640
|
+
self = self.lift_sequences(compressor);
|
3641
|
+
if (self.operator == "=" && self.left instanceof AST_SymbolRef && self.right instanceof AST_Binary) {
|
3642
|
+
// x = expr1 OP expr2
|
3643
|
+
if (self.right.left instanceof AST_SymbolRef
|
3644
|
+
&& self.right.left.name == self.left.name
|
3645
|
+
&& ASSIGN_OPS.has(self.right.operator)) {
|
3646
|
+
// x = x - 2 ---> x -= 2
|
3647
|
+
self.operator = self.right.operator + "=";
|
3648
|
+
self.right = self.right.right;
|
3649
|
+
} else if (self.right.right instanceof AST_SymbolRef
|
3650
|
+
&& self.right.right.name == self.left.name
|
3651
|
+
&& ASSIGN_OPS_COMMUTATIVE.has(self.right.operator)
|
3652
|
+
&& !self.right.left.has_side_effects(compressor)) {
|
3653
|
+
// x = 2 & x ---> x &= 2
|
3654
|
+
self.operator = self.right.operator + "=";
|
3655
|
+
self.right = self.right.left;
|
3656
|
+
}
|
3657
|
+
}
|
3658
|
+
return self;
|
3659
|
+
|
3660
|
+
function in_try(level, node) {
|
3661
|
+
var right = self.right;
|
3662
|
+
self.right = make_node(AST_Null, right);
|
3663
|
+
var may_throw = node.may_throw(compressor);
|
3664
|
+
self.right = right;
|
3665
|
+
var scope = self.left.definition().scope;
|
3666
|
+
var parent;
|
3667
|
+
while ((parent = compressor.parent(level++)) !== scope) {
|
3668
|
+
if (parent instanceof AST_Try) {
|
3669
|
+
if (parent.bfinally) return true;
|
3670
|
+
if (may_throw && parent.bcatch) return true;
|
3671
|
+
}
|
3672
|
+
}
|
3673
|
+
}
|
3674
|
+
});
|
3675
|
+
|
3676
|
+
def_optimize(AST_DefaultAssign, function(self, compressor) {
|
3677
|
+
if (!compressor.option("evaluate")) {
|
3678
|
+
return self;
|
3679
|
+
}
|
3680
|
+
var evaluateRight = self.right.evaluate(compressor);
|
3681
|
+
|
3682
|
+
// `[x = undefined] = foo` ---> `[x] = foo`
|
3683
|
+
if (evaluateRight === undefined) {
|
3684
|
+
self = self.left;
|
3685
|
+
} else if (evaluateRight !== self.right) {
|
3686
|
+
evaluateRight = make_node_from_constant(evaluateRight, self.right);
|
3687
|
+
self.right = best_of_expression(evaluateRight, self.right);
|
3688
|
+
}
|
3689
|
+
|
3690
|
+
return self;
|
3691
|
+
});
|
3692
|
+
|
3693
|
+
function is_nullish_check(check, check_subject, compressor) {
|
3694
|
+
if (check_subject.may_throw(compressor)) return false;
|
3695
|
+
|
3696
|
+
let nullish_side;
|
3697
|
+
|
3698
|
+
// foo == null
|
3699
|
+
if (
|
3700
|
+
check instanceof AST_Binary
|
3701
|
+
&& check.operator === "=="
|
3702
|
+
// which side is nullish?
|
3703
|
+
&& (
|
3704
|
+
(nullish_side = is_nullish(check.left, compressor) && check.left)
|
3705
|
+
|| (nullish_side = is_nullish(check.right, compressor) && check.right)
|
3706
|
+
)
|
3707
|
+
// is the other side the same as the check_subject
|
3708
|
+
&& (
|
3709
|
+
nullish_side === check.left
|
3710
|
+
? check.right
|
3711
|
+
: check.left
|
3712
|
+
).equivalent_to(check_subject)
|
3713
|
+
) {
|
3714
|
+
return true;
|
3715
|
+
}
|
3716
|
+
|
3717
|
+
// foo === null || foo === undefined
|
3718
|
+
if (check instanceof AST_Binary && check.operator === "||") {
|
3719
|
+
let null_cmp;
|
3720
|
+
let undefined_cmp;
|
3721
|
+
|
3722
|
+
const find_comparison = cmp => {
|
3723
|
+
if (!(
|
3724
|
+
cmp instanceof AST_Binary
|
3725
|
+
&& (cmp.operator === "===" || cmp.operator === "==")
|
3726
|
+
)) {
|
3727
|
+
return false;
|
3728
|
+
}
|
3729
|
+
|
3730
|
+
let found = 0;
|
3731
|
+
let defined_side;
|
3732
|
+
|
3733
|
+
if (cmp.left instanceof AST_Null) {
|
3734
|
+
found++;
|
3735
|
+
null_cmp = cmp;
|
3736
|
+
defined_side = cmp.right;
|
3737
|
+
}
|
3738
|
+
if (cmp.right instanceof AST_Null) {
|
3739
|
+
found++;
|
3740
|
+
null_cmp = cmp;
|
3741
|
+
defined_side = cmp.left;
|
3742
|
+
}
|
3743
|
+
if (is_undefined(cmp.left, compressor)) {
|
3744
|
+
found++;
|
3745
|
+
undefined_cmp = cmp;
|
3746
|
+
defined_side = cmp.right;
|
3747
|
+
}
|
3748
|
+
if (is_undefined(cmp.right, compressor)) {
|
3749
|
+
found++;
|
3750
|
+
undefined_cmp = cmp;
|
3751
|
+
defined_side = cmp.left;
|
3752
|
+
}
|
3753
|
+
|
3754
|
+
if (found !== 1) {
|
3755
|
+
return false;
|
3756
|
+
}
|
3757
|
+
|
3758
|
+
if (!defined_side.equivalent_to(check_subject)) {
|
3759
|
+
return false;
|
3760
|
+
}
|
3761
|
+
|
3762
|
+
return true;
|
3763
|
+
};
|
3764
|
+
|
3765
|
+
if (!find_comparison(check.left)) return false;
|
3766
|
+
if (!find_comparison(check.right)) return false;
|
3767
|
+
|
3768
|
+
if (null_cmp && undefined_cmp && null_cmp !== undefined_cmp) {
|
3769
|
+
return true;
|
3770
|
+
}
|
3771
|
+
}
|
3772
|
+
|
3773
|
+
return false;
|
3774
|
+
}
|
3775
|
+
|
3776
|
+
def_optimize(AST_Conditional, function(self, compressor) {
|
3777
|
+
if (!compressor.option("conditionals")) return self;
|
3778
|
+
// This looks like lift_sequences(), should probably be under "sequences"
|
3779
|
+
if (self.condition instanceof AST_Sequence) {
|
3780
|
+
var expressions = self.condition.expressions.slice();
|
3781
|
+
self.condition = expressions.pop();
|
3782
|
+
expressions.push(self);
|
3783
|
+
return make_sequence(self, expressions);
|
3784
|
+
}
|
3785
|
+
var cond = self.condition.evaluate(compressor);
|
3786
|
+
if (cond !== self.condition) {
|
3787
|
+
if (cond) {
|
3788
|
+
return maintain_this_binding(compressor.parent(), compressor.self(), self.consequent);
|
3789
|
+
} else {
|
3790
|
+
return maintain_this_binding(compressor.parent(), compressor.self(), self.alternative);
|
3791
|
+
}
|
3792
|
+
}
|
3793
|
+
var negated = cond.negate(compressor, first_in_statement(compressor));
|
3794
|
+
if (best_of(compressor, cond, negated) === negated) {
|
3795
|
+
self = make_node(AST_Conditional, self, {
|
3796
|
+
condition: negated,
|
3797
|
+
consequent: self.alternative,
|
3798
|
+
alternative: self.consequent
|
3799
|
+
});
|
3800
|
+
}
|
3801
|
+
var condition = self.condition;
|
3802
|
+
var consequent = self.consequent;
|
3803
|
+
var alternative = self.alternative;
|
3804
|
+
// x?x:y --> x||y
|
3805
|
+
if (condition instanceof AST_SymbolRef
|
3806
|
+
&& consequent instanceof AST_SymbolRef
|
3807
|
+
&& condition.definition() === consequent.definition()) {
|
3808
|
+
return make_node(AST_Binary, self, {
|
3809
|
+
operator: "||",
|
3810
|
+
left: condition,
|
3811
|
+
right: alternative
|
3812
|
+
});
|
3813
|
+
}
|
3814
|
+
// if (foo) exp = something; else exp = something_else;
|
3815
|
+
// |
|
3816
|
+
// v
|
3817
|
+
// exp = foo ? something : something_else;
|
3818
|
+
if (
|
3819
|
+
consequent instanceof AST_Assign
|
3820
|
+
&& alternative instanceof AST_Assign
|
3821
|
+
&& consequent.operator === alternative.operator
|
3822
|
+
&& consequent.logical === alternative.logical
|
3823
|
+
&& consequent.left.equivalent_to(alternative.left)
|
3824
|
+
&& (!self.condition.has_side_effects(compressor)
|
3825
|
+
|| consequent.operator == "="
|
3826
|
+
&& !consequent.left.has_side_effects(compressor))
|
3827
|
+
) {
|
3828
|
+
return make_node(AST_Assign, self, {
|
3829
|
+
operator: consequent.operator,
|
3830
|
+
left: consequent.left,
|
3831
|
+
logical: consequent.logical,
|
3832
|
+
right: make_node(AST_Conditional, self, {
|
3833
|
+
condition: self.condition,
|
3834
|
+
consequent: consequent.right,
|
3835
|
+
alternative: alternative.right
|
3836
|
+
})
|
3837
|
+
});
|
3838
|
+
}
|
3839
|
+
// x ? y(a) : y(b) --> y(x ? a : b)
|
3840
|
+
var arg_index;
|
3841
|
+
if (consequent instanceof AST_Call
|
3842
|
+
&& alternative.TYPE === consequent.TYPE
|
3843
|
+
&& consequent.args.length > 0
|
3844
|
+
&& consequent.args.length == alternative.args.length
|
3845
|
+
&& consequent.expression.equivalent_to(alternative.expression)
|
3846
|
+
&& !self.condition.has_side_effects(compressor)
|
3847
|
+
&& !consequent.expression.has_side_effects(compressor)
|
3848
|
+
&& typeof (arg_index = single_arg_diff()) == "number") {
|
3849
|
+
var node = consequent.clone();
|
3850
|
+
node.args[arg_index] = make_node(AST_Conditional, self, {
|
3851
|
+
condition: self.condition,
|
3852
|
+
consequent: consequent.args[arg_index],
|
3853
|
+
alternative: alternative.args[arg_index]
|
3854
|
+
});
|
3855
|
+
return node;
|
3856
|
+
}
|
3857
|
+
// a ? b : c ? b : d --> (a || c) ? b : d
|
3858
|
+
if (alternative instanceof AST_Conditional
|
3859
|
+
&& consequent.equivalent_to(alternative.consequent)) {
|
3860
|
+
return make_node(AST_Conditional, self, {
|
3861
|
+
condition: make_node(AST_Binary, self, {
|
3862
|
+
operator: "||",
|
3863
|
+
left: condition,
|
3864
|
+
right: alternative.condition
|
3865
|
+
}),
|
3866
|
+
consequent: consequent,
|
3867
|
+
alternative: alternative.alternative
|
3868
|
+
}).optimize(compressor);
|
3869
|
+
}
|
3870
|
+
|
3871
|
+
// a == null ? b : a -> a ?? b
|
3872
|
+
if (
|
3873
|
+
compressor.option("ecma") >= 2020 &&
|
3874
|
+
is_nullish_check(condition, alternative, compressor)
|
3875
|
+
) {
|
3876
|
+
return make_node(AST_Binary, self, {
|
3877
|
+
operator: "??",
|
3878
|
+
left: alternative,
|
3879
|
+
right: consequent
|
3880
|
+
}).optimize(compressor);
|
3881
|
+
}
|
3882
|
+
|
3883
|
+
// a ? b : (c, b) --> (a || c), b
|
3884
|
+
if (alternative instanceof AST_Sequence
|
3885
|
+
&& consequent.equivalent_to(alternative.expressions[alternative.expressions.length - 1])) {
|
3886
|
+
return make_sequence(self, [
|
3887
|
+
make_node(AST_Binary, self, {
|
3888
|
+
operator: "||",
|
3889
|
+
left: condition,
|
3890
|
+
right: make_sequence(self, alternative.expressions.slice(0, -1))
|
3891
|
+
}),
|
3892
|
+
consequent
|
3893
|
+
]).optimize(compressor);
|
3894
|
+
}
|
3895
|
+
// a ? b : (c && b) --> (a || c) && b
|
3896
|
+
if (alternative instanceof AST_Binary
|
3897
|
+
&& alternative.operator == "&&"
|
3898
|
+
&& consequent.equivalent_to(alternative.right)) {
|
3899
|
+
return make_node(AST_Binary, self, {
|
3900
|
+
operator: "&&",
|
3901
|
+
left: make_node(AST_Binary, self, {
|
3902
|
+
operator: "||",
|
3903
|
+
left: condition,
|
3904
|
+
right: alternative.left
|
3905
|
+
}),
|
3906
|
+
right: consequent
|
3907
|
+
}).optimize(compressor);
|
3908
|
+
}
|
3909
|
+
// x?y?z:a:a --> x&&y?z:a
|
3910
|
+
if (consequent instanceof AST_Conditional
|
3911
|
+
&& consequent.alternative.equivalent_to(alternative)) {
|
3912
|
+
return make_node(AST_Conditional, self, {
|
3913
|
+
condition: make_node(AST_Binary, self, {
|
3914
|
+
left: self.condition,
|
3915
|
+
operator: "&&",
|
3916
|
+
right: consequent.condition
|
3917
|
+
}),
|
3918
|
+
consequent: consequent.consequent,
|
3919
|
+
alternative: alternative
|
3920
|
+
});
|
3921
|
+
}
|
3922
|
+
// x ? y : y --> x, y
|
3923
|
+
if (consequent.equivalent_to(alternative)) {
|
3924
|
+
return make_sequence(self, [
|
3925
|
+
self.condition,
|
3926
|
+
consequent
|
3927
|
+
]).optimize(compressor);
|
3928
|
+
}
|
3929
|
+
// x ? y || z : z --> x && y || z
|
3930
|
+
if (consequent instanceof AST_Binary
|
3931
|
+
&& consequent.operator == "||"
|
3932
|
+
&& consequent.right.equivalent_to(alternative)) {
|
3933
|
+
return make_node(AST_Binary, self, {
|
3934
|
+
operator: "||",
|
3935
|
+
left: make_node(AST_Binary, self, {
|
3936
|
+
operator: "&&",
|
3937
|
+
left: self.condition,
|
3938
|
+
right: consequent.left
|
3939
|
+
}),
|
3940
|
+
right: alternative
|
3941
|
+
}).optimize(compressor);
|
3942
|
+
}
|
3943
|
+
|
3944
|
+
const in_bool = compressor.in_boolean_context();
|
3945
|
+
if (is_true(self.consequent)) {
|
3946
|
+
if (is_false(self.alternative)) {
|
3947
|
+
// c ? true : false ---> !!c
|
3948
|
+
return booleanize(self.condition);
|
3949
|
+
}
|
3950
|
+
// c ? true : x ---> !!c || x
|
3951
|
+
return make_node(AST_Binary, self, {
|
3952
|
+
operator: "||",
|
3953
|
+
left: booleanize(self.condition),
|
3954
|
+
right: self.alternative
|
3955
|
+
});
|
3956
|
+
}
|
3957
|
+
if (is_false(self.consequent)) {
|
3958
|
+
if (is_true(self.alternative)) {
|
3959
|
+
// c ? false : true ---> !c
|
3960
|
+
return booleanize(self.condition.negate(compressor));
|
3961
|
+
}
|
3962
|
+
// c ? false : x ---> !c && x
|
3963
|
+
return make_node(AST_Binary, self, {
|
3964
|
+
operator: "&&",
|
3965
|
+
left: booleanize(self.condition.negate(compressor)),
|
3966
|
+
right: self.alternative
|
3967
|
+
});
|
3968
|
+
}
|
3969
|
+
if (is_true(self.alternative)) {
|
3970
|
+
// c ? x : true ---> !c || x
|
3971
|
+
return make_node(AST_Binary, self, {
|
3972
|
+
operator: "||",
|
3973
|
+
left: booleanize(self.condition.negate(compressor)),
|
3974
|
+
right: self.consequent
|
3975
|
+
});
|
3976
|
+
}
|
3977
|
+
if (is_false(self.alternative)) {
|
3978
|
+
// c ? x : false ---> !!c && x
|
3979
|
+
return make_node(AST_Binary, self, {
|
3980
|
+
operator: "&&",
|
3981
|
+
left: booleanize(self.condition),
|
3982
|
+
right: self.consequent
|
3983
|
+
});
|
3984
|
+
}
|
3985
|
+
|
3986
|
+
return self;
|
3987
|
+
|
3988
|
+
function booleanize(node) {
|
3989
|
+
if (node.is_boolean()) return node;
|
3990
|
+
// !!expression
|
3991
|
+
return make_node(AST_UnaryPrefix, node, {
|
3992
|
+
operator: "!",
|
3993
|
+
expression: node.negate(compressor)
|
3994
|
+
});
|
3995
|
+
}
|
3996
|
+
|
3997
|
+
// AST_True or !0
|
3998
|
+
function is_true(node) {
|
3999
|
+
return node instanceof AST_True
|
4000
|
+
|| in_bool
|
4001
|
+
&& node instanceof AST_Constant
|
4002
|
+
&& node.getValue()
|
4003
|
+
|| (node instanceof AST_UnaryPrefix
|
4004
|
+
&& node.operator == "!"
|
4005
|
+
&& node.expression instanceof AST_Constant
|
4006
|
+
&& !node.expression.getValue());
|
4007
|
+
}
|
4008
|
+
// AST_False or !1
|
4009
|
+
function is_false(node) {
|
4010
|
+
return node instanceof AST_False
|
4011
|
+
|| in_bool
|
4012
|
+
&& node instanceof AST_Constant
|
4013
|
+
&& !node.getValue()
|
4014
|
+
|| (node instanceof AST_UnaryPrefix
|
4015
|
+
&& node.operator == "!"
|
4016
|
+
&& node.expression instanceof AST_Constant
|
4017
|
+
&& node.expression.getValue());
|
4018
|
+
}
|
4019
|
+
|
4020
|
+
function single_arg_diff() {
|
4021
|
+
var a = consequent.args;
|
4022
|
+
var b = alternative.args;
|
4023
|
+
for (var i = 0, len = a.length; i < len; i++) {
|
4024
|
+
if (a[i] instanceof AST_Expansion) return;
|
4025
|
+
if (!a[i].equivalent_to(b[i])) {
|
4026
|
+
if (b[i] instanceof AST_Expansion) return;
|
4027
|
+
for (var j = i + 1; j < len; j++) {
|
4028
|
+
if (a[j] instanceof AST_Expansion) return;
|
4029
|
+
if (!a[j].equivalent_to(b[j])) return;
|
4030
|
+
}
|
4031
|
+
return i;
|
4032
|
+
}
|
4033
|
+
}
|
4034
|
+
}
|
4035
|
+
});
|
4036
|
+
|
4037
|
+
def_optimize(AST_Boolean, function(self, compressor) {
|
4038
|
+
if (compressor.in_boolean_context()) return make_node(AST_Number, self, {
|
4039
|
+
value: +self.value
|
4040
|
+
});
|
4041
|
+
var p = compressor.parent();
|
4042
|
+
if (compressor.option("booleans_as_integers")) {
|
4043
|
+
if (p instanceof AST_Binary && (p.operator == "===" || p.operator == "!==")) {
|
4044
|
+
p.operator = p.operator.replace(/=$/, "");
|
4045
|
+
}
|
4046
|
+
return make_node(AST_Number, self, {
|
4047
|
+
value: +self.value
|
4048
|
+
});
|
4049
|
+
}
|
4050
|
+
if (compressor.option("booleans")) {
|
4051
|
+
if (p instanceof AST_Binary && (p.operator == "=="
|
4052
|
+
|| p.operator == "!=")) {
|
4053
|
+
return make_node(AST_Number, self, {
|
4054
|
+
value: +self.value
|
4055
|
+
});
|
4056
|
+
}
|
4057
|
+
return make_node(AST_UnaryPrefix, self, {
|
4058
|
+
operator: "!",
|
4059
|
+
expression: make_node(AST_Number, self, {
|
4060
|
+
value: 1 - self.value
|
4061
|
+
})
|
4062
|
+
});
|
4063
|
+
}
|
4064
|
+
return self;
|
4065
|
+
});
|
4066
|
+
|
4067
|
+
function safe_to_flatten(value, compressor) {
|
4068
|
+
if (value instanceof AST_SymbolRef) {
|
4069
|
+
value = value.fixed_value();
|
4070
|
+
}
|
4071
|
+
if (!value) return false;
|
4072
|
+
if (!(value instanceof AST_Lambda || value instanceof AST_Class)) return true;
|
4073
|
+
if (!(value instanceof AST_Lambda && value.contains_this())) return true;
|
4074
|
+
return compressor.parent() instanceof AST_New;
|
4075
|
+
}
|
4076
|
+
|
4077
|
+
AST_PropAccess.DEFMETHOD("flatten_object", function(key, compressor) {
|
4078
|
+
if (!compressor.option("properties")) return;
|
4079
|
+
if (key === "__proto__") return;
|
4080
|
+
|
4081
|
+
var arrows = compressor.option("unsafe_arrows") && compressor.option("ecma") >= 2015;
|
4082
|
+
var expr = this.expression;
|
4083
|
+
if (expr instanceof AST_Object) {
|
4084
|
+
var props = expr.properties;
|
4085
|
+
|
4086
|
+
for (var i = props.length; --i >= 0;) {
|
4087
|
+
var prop = props[i];
|
4088
|
+
|
4089
|
+
if ("" + (prop instanceof AST_ConciseMethod ? prop.key.name : prop.key) == key) {
|
4090
|
+
const all_props_flattenable = props.every((p) =>
|
4091
|
+
(p instanceof AST_ObjectKeyVal
|
4092
|
+
|| arrows && p instanceof AST_ConciseMethod && !p.is_generator
|
4093
|
+
)
|
4094
|
+
&& !p.computed_key()
|
4095
|
+
);
|
4096
|
+
|
4097
|
+
if (!all_props_flattenable) return;
|
4098
|
+
if (!safe_to_flatten(prop.value, compressor)) return;
|
4099
|
+
|
4100
|
+
return make_node(AST_Sub, this, {
|
4101
|
+
expression: make_node(AST_Array, expr, {
|
4102
|
+
elements: props.map(function(prop) {
|
4103
|
+
var v = prop.value;
|
4104
|
+
if (v instanceof AST_Accessor) {
|
4105
|
+
v = make_node(AST_Function, v, v);
|
4106
|
+
}
|
4107
|
+
|
4108
|
+
var k = prop.key;
|
4109
|
+
if (k instanceof AST_Node && !(k instanceof AST_SymbolMethod)) {
|
4110
|
+
return make_sequence(prop, [ k, v ]);
|
4111
|
+
}
|
4112
|
+
|
4113
|
+
return v;
|
4114
|
+
})
|
4115
|
+
}),
|
4116
|
+
property: make_node(AST_Number, this, {
|
4117
|
+
value: i
|
4118
|
+
})
|
4119
|
+
});
|
4120
|
+
}
|
4121
|
+
}
|
4122
|
+
}
|
4123
|
+
});
|
4124
|
+
|
4125
|
+
def_optimize(AST_Sub, function(self, compressor) {
|
4126
|
+
var expr = self.expression;
|
4127
|
+
var prop = self.property;
|
4128
|
+
if (compressor.option("properties")) {
|
4129
|
+
var key = prop.evaluate(compressor);
|
4130
|
+
if (key !== prop) {
|
4131
|
+
if (typeof key == "string") {
|
4132
|
+
if (key == "undefined") {
|
4133
|
+
key = undefined;
|
4134
|
+
} else {
|
4135
|
+
var value = parseFloat(key);
|
4136
|
+
if (value.toString() == key) {
|
4137
|
+
key = value;
|
4138
|
+
}
|
4139
|
+
}
|
4140
|
+
}
|
4141
|
+
prop = self.property = best_of_expression(prop, make_node_from_constant(key, prop).transform(compressor));
|
4142
|
+
var property = "" + key;
|
4143
|
+
if (is_basic_identifier_string(property)
|
4144
|
+
&& property.length <= prop.size() + 1) {
|
4145
|
+
return make_node(AST_Dot, self, {
|
4146
|
+
expression: expr,
|
4147
|
+
optional: self.optional,
|
4148
|
+
property: property,
|
4149
|
+
quote: prop.quote,
|
4150
|
+
}).optimize(compressor);
|
4151
|
+
}
|
4152
|
+
}
|
4153
|
+
}
|
4154
|
+
var fn;
|
4155
|
+
OPT_ARGUMENTS: if (compressor.option("arguments")
|
4156
|
+
&& expr instanceof AST_SymbolRef
|
4157
|
+
&& expr.name == "arguments"
|
4158
|
+
&& expr.definition().orig.length == 1
|
4159
|
+
&& (fn = expr.scope) instanceof AST_Lambda
|
4160
|
+
&& fn.uses_arguments
|
4161
|
+
&& !(fn instanceof AST_Arrow)
|
4162
|
+
&& prop instanceof AST_Number) {
|
4163
|
+
var index = prop.getValue();
|
4164
|
+
var params = new Set();
|
4165
|
+
var argnames = fn.argnames;
|
4166
|
+
for (var n = 0; n < argnames.length; n++) {
|
4167
|
+
if (!(argnames[n] instanceof AST_SymbolFunarg)) {
|
4168
|
+
break OPT_ARGUMENTS; // destructuring parameter - bail
|
4169
|
+
}
|
4170
|
+
var param = argnames[n].name;
|
4171
|
+
if (params.has(param)) {
|
4172
|
+
break OPT_ARGUMENTS; // duplicate parameter - bail
|
4173
|
+
}
|
4174
|
+
params.add(param);
|
4175
|
+
}
|
4176
|
+
var argname = fn.argnames[index];
|
4177
|
+
if (argname && compressor.has_directive("use strict")) {
|
4178
|
+
var def = argname.definition();
|
4179
|
+
if (!compressor.option("reduce_vars") || def.assignments || def.orig.length > 1) {
|
4180
|
+
argname = null;
|
4181
|
+
}
|
4182
|
+
} else if (!argname && !compressor.option("keep_fargs") && index < fn.argnames.length + 5) {
|
4183
|
+
while (index >= fn.argnames.length) {
|
4184
|
+
argname = fn.create_symbol(AST_SymbolFunarg, {
|
4185
|
+
source: fn,
|
4186
|
+
scope: fn,
|
4187
|
+
tentative_name: "argument_" + fn.argnames.length,
|
4188
|
+
});
|
4189
|
+
fn.argnames.push(argname);
|
4190
|
+
}
|
4191
|
+
}
|
4192
|
+
if (argname) {
|
4193
|
+
var sym = make_node(AST_SymbolRef, self, argname);
|
4194
|
+
sym.reference({});
|
4195
|
+
clear_flag(argname, UNUSED);
|
4196
|
+
return sym;
|
4197
|
+
}
|
4198
|
+
}
|
4199
|
+
if (is_lhs(self, compressor.parent())) return self;
|
4200
|
+
if (key !== prop) {
|
4201
|
+
var sub = self.flatten_object(property, compressor);
|
4202
|
+
if (sub) {
|
4203
|
+
expr = self.expression = sub.expression;
|
4204
|
+
prop = self.property = sub.property;
|
4205
|
+
}
|
4206
|
+
}
|
4207
|
+
if (compressor.option("properties") && compressor.option("side_effects")
|
4208
|
+
&& prop instanceof AST_Number && expr instanceof AST_Array) {
|
4209
|
+
var index = prop.getValue();
|
4210
|
+
var elements = expr.elements;
|
4211
|
+
var retValue = elements[index];
|
4212
|
+
FLATTEN: if (safe_to_flatten(retValue, compressor)) {
|
4213
|
+
var flatten = true;
|
4214
|
+
var values = [];
|
4215
|
+
for (var i = elements.length; --i > index;) {
|
4216
|
+
var value = elements[i].drop_side_effect_free(compressor);
|
4217
|
+
if (value) {
|
4218
|
+
values.unshift(value);
|
4219
|
+
if (flatten && value.has_side_effects(compressor)) flatten = false;
|
4220
|
+
}
|
4221
|
+
}
|
4222
|
+
if (retValue instanceof AST_Expansion) break FLATTEN;
|
4223
|
+
retValue = retValue instanceof AST_Hole ? make_node(AST_Undefined, retValue) : retValue;
|
4224
|
+
if (!flatten) values.unshift(retValue);
|
4225
|
+
while (--i >= 0) {
|
4226
|
+
var value = elements[i];
|
4227
|
+
if (value instanceof AST_Expansion) break FLATTEN;
|
4228
|
+
value = value.drop_side_effect_free(compressor);
|
4229
|
+
if (value) values.unshift(value);
|
4230
|
+
else index--;
|
4231
|
+
}
|
4232
|
+
if (flatten) {
|
4233
|
+
values.push(retValue);
|
4234
|
+
return make_sequence(self, values).optimize(compressor);
|
4235
|
+
} else return make_node(AST_Sub, self, {
|
4236
|
+
expression: make_node(AST_Array, expr, {
|
4237
|
+
elements: values
|
4238
|
+
}),
|
4239
|
+
property: make_node(AST_Number, prop, {
|
4240
|
+
value: index
|
4241
|
+
})
|
4242
|
+
});
|
4243
|
+
}
|
4244
|
+
}
|
4245
|
+
var ev = self.evaluate(compressor);
|
4246
|
+
if (ev !== self) {
|
4247
|
+
ev = make_node_from_constant(ev, self).optimize(compressor);
|
4248
|
+
return best_of(compressor, ev, self);
|
4249
|
+
}
|
4250
|
+
return self;
|
4251
|
+
});
|
4252
|
+
|
4253
|
+
def_optimize(AST_Chain, function (self, compressor) {
|
4254
|
+
if (is_nullish(self.expression, compressor)) {
|
4255
|
+
let parent = compressor.parent();
|
4256
|
+
// It's valid to delete a nullish optional chain, but if we optimized
|
4257
|
+
// this to `delete undefined` then it would appear to be a syntax error
|
4258
|
+
// when we try to optimize the delete. Thankfully, `delete 0` is fine.
|
4259
|
+
if (parent instanceof AST_UnaryPrefix && parent.operator === "delete") {
|
4260
|
+
return make_node_from_constant(0, self);
|
4261
|
+
}
|
4262
|
+
return make_node(AST_Undefined, self);
|
4263
|
+
}
|
4264
|
+
return self;
|
4265
|
+
});
|
4266
|
+
|
4267
|
+
AST_Lambda.DEFMETHOD("contains_this", function() {
|
4268
|
+
return walk(this, node => {
|
4269
|
+
if (node instanceof AST_This) return walk_abort;
|
4270
|
+
if (
|
4271
|
+
node !== this
|
4272
|
+
&& node instanceof AST_Scope
|
4273
|
+
&& !(node instanceof AST_Arrow)
|
4274
|
+
) {
|
4275
|
+
return true;
|
4276
|
+
}
|
4277
|
+
});
|
4278
|
+
});
|
4279
|
+
|
4280
|
+
def_optimize(AST_Dot, function(self, compressor) {
|
4281
|
+
const parent = compressor.parent();
|
4282
|
+
if (is_lhs(self, parent)) return self;
|
4283
|
+
if (compressor.option("unsafe_proto")
|
4284
|
+
&& self.expression instanceof AST_Dot
|
4285
|
+
&& self.expression.property == "prototype") {
|
4286
|
+
var exp = self.expression.expression;
|
4287
|
+
if (is_undeclared_ref(exp)) switch (exp.name) {
|
4288
|
+
case "Array":
|
4289
|
+
self.expression = make_node(AST_Array, self.expression, {
|
4290
|
+
elements: []
|
4291
|
+
});
|
4292
|
+
break;
|
4293
|
+
case "Function":
|
4294
|
+
self.expression = make_node(AST_Function, self.expression, {
|
4295
|
+
argnames: [],
|
4296
|
+
body: []
|
4297
|
+
});
|
4298
|
+
break;
|
4299
|
+
case "Number":
|
4300
|
+
self.expression = make_node(AST_Number, self.expression, {
|
4301
|
+
value: 0
|
4302
|
+
});
|
4303
|
+
break;
|
4304
|
+
case "Object":
|
4305
|
+
self.expression = make_node(AST_Object, self.expression, {
|
4306
|
+
properties: []
|
4307
|
+
});
|
4308
|
+
break;
|
4309
|
+
case "RegExp":
|
4310
|
+
self.expression = make_node(AST_RegExp, self.expression, {
|
4311
|
+
value: { source: "t", flags: "" }
|
4312
|
+
});
|
4313
|
+
break;
|
4314
|
+
case "String":
|
4315
|
+
self.expression = make_node(AST_String, self.expression, {
|
4316
|
+
value: ""
|
4317
|
+
});
|
4318
|
+
break;
|
4319
|
+
}
|
4320
|
+
}
|
4321
|
+
if (!(parent instanceof AST_Call) || !has_annotation(parent, _NOINLINE)) {
|
4322
|
+
const sub = self.flatten_object(self.property, compressor);
|
4323
|
+
if (sub) return sub.optimize(compressor);
|
4324
|
+
}
|
4325
|
+
let ev = self.evaluate(compressor);
|
4326
|
+
if (ev !== self) {
|
4327
|
+
ev = make_node_from_constant(ev, self).optimize(compressor);
|
4328
|
+
return best_of(compressor, ev, self);
|
4329
|
+
}
|
4330
|
+
return self;
|
4331
|
+
});
|
4332
|
+
|
4333
|
+
function literals_in_boolean_context(self, compressor) {
|
4334
|
+
if (compressor.in_boolean_context()) {
|
4335
|
+
return best_of(compressor, self, make_sequence(self, [
|
4336
|
+
self,
|
4337
|
+
make_node(AST_True, self)
|
4338
|
+
]).optimize(compressor));
|
4339
|
+
}
|
4340
|
+
return self;
|
4341
|
+
}
|
4342
|
+
|
4343
|
+
function inline_array_like_spread(elements) {
|
4344
|
+
for (var i = 0; i < elements.length; i++) {
|
4345
|
+
var el = elements[i];
|
4346
|
+
if (el instanceof AST_Expansion) {
|
4347
|
+
var expr = el.expression;
|
4348
|
+
if (
|
4349
|
+
expr instanceof AST_Array
|
4350
|
+
&& !expr.elements.some(elm => elm instanceof AST_Hole)
|
4351
|
+
) {
|
4352
|
+
elements.splice(i, 1, ...expr.elements);
|
4353
|
+
// Step back one, as the element at i is now new.
|
4354
|
+
i--;
|
4355
|
+
}
|
4356
|
+
// In array-like spread, spreading a non-iterable value is TypeError.
|
4357
|
+
// We therefore can’t optimize anything else, unlike with object spread.
|
4358
|
+
}
|
4359
|
+
}
|
4360
|
+
}
|
4361
|
+
|
4362
|
+
def_optimize(AST_Array, function(self, compressor) {
|
4363
|
+
var optimized = literals_in_boolean_context(self, compressor);
|
4364
|
+
if (optimized !== self) {
|
4365
|
+
return optimized;
|
4366
|
+
}
|
4367
|
+
inline_array_like_spread(self.elements);
|
4368
|
+
return self;
|
4369
|
+
});
|
4370
|
+
|
4371
|
+
function inline_object_prop_spread(props, compressor) {
|
4372
|
+
for (var i = 0; i < props.length; i++) {
|
4373
|
+
var prop = props[i];
|
4374
|
+
if (prop instanceof AST_Expansion) {
|
4375
|
+
const expr = prop.expression;
|
4376
|
+
if (
|
4377
|
+
expr instanceof AST_Object
|
4378
|
+
&& expr.properties.every(prop => prop instanceof AST_ObjectKeyVal)
|
4379
|
+
) {
|
4380
|
+
props.splice(i, 1, ...expr.properties);
|
4381
|
+
// Step back one, as the property at i is now new.
|
4382
|
+
i--;
|
4383
|
+
} else if (expr instanceof AST_Constant
|
4384
|
+
&& !(expr instanceof AST_String)) {
|
4385
|
+
// Unlike array-like spread, in object spread, spreading a
|
4386
|
+
// non-iterable value silently does nothing; it is thus safe
|
4387
|
+
// to remove. AST_String is the only iterable AST_Constant.
|
4388
|
+
props.splice(i, 1);
|
4389
|
+
i--;
|
4390
|
+
} else if (is_nullish(expr, compressor)) {
|
4391
|
+
// Likewise, null and undefined can be silently removed.
|
4392
|
+
props.splice(i, 1);
|
4393
|
+
i--;
|
4394
|
+
}
|
4395
|
+
}
|
4396
|
+
}
|
4397
|
+
}
|
4398
|
+
|
4399
|
+
def_optimize(AST_Object, function(self, compressor) {
|
4400
|
+
var optimized = literals_in_boolean_context(self, compressor);
|
4401
|
+
if (optimized !== self) {
|
4402
|
+
return optimized;
|
4403
|
+
}
|
4404
|
+
inline_object_prop_spread(self.properties, compressor);
|
4405
|
+
return self;
|
4406
|
+
});
|
4407
|
+
|
4408
|
+
def_optimize(AST_RegExp, literals_in_boolean_context);
|
4409
|
+
|
4410
|
+
def_optimize(AST_Return, function(self, compressor) {
|
4411
|
+
if (self.value && is_undefined(self.value, compressor)) {
|
4412
|
+
self.value = null;
|
4413
|
+
}
|
4414
|
+
return self;
|
4415
|
+
});
|
4416
|
+
|
4417
|
+
def_optimize(AST_Arrow, opt_AST_Lambda);
|
4418
|
+
|
4419
|
+
def_optimize(AST_Function, function(self, compressor) {
|
4420
|
+
self = opt_AST_Lambda(self, compressor);
|
4421
|
+
if (compressor.option("unsafe_arrows")
|
4422
|
+
&& compressor.option("ecma") >= 2015
|
4423
|
+
&& !self.name
|
4424
|
+
&& !self.is_generator
|
4425
|
+
&& !self.uses_arguments
|
4426
|
+
&& !self.pinned()) {
|
4427
|
+
const uses_this = walk(self, node => {
|
4428
|
+
if (node instanceof AST_This) return walk_abort;
|
4429
|
+
});
|
4430
|
+
if (!uses_this) return make_node(AST_Arrow, self, self).optimize(compressor);
|
4431
|
+
}
|
4432
|
+
return self;
|
4433
|
+
});
|
4434
|
+
|
4435
|
+
def_optimize(AST_Class, function(self) {
|
4436
|
+
// HACK to avoid compress failure.
|
4437
|
+
// AST_Class is not really an AST_Scope/AST_Block as it lacks a body.
|
4438
|
+
return self;
|
4439
|
+
});
|
4440
|
+
|
4441
|
+
def_optimize(AST_Yield, function(self, compressor) {
|
4442
|
+
if (self.expression && !self.is_star && is_undefined(self.expression, compressor)) {
|
4443
|
+
self.expression = null;
|
4444
|
+
}
|
4445
|
+
return self;
|
4446
|
+
});
|
4447
|
+
|
4448
|
+
def_optimize(AST_TemplateString, function(self, compressor) {
|
4449
|
+
if (
|
4450
|
+
!compressor.option("evaluate")
|
4451
|
+
|| compressor.parent() instanceof AST_PrefixedTemplateString
|
4452
|
+
) {
|
4453
|
+
return self;
|
4454
|
+
}
|
4455
|
+
|
4456
|
+
var segments = [];
|
4457
|
+
for (var i = 0; i < self.segments.length; i++) {
|
4458
|
+
var segment = self.segments[i];
|
4459
|
+
if (segment instanceof AST_Node) {
|
4460
|
+
var result = segment.evaluate(compressor);
|
4461
|
+
// Evaluate to constant value
|
4462
|
+
// Constant value shorter than ${segment}
|
4463
|
+
if (result !== segment && (result + "").length <= segment.size() + "${}".length) {
|
4464
|
+
// There should always be a previous and next segment if segment is a node
|
4465
|
+
segments[segments.length - 1].value = segments[segments.length - 1].value + result + self.segments[++i].value;
|
4466
|
+
continue;
|
4467
|
+
}
|
4468
|
+
// `before ${`innerBefore ${any} innerAfter`} after` => `before innerBefore ${any} innerAfter after`
|
4469
|
+
// TODO:
|
4470
|
+
// `before ${'test' + foo} after` => `before innerBefore ${any} innerAfter after`
|
4471
|
+
// `before ${foo + 'test} after` => `before innerBefore ${any} innerAfter after`
|
4472
|
+
if (segment instanceof AST_TemplateString) {
|
4473
|
+
var inners = segment.segments;
|
4474
|
+
segments[segments.length - 1].value += inners[0].value;
|
4475
|
+
for (var j = 1; j < inners.length; j++) {
|
4476
|
+
segment = inners[j];
|
4477
|
+
segments.push(segment);
|
4478
|
+
}
|
4479
|
+
continue;
|
4480
|
+
}
|
4481
|
+
}
|
4482
|
+
segments.push(segment);
|
4483
|
+
}
|
4484
|
+
self.segments = segments;
|
4485
|
+
|
4486
|
+
// `foo` => "foo"
|
4487
|
+
if (segments.length == 1) {
|
4488
|
+
return make_node(AST_String, self, segments[0]);
|
4489
|
+
}
|
4490
|
+
|
4491
|
+
if (
|
4492
|
+
segments.length === 3
|
4493
|
+
&& segments[1] instanceof AST_Node
|
4494
|
+
&& (
|
4495
|
+
segments[1].is_string(compressor)
|
4496
|
+
|| segments[1].is_number(compressor)
|
4497
|
+
|| is_nullish(segments[1], compressor)
|
4498
|
+
|| compressor.option("unsafe")
|
4499
|
+
)
|
4500
|
+
) {
|
4501
|
+
// `foo${bar}` => "foo" + bar
|
4502
|
+
if (segments[2].value === "") {
|
4503
|
+
return make_node(AST_Binary, self, {
|
4504
|
+
operator: "+",
|
4505
|
+
left: make_node(AST_String, self, {
|
4506
|
+
value: segments[0].value,
|
4507
|
+
}),
|
4508
|
+
right: segments[1],
|
4509
|
+
});
|
4510
|
+
}
|
4511
|
+
// `${bar}baz` => bar + "baz"
|
4512
|
+
if (segments[0].value === "") {
|
4513
|
+
return make_node(AST_Binary, self, {
|
4514
|
+
operator: "+",
|
4515
|
+
left: segments[1],
|
4516
|
+
right: make_node(AST_String, self, {
|
4517
|
+
value: segments[2].value,
|
4518
|
+
}),
|
4519
|
+
});
|
4520
|
+
}
|
4521
|
+
}
|
4522
|
+
return self;
|
4523
|
+
});
|
4524
|
+
|
4525
|
+
def_optimize(AST_PrefixedTemplateString, function(self) {
|
4526
|
+
return self;
|
4527
|
+
});
|
4528
|
+
|
4529
|
+
// ["p"]:1 ---> p:1
|
4530
|
+
// [42]:1 ---> 42:1
|
4531
|
+
function lift_key(self, compressor) {
|
4532
|
+
if (!compressor.option("computed_props")) return self;
|
4533
|
+
// save a comparison in the typical case
|
4534
|
+
if (!(self.key instanceof AST_Constant)) return self;
|
4535
|
+
// allow certain acceptable props as not all AST_Constants are true constants
|
4536
|
+
if (self.key instanceof AST_String || self.key instanceof AST_Number) {
|
4537
|
+
if (self.key.value === "__proto__") return self;
|
4538
|
+
if (self.key.value == "constructor"
|
4539
|
+
&& compressor.parent() instanceof AST_Class) return self;
|
4540
|
+
if (self instanceof AST_ObjectKeyVal) {
|
4541
|
+
self.quote = self.key.quote;
|
4542
|
+
self.key = self.key.value;
|
4543
|
+
} else if (self instanceof AST_ClassProperty) {
|
4544
|
+
self.quote = self.key.quote;
|
4545
|
+
self.key = make_node(AST_SymbolClassProperty, self.key, {
|
4546
|
+
name: self.key.value
|
4547
|
+
});
|
4548
|
+
} else {
|
4549
|
+
self.quote = self.key.quote;
|
4550
|
+
self.key = make_node(AST_SymbolMethod, self.key, {
|
4551
|
+
name: self.key.value
|
4552
|
+
});
|
4553
|
+
}
|
4554
|
+
}
|
4555
|
+
return self;
|
4556
|
+
}
|
4557
|
+
|
4558
|
+
def_optimize(AST_ObjectProperty, lift_key);
|
4559
|
+
|
4560
|
+
def_optimize(AST_ConciseMethod, function(self, compressor) {
|
4561
|
+
lift_key(self, compressor);
|
4562
|
+
// p(){return x;} ---> p:()=>x
|
4563
|
+
if (compressor.option("arrows")
|
4564
|
+
&& compressor.parent() instanceof AST_Object
|
4565
|
+
&& !self.is_generator
|
4566
|
+
&& !self.value.uses_arguments
|
4567
|
+
&& !self.value.pinned()
|
4568
|
+
&& self.value.body.length == 1
|
4569
|
+
&& self.value.body[0] instanceof AST_Return
|
4570
|
+
&& self.value.body[0].value
|
4571
|
+
&& !self.value.contains_this()) {
|
4572
|
+
var arrow = make_node(AST_Arrow, self.value, self.value);
|
4573
|
+
arrow.async = self.async;
|
4574
|
+
arrow.is_generator = self.is_generator;
|
4575
|
+
return make_node(AST_ObjectKeyVal, self, {
|
4576
|
+
key: self.key instanceof AST_SymbolMethod ? self.key.name : self.key,
|
4577
|
+
value: arrow,
|
4578
|
+
quote: self.quote,
|
4579
|
+
});
|
4580
|
+
}
|
4581
|
+
return self;
|
4582
|
+
});
|
4583
|
+
|
4584
|
+
def_optimize(AST_ObjectKeyVal, function(self, compressor) {
|
4585
|
+
lift_key(self, compressor);
|
4586
|
+
// p:function(){} ---> p(){}
|
4587
|
+
// p:function*(){} ---> *p(){}
|
4588
|
+
// p:async function(){} ---> async p(){}
|
4589
|
+
// p:()=>{} ---> p(){}
|
4590
|
+
// p:async()=>{} ---> async p(){}
|
4591
|
+
var unsafe_methods = compressor.option("unsafe_methods");
|
4592
|
+
if (unsafe_methods
|
4593
|
+
&& compressor.option("ecma") >= 2015
|
4594
|
+
&& (!(unsafe_methods instanceof RegExp) || unsafe_methods.test(self.key + ""))) {
|
4595
|
+
var key = self.key;
|
4596
|
+
var value = self.value;
|
4597
|
+
var is_arrow_with_block = value instanceof AST_Arrow
|
4598
|
+
&& Array.isArray(value.body)
|
4599
|
+
&& !value.contains_this();
|
4600
|
+
if ((is_arrow_with_block || value instanceof AST_Function) && !value.name) {
|
4601
|
+
return make_node(AST_ConciseMethod, self, {
|
4602
|
+
async: value.async,
|
4603
|
+
is_generator: value.is_generator,
|
4604
|
+
key: key instanceof AST_Node ? key : make_node(AST_SymbolMethod, self, {
|
4605
|
+
name: key,
|
4606
|
+
}),
|
4607
|
+
value: make_node(AST_Accessor, value, value),
|
4608
|
+
quote: self.quote,
|
4609
|
+
});
|
4610
|
+
}
|
4611
|
+
}
|
4612
|
+
return self;
|
4613
|
+
});
|
4614
|
+
|
4615
|
+
def_optimize(AST_Destructuring, function(self, compressor) {
|
4616
|
+
if (compressor.option("pure_getters") == true
|
4617
|
+
&& compressor.option("unused")
|
4618
|
+
&& !self.is_array
|
4619
|
+
&& Array.isArray(self.names)
|
4620
|
+
&& !is_destructuring_export_decl(compressor)
|
4621
|
+
&& !(self.names[self.names.length - 1] instanceof AST_Expansion)) {
|
4622
|
+
var keep = [];
|
4623
|
+
for (var i = 0; i < self.names.length; i++) {
|
4624
|
+
var elem = self.names[i];
|
4625
|
+
if (!(elem instanceof AST_ObjectKeyVal
|
4626
|
+
&& typeof elem.key == "string"
|
4627
|
+
&& elem.value instanceof AST_SymbolDeclaration
|
4628
|
+
&& !should_retain(compressor, elem.value.definition()))) {
|
4629
|
+
keep.push(elem);
|
4630
|
+
}
|
4631
|
+
}
|
4632
|
+
if (keep.length != self.names.length) {
|
4633
|
+
self.names = keep;
|
4634
|
+
}
|
4635
|
+
}
|
4636
|
+
return self;
|
4637
|
+
|
4638
|
+
function is_destructuring_export_decl(compressor) {
|
4639
|
+
var ancestors = [/^VarDef$/, /^(Const|Let|Var)$/, /^Export$/];
|
4640
|
+
for (var a = 0, p = 0, len = ancestors.length; a < len; p++) {
|
4641
|
+
var parent = compressor.parent(p);
|
4642
|
+
if (!parent) return false;
|
4643
|
+
if (a === 0 && parent.TYPE == "Destructuring") continue;
|
4644
|
+
if (!ancestors[a].test(parent.TYPE)) {
|
4645
|
+
return false;
|
4646
|
+
}
|
4647
|
+
a++;
|
4648
|
+
}
|
4649
|
+
return true;
|
4650
|
+
}
|
4651
|
+
|
4652
|
+
function should_retain(compressor, def) {
|
4653
|
+
if (def.references.length) return true;
|
4654
|
+
if (!def.global) return false;
|
4655
|
+
if (compressor.toplevel.vars) {
|
4656
|
+
if (compressor.top_retain) {
|
4657
|
+
return compressor.top_retain(def);
|
4658
|
+
}
|
4659
|
+
return false;
|
4660
|
+
}
|
4661
|
+
return true;
|
4662
|
+
}
|
4663
|
+
});
|
4664
|
+
|
4665
|
+
export {
|
4666
|
+
Compressor,
|
4667
|
+
};
|