From c72ea6e33064a41108abea9f0bb4f2751c4f7bd8 Mon Sep 17 00:00:00 2001 From: bateman001 <49342979+bateman001@users.noreply.github.com> Date: Tue, 20 Aug 2024 20:40:25 -0400 Subject: [PATCH] first commit --- .prettierrc | 18 + .prettierrc.js | 7 + .prettierrc.json | 1 + dist/cjs/index.js | 2810 + dist/cjs/index.js.map | 1 + dist/cjs/types/components/Button/Button.d.ts | 6 + dist/cjs/types/components/Button/index.d.ts | 1 + dist/cjs/types/components/index.d.ts | 1 + dist/cjs/types/index.d.ts | 1 + dist/esm/index.js | 2808 + dist/esm/index.js.map | 1 + dist/esm/types/components/Button/Button.d.ts | 6 + dist/esm/types/components/Button/index.d.ts | 1 + dist/esm/types/components/index.d.ts | 1 + dist/esm/types/index.d.ts | 1 + dist/index.d.ts | 8 + node_modules/.bin/glob | 1 + node_modules/.bin/loose-envify | 1 + node_modules/.bin/node-which | 1 + node_modules/.bin/resolve | 1 + node_modules/.bin/rollup | 1 + node_modules/.bin/tsc | 1 + node_modules/.bin/tsserver | 1 + node_modules/.package-lock.json | 1025 + node_modules/@babel/code-frame/LICENSE | 22 + node_modules/@babel/code-frame/README.md | 19 + node_modules/@babel/code-frame/lib/index.js | 156 + .../@babel/code-frame/lib/index.js.map | 1 + node_modules/@babel/code-frame/package.json | 30 + .../helper-validator-identifier/LICENSE | 22 + .../helper-validator-identifier/README.md | 19 + .../lib/identifier.js | 70 + .../lib/identifier.js.map | 1 + .../helper-validator-identifier/lib/index.js | 57 + .../lib/index.js.map | 1 + .../lib/keyword.js | 35 + .../lib/keyword.js.map | 1 + .../helper-validator-identifier/package.json | 31 + .../scripts/generate-identifier-regex.js | 73 + node_modules/@babel/highlight/LICENSE | 22 + node_modules/@babel/highlight/README.md | 19 + node_modules/@babel/highlight/lib/index.js | 119 + .../@babel/highlight/lib/index.js.map | 1 + node_modules/@babel/highlight/package.json | 30 + node_modules/@isaacs/cliui/LICENSE.txt | 14 + node_modules/@isaacs/cliui/README.md | 143 + node_modules/@isaacs/cliui/build/index.cjs | 317 + node_modules/@isaacs/cliui/build/index.d.cts | 43 + node_modules/@isaacs/cliui/build/lib/index.js | 302 + node_modules/@isaacs/cliui/index.mjs | 14 + node_modules/@isaacs/cliui/package.json | 86 + .../@jridgewell/sourcemap-codec/LICENSE | 21 + .../@jridgewell/sourcemap-codec/README.md | 264 + .../sourcemap-codec/dist/sourcemap-codec.mjs | 424 + .../dist/sourcemap-codec.mjs.map | 1 + .../dist/sourcemap-codec.umd.js | 439 + .../dist/sourcemap-codec.umd.js.map | 1 + .../sourcemap-codec/dist/types/scopes.d.ts | 49 + .../dist/types/sourcemap-codec.d.ts | 8 + .../sourcemap-codec/dist/types/strings.d.ts | 15 + .../sourcemap-codec/dist/types/vlq.d.ts | 6 + .../@jridgewell/sourcemap-codec/package.json | 75 + node_modules/@pkgjs/parseargs/.editorconfig | 14 + node_modules/@pkgjs/parseargs/CHANGELOG.md | 147 + node_modules/@pkgjs/parseargs/LICENSE | 201 + node_modules/@pkgjs/parseargs/README.md | 413 + .../parseargs/examples/is-default-value.js | 25 + .../parseargs/examples/limit-long-syntax.js | 35 + .../@pkgjs/parseargs/examples/negate.js | 43 + .../parseargs/examples/no-repeated-options.js | 31 + .../parseargs/examples/ordered-options.mjs | 41 + .../parseargs/examples/simple-hard-coded.js | 26 + node_modules/@pkgjs/parseargs/index.js | 396 + .../@pkgjs/parseargs/internal/errors.js | 47 + .../@pkgjs/parseargs/internal/primordials.js | 393 + .../@pkgjs/parseargs/internal/util.js | 14 + .../@pkgjs/parseargs/internal/validators.js | 89 + node_modules/@pkgjs/parseargs/package.json | 36 + node_modules/@pkgjs/parseargs/utils.js | 198 + node_modules/@rollup/plugin-commonjs/LICENSE | 21 + .../@rollup/plugin-commonjs/README.md | 451 + .../@rollup/plugin-commonjs/dist/cjs/index.js | 2306 + .../@rollup/plugin-commonjs/dist/es/index.js | 2301 + .../plugin-commonjs/dist/es/package.json | 1 + .../@rollup/plugin-commonjs/package.json | 90 + .../@rollup/plugin-commonjs/types/index.d.ts | 233 + .../@rollup/plugin-node-resolve/LICENSE | 21 + .../@rollup/plugin-node-resolve/README.md | 285 + .../plugin-node-resolve/dist/cjs/index.js | 1362 + .../plugin-node-resolve/dist/es/index.js | 1355 + .../plugin-node-resolve/dist/es/package.json | 1 + .../@rollup/plugin-node-resolve/package.json | 92 + .../plugin-node-resolve/types/index.d.ts | 113 + .../@rollup/plugin-typescript/LICENSE | 21 + .../@rollup/plugin-typescript/README.md | 307 + .../plugin-typescript/dist/cjs/index.js | 924 + .../plugin-typescript/dist/es/index.js | 900 + .../plugin-typescript/dist/es/package.json | 1 + .../@rollup/plugin-typescript/package.json | 79 + .../plugin-typescript/types/index.d.ts | 115 + node_modules/@rollup/pluginutils/LICENSE | 21 + node_modules/@rollup/pluginutils/README.md | 262 + .../@rollup/pluginutils/dist/cjs/index.js | 368 + .../@rollup/pluginutils/dist/es/index.js | 356 + .../@rollup/pluginutils/dist/es/package.json | 1 + node_modules/@rollup/pluginutils/package.json | 99 + .../@rollup/pluginutils/types/index.d.ts | 98 + .../@rollup/rollup-darwin-x64/README.md | 3 + .../@rollup/rollup-darwin-x64/package.json | 19 + .../rollup-darwin-x64/rollup.darwin-x64.node | Bin 0 -> 2357504 bytes node_modules/@types/estree/LICENSE | 21 + node_modules/@types/estree/README.md | 15 + node_modules/@types/estree/flow.d.ts | 167 + node_modules/@types/estree/index.d.ts | 683 + node_modules/@types/estree/package.json | 26 + node_modules/@types/prop-types/LICENSE | 21 + node_modules/@types/prop-types/README.md | 15 + node_modules/@types/prop-types/index.d.ts | 109 + node_modules/@types/prop-types/package.json | 35 + node_modules/@types/react/LICENSE | 21 + node_modules/@types/react/README.md | 15 + node_modules/@types/react/canary.d.ts | 157 + node_modules/@types/react/experimental.d.ts | 127 + node_modules/@types/react/global.d.ts | 160 + node_modules/@types/react/index.d.ts | 4537 + .../@types/react/jsx-dev-runtime.d.ts | 45 + node_modules/@types/react/jsx-runtime.d.ts | 36 + node_modules/@types/react/package.json | 210 + node_modules/@types/react/ts5.0/canary.d.ts | 157 + .../@types/react/ts5.0/experimental.d.ts | 127 + node_modules/@types/react/ts5.0/global.d.ts | 160 + node_modules/@types/react/ts5.0/index.d.ts | 4524 + .../@types/react/ts5.0/jsx-dev-runtime.d.ts | 44 + .../@types/react/ts5.0/jsx-runtime.d.ts | 35 + node_modules/@types/resolve/LICENSE | 21 + node_modules/@types/resolve/README.md | 16 + node_modules/@types/resolve/index.d.ts | 175 + node_modules/@types/resolve/package.json | 35 + node_modules/ansi-regex/index.d.ts | 33 + node_modules/ansi-regex/index.js | 8 + node_modules/ansi-regex/license | 9 + node_modules/ansi-regex/package.json | 58 + node_modules/ansi-regex/readme.md | 72 + node_modules/ansi-styles/index.js | 165 + node_modules/ansi-styles/license | 9 + node_modules/ansi-styles/package.json | 56 + node_modules/ansi-styles/readme.md | 147 + .../balanced-match/.github/FUNDING.yml | 2 + node_modules/balanced-match/LICENSE.md | 21 + node_modules/balanced-match/README.md | 97 + node_modules/balanced-match/index.js | 62 + node_modules/balanced-match/package.json | 48 + .../brace-expansion/.github/FUNDING.yml | 2 + node_modules/brace-expansion/LICENSE | 21 + node_modules/brace-expansion/README.md | 135 + node_modules/brace-expansion/index.js | 203 + node_modules/brace-expansion/package.json | 46 + .../builtin-modules/builtin-modules.json | 43 + node_modules/builtin-modules/index.d.ts | 14 + node_modules/builtin-modules/index.js | 11 + node_modules/builtin-modules/license | 9 + node_modules/builtin-modules/package.json | 44 + node_modules/builtin-modules/readme.md | 44 + node_modules/builtin-modules/static.d.ts | 14 + node_modules/builtin-modules/static.js | 2 + node_modules/chalk/index.js | 228 + node_modules/chalk/index.js.flow | 93 + node_modules/chalk/license | 9 + node_modules/chalk/package.json | 71 + node_modules/chalk/readme.md | 314 + node_modules/chalk/templates.js | 128 + node_modules/chalk/types/index.d.ts | 97 + node_modules/color-convert/CHANGELOG.md | 54 + node_modules/color-convert/LICENSE | 21 + node_modules/color-convert/README.md | 68 + node_modules/color-convert/conversions.js | 868 + node_modules/color-convert/index.js | 78 + node_modules/color-convert/package.json | 46 + node_modules/color-convert/route.js | 97 + node_modules/color-name/.eslintrc.json | 43 + node_modules/color-name/.npmignore | 107 + node_modules/color-name/LICENSE | 8 + node_modules/color-name/README.md | 11 + node_modules/color-name/index.js | 152 + node_modules/color-name/package.json | 25 + node_modules/color-name/test.js | 7 + node_modules/commondir/LICENSE | 24 + node_modules/commondir/example/dir.js | 3 + node_modules/commondir/index.js | 29 + node_modules/commondir/package.json | 34 + node_modules/commondir/readme.markdown | 48 + node_modules/commondir/test/dirs.js | 55 + node_modules/cross-spawn/CHANGELOG.md | 130 + node_modules/cross-spawn/LICENSE | 21 + node_modules/cross-spawn/README.md | 96 + node_modules/cross-spawn/index.js | 39 + node_modules/cross-spawn/lib/enoent.js | 59 + node_modules/cross-spawn/lib/parse.js | 91 + node_modules/cross-spawn/lib/util/escape.js | 45 + .../cross-spawn/lib/util/readShebang.js | 23 + .../cross-spawn/lib/util/resolveCommand.js | 52 + node_modules/cross-spawn/package.json | 73 + node_modules/csstype/LICENSE | 19 + node_modules/csstype/README.md | 277 + node_modules/csstype/index.d.ts | 21297 ++ node_modules/csstype/index.js.flow | 6612 + node_modules/csstype/package.json | 66 + node_modules/deepmerge/.editorconfig | 7 + node_modules/deepmerge/.eslintcache | 1 + node_modules/deepmerge/changelog.md | 167 + node_modules/deepmerge/dist/cjs.js | 133 + node_modules/deepmerge/dist/umd.js | 139 + node_modules/deepmerge/index.d.ts | 20 + node_modules/deepmerge/index.js | 106 + node_modules/deepmerge/license.txt | 21 + node_modules/deepmerge/package.json | 42 + node_modules/deepmerge/readme.md | 264 + node_modules/deepmerge/rollup.config.js | 22 + node_modules/eastasianwidth/README.md | 32 + node_modules/eastasianwidth/eastasianwidth.js | 311 + node_modules/eastasianwidth/package.json | 18 + node_modules/emoji-regex/LICENSE-MIT.txt | 20 + node_modules/emoji-regex/README.md | 137 + node_modules/emoji-regex/RGI_Emoji.d.ts | 5 + node_modules/emoji-regex/RGI_Emoji.js | 6 + .../emoji-regex/es2015/RGI_Emoji.d.ts | 5 + node_modules/emoji-regex/es2015/RGI_Emoji.js | 6 + node_modules/emoji-regex/es2015/index.d.ts | 5 + node_modules/emoji-regex/es2015/index.js | 6 + node_modules/emoji-regex/es2015/text.d.ts | 5 + node_modules/emoji-regex/es2015/text.js | 6 + node_modules/emoji-regex/index.d.ts | 5 + node_modules/emoji-regex/index.js | 6 + node_modules/emoji-regex/package.json | 52 + node_modules/emoji-regex/text.d.ts | 5 + node_modules/emoji-regex/text.js | 6 + node_modules/escape-string-regexp/index.js | 11 + node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 41 + node_modules/escape-string-regexp/readme.md | 27 + node_modules/estree-walker/CHANGELOG.md | 92 + node_modules/estree-walker/LICENSE | 7 + node_modules/estree-walker/README.md | 48 + .../estree-walker/dist/esm/estree-walker.js | 333 + .../estree-walker/dist/esm/package.json | 1 + .../estree-walker/dist/umd/estree-walker.js | 344 + node_modules/estree-walker/package.json | 37 + node_modules/estree-walker/src/async.js | 118 + node_modules/estree-walker/src/index.js | 35 + node_modules/estree-walker/src/package.json | 1 + node_modules/estree-walker/src/sync.js | 118 + node_modules/estree-walker/src/walker.js | 61 + node_modules/estree-walker/types/async.d.ts | 53 + node_modules/estree-walker/types/index.d.ts | 56 + node_modules/estree-walker/types/sync.d.ts | 53 + .../estree-walker/types/tsconfig.tsbuildinfo | 345 + node_modules/estree-walker/types/walker.d.ts | 37 + node_modules/foreground-child/LICENSE | 15 + node_modules/foreground-child/README.md | 128 + .../dist/commonjs/all-signals.d.ts | 3 + .../dist/commonjs/all-signals.d.ts.map | 1 + .../dist/commonjs/all-signals.js | 58 + .../dist/commonjs/all-signals.js.map | 1 + .../foreground-child/dist/commonjs/index.d.ts | 65 + .../dist/commonjs/index.d.ts.map | 1 + .../foreground-child/dist/commonjs/index.js | 123 + .../dist/commonjs/index.js.map | 1 + .../dist/commonjs/package.json | 3 + .../dist/commonjs/proxy-signals.d.ts | 7 + .../dist/commonjs/proxy-signals.d.ts.map | 1 + .../dist/commonjs/proxy-signals.js | 38 + .../dist/commonjs/proxy-signals.js.map | 1 + .../dist/commonjs/watchdog.d.ts | 11 + .../dist/commonjs/watchdog.d.ts.map | 1 + .../dist/commonjs/watchdog.js | 50 + .../dist/commonjs/watchdog.js.map | 1 + .../dist/esm/all-signals.d.ts | 3 + .../dist/esm/all-signals.d.ts.map | 1 + .../foreground-child/dist/esm/all-signals.js | 52 + .../dist/esm/all-signals.js.map | 1 + .../foreground-child/dist/esm/index.d.ts | 65 + .../foreground-child/dist/esm/index.d.ts.map | 1 + .../foreground-child/dist/esm/index.js | 115 + .../foreground-child/dist/esm/index.js.map | 1 + .../foreground-child/dist/esm/package.json | 3 + .../dist/esm/proxy-signals.d.ts | 7 + .../dist/esm/proxy-signals.d.ts.map | 1 + .../dist/esm/proxy-signals.js | 34 + .../dist/esm/proxy-signals.js.map | 1 + .../foreground-child/dist/esm/watchdog.d.ts | 11 + .../dist/esm/watchdog.d.ts.map | 1 + .../foreground-child/dist/esm/watchdog.js | 46 + .../foreground-child/dist/esm/watchdog.js.map | 1 + node_modules/foreground-child/package.json | 111 + node_modules/fsevents/LICENSE | 22 + node_modules/fsevents/README.md | 89 + node_modules/fsevents/fsevents.d.ts | 46 + node_modules/fsevents/fsevents.js | 83 + node_modules/fsevents/fsevents.node | Bin 0 -> 163626 bytes node_modules/fsevents/package.json | 62 + node_modules/function-bind/.eslintrc | 21 + .../function-bind/.github/FUNDING.yml | 12 + .../function-bind/.github/SECURITY.md | 3 + node_modules/function-bind/.nycrc | 13 + node_modules/function-bind/CHANGELOG.md | 136 + node_modules/function-bind/LICENSE | 20 + node_modules/function-bind/README.md | 46 + node_modules/function-bind/implementation.js | 84 + node_modules/function-bind/index.js | 5 + node_modules/function-bind/package.json | 87 + node_modules/function-bind/test/.eslintrc | 9 + node_modules/function-bind/test/index.js | 252 + node_modules/glob/LICENSE | 15 + node_modules/glob/README.md | 1265 + node_modules/glob/dist/commonjs/glob.d.ts | 388 + node_modules/glob/dist/commonjs/glob.d.ts.map | 1 + node_modules/glob/dist/commonjs/glob.js | 247 + node_modules/glob/dist/commonjs/glob.js.map | 1 + .../glob/dist/commonjs/has-magic.d.ts | 14 + .../glob/dist/commonjs/has-magic.d.ts.map | 1 + node_modules/glob/dist/commonjs/has-magic.js | 27 + .../glob/dist/commonjs/has-magic.js.map | 1 + node_modules/glob/dist/commonjs/ignore.d.ts | 24 + .../glob/dist/commonjs/ignore.d.ts.map | 1 + node_modules/glob/dist/commonjs/ignore.js | 119 + node_modules/glob/dist/commonjs/ignore.js.map | 1 + node_modules/glob/dist/commonjs/index.d.ts | 97 + .../glob/dist/commonjs/index.d.ts.map | 1 + node_modules/glob/dist/commonjs/index.js | 68 + node_modules/glob/dist/commonjs/index.js.map | 1 + node_modules/glob/dist/commonjs/package.json | 3 + node_modules/glob/dist/commonjs/pattern.d.ts | 76 + .../glob/dist/commonjs/pattern.d.ts.map | 1 + node_modules/glob/dist/commonjs/pattern.js | 219 + .../glob/dist/commonjs/pattern.js.map | 1 + .../glob/dist/commonjs/processor.d.ts | 59 + .../glob/dist/commonjs/processor.d.ts.map | 1 + node_modules/glob/dist/commonjs/processor.js | 301 + .../glob/dist/commonjs/processor.js.map | 1 + node_modules/glob/dist/commonjs/walker.d.ts | 97 + .../glob/dist/commonjs/walker.d.ts.map | 1 + node_modules/glob/dist/commonjs/walker.js | 387 + node_modules/glob/dist/commonjs/walker.js.map | 1 + node_modules/glob/dist/esm/bin.d.mts | 3 + node_modules/glob/dist/esm/bin.d.mts.map | 1 + node_modules/glob/dist/esm/bin.mjs | 270 + node_modules/glob/dist/esm/bin.mjs.map | 1 + node_modules/glob/dist/esm/glob.d.ts | 388 + node_modules/glob/dist/esm/glob.d.ts.map | 1 + node_modules/glob/dist/esm/glob.js | 243 + node_modules/glob/dist/esm/glob.js.map | 1 + node_modules/glob/dist/esm/has-magic.d.ts | 14 + node_modules/glob/dist/esm/has-magic.d.ts.map | 1 + node_modules/glob/dist/esm/has-magic.js | 23 + node_modules/glob/dist/esm/has-magic.js.map | 1 + node_modules/glob/dist/esm/ignore.d.ts | 24 + node_modules/glob/dist/esm/ignore.d.ts.map | 1 + node_modules/glob/dist/esm/ignore.js | 115 + node_modules/glob/dist/esm/ignore.js.map | 1 + node_modules/glob/dist/esm/index.d.ts | 97 + node_modules/glob/dist/esm/index.d.ts.map | 1 + node_modules/glob/dist/esm/index.js | 55 + node_modules/glob/dist/esm/index.js.map | 1 + node_modules/glob/dist/esm/package.json | 3 + node_modules/glob/dist/esm/pattern.d.ts | 76 + node_modules/glob/dist/esm/pattern.d.ts.map | 1 + node_modules/glob/dist/esm/pattern.js | 215 + node_modules/glob/dist/esm/pattern.js.map | 1 + node_modules/glob/dist/esm/processor.d.ts | 59 + node_modules/glob/dist/esm/processor.d.ts.map | 1 + node_modules/glob/dist/esm/processor.js | 294 + node_modules/glob/dist/esm/processor.js.map | 1 + node_modules/glob/dist/esm/walker.d.ts | 97 + node_modules/glob/dist/esm/walker.d.ts.map | 1 + node_modules/glob/dist/esm/walker.js | 381 + node_modules/glob/dist/esm/walker.js.map | 1 + node_modules/glob/package.json | 99 + node_modules/has-flag/index.js | 8 + node_modules/has-flag/license | 9 + node_modules/has-flag/package.json | 44 + node_modules/has-flag/readme.md | 70 + node_modules/hasown/.eslintrc | 5 + node_modules/hasown/.github/FUNDING.yml | 12 + node_modules/hasown/.nycrc | 13 + node_modules/hasown/CHANGELOG.md | 40 + node_modules/hasown/LICENSE | 21 + node_modules/hasown/README.md | 40 + node_modules/hasown/index.d.ts | 3 + node_modules/hasown/index.js | 8 + node_modules/hasown/package.json | 92 + node_modules/hasown/tsconfig.json | 6 + node_modules/is-builtin-module/index.d.ts | 22 + node_modules/is-builtin-module/index.js | 22 + node_modules/is-builtin-module/license | 9 + node_modules/is-builtin-module/package.json | 47 + node_modules/is-builtin-module/readme.md | 47 + node_modules/is-core-module/.eslintrc | 18 + node_modules/is-core-module/.nycrc | 9 + node_modules/is-core-module/CHANGELOG.md | 195 + node_modules/is-core-module/LICENSE | 20 + node_modules/is-core-module/README.md | 40 + node_modules/is-core-module/core.json | 161 + node_modules/is-core-module/index.js | 69 + node_modules/is-core-module/package.json | 76 + node_modules/is-core-module/test/index.js | 138 + .../is-fullwidth-code-point/index.d.ts | 17 + node_modules/is-fullwidth-code-point/index.js | 50 + node_modules/is-fullwidth-code-point/license | 9 + .../is-fullwidth-code-point/package.json | 42 + .../is-fullwidth-code-point/readme.md | 39 + node_modules/is-module/.npmignore | 1 + node_modules/is-module/README.md | 41 + node_modules/is-module/component.json | 11 + node_modules/is-module/index.js | 11 + node_modules/is-module/package.json | 20 + node_modules/is-reference/CHANGELOG.md | 37 + node_modules/is-reference/README.md | 61 + .../is-reference/dist/is-reference.es.js | 31 + .../is-reference/dist/is-reference.js | 39 + .../is-reference/dist/types/index.d.ts | 2 + node_modules/is-reference/package.json | 49 + node_modules/isexe/.npmignore | 2 + node_modules/isexe/LICENSE | 15 + node_modules/isexe/README.md | 51 + node_modules/isexe/index.js | 57 + node_modules/isexe/mode.js | 41 + node_modules/isexe/package.json | 31 + node_modules/isexe/test/basic.js | 221 + node_modules/isexe/windows.js | 42 + node_modules/jackspeak/LICENSE.md | 55 + node_modules/jackspeak/README.md | 357 + .../jackspeak/dist/commonjs/index.d.ts | 315 + .../jackspeak/dist/commonjs/index.d.ts.map | 1 + node_modules/jackspeak/dist/commonjs/index.js | 1010 + .../jackspeak/dist/commonjs/index.js.map | 1 + .../jackspeak/dist/commonjs/package.json | 3 + .../dist/commonjs/parse-args-cjs.cjs.map | 1 + .../dist/commonjs/parse-args-cjs.d.cts.map | 1 + .../jackspeak/dist/commonjs/parse-args.d.ts | 4 + .../jackspeak/dist/commonjs/parse-args.js | 50 + node_modules/jackspeak/dist/esm/index.d.ts | 315 + .../jackspeak/dist/esm/index.d.ts.map | 1 + node_modules/jackspeak/dist/esm/index.js | 1000 + node_modules/jackspeak/dist/esm/index.js.map | 1 + node_modules/jackspeak/dist/esm/package.json | 3 + .../jackspeak/dist/esm/parse-args.d.ts | 4 + .../jackspeak/dist/esm/parse-args.d.ts.map | 1 + node_modules/jackspeak/dist/esm/parse-args.js | 26 + .../jackspeak/dist/esm/parse-args.js.map | 1 + node_modules/jackspeak/package.json | 95 + node_modules/js-tokens/CHANGELOG.md | 151 + node_modules/js-tokens/LICENSE | 21 + node_modules/js-tokens/README.md | 240 + node_modules/js-tokens/index.js | 23 + node_modules/js-tokens/package.json | 30 + node_modules/loose-envify/LICENSE | 21 + node_modules/loose-envify/README.md | 45 + node_modules/loose-envify/cli.js | 16 + node_modules/loose-envify/custom.js | 4 + node_modules/loose-envify/index.js | 3 + node_modules/loose-envify/loose-envify.js | 36 + node_modules/loose-envify/package.json | 36 + node_modules/loose-envify/replace.js | 65 + node_modules/lru-cache/LICENSE | 15 + node_modules/lru-cache/README.md | 331 + .../lru-cache/dist/commonjs/index.d.ts | 1277 + .../lru-cache/dist/commonjs/index.d.ts.map | 1 + node_modules/lru-cache/dist/commonjs/index.js | 1546 + .../lru-cache/dist/commonjs/index.js.map | 1 + .../lru-cache/dist/commonjs/index.min.js | 2 + .../lru-cache/dist/commonjs/index.min.js.map | 7 + .../lru-cache/dist/commonjs/package.json | 3 + node_modules/lru-cache/dist/esm/index.d.ts | 1277 + .../lru-cache/dist/esm/index.d.ts.map | 1 + node_modules/lru-cache/dist/esm/index.js | 1542 + node_modules/lru-cache/dist/esm/index.js.map | 1 + node_modules/lru-cache/dist/esm/index.min.js | 2 + .../lru-cache/dist/esm/index.min.js.map | 7 + node_modules/lru-cache/dist/esm/package.json | 3 + node_modules/lru-cache/package.json | 116 + node_modules/magic-string/LICENSE | 7 + node_modules/magic-string/README.md | 304 + .../magic-string/dist/magic-string.cjs.d.ts | 268 + .../magic-string/dist/magic-string.cjs.js | 1555 + .../magic-string/dist/magic-string.cjs.js.map | 1 + .../magic-string/dist/magic-string.es.d.mts | 268 + .../magic-string/dist/magic-string.es.mjs | 1549 + .../magic-string/dist/magic-string.es.mjs.map | 1 + .../magic-string/dist/magic-string.umd.js | 1652 + .../magic-string/dist/magic-string.umd.js.map | 1 + node_modules/magic-string/package.json | 63 + node_modules/minimatch/LICENSE | 15 + node_modules/minimatch/README.md | 454 + .../dist/commonjs/assert-valid-pattern.d.ts | 2 + .../commonjs/assert-valid-pattern.d.ts.map | 1 + .../dist/commonjs/assert-valid-pattern.js | 14 + .../dist/commonjs/assert-valid-pattern.js.map | 1 + node_modules/minimatch/dist/commonjs/ast.d.ts | 20 + .../minimatch/dist/commonjs/ast.d.ts.map | 1 + node_modules/minimatch/dist/commonjs/ast.js | 592 + .../minimatch/dist/commonjs/ast.js.map | 1 + .../dist/commonjs/brace-expressions.d.ts | 8 + .../dist/commonjs/brace-expressions.d.ts.map | 1 + .../dist/commonjs/brace-expressions.js | 152 + .../dist/commonjs/brace-expressions.js.map | 1 + .../minimatch/dist/commonjs/escape.d.ts | 12 + .../minimatch/dist/commonjs/escape.d.ts.map | 1 + .../minimatch/dist/commonjs/escape.js | 22 + .../minimatch/dist/commonjs/escape.js.map | 1 + .../minimatch/dist/commonjs/index.d.ts | 94 + .../minimatch/dist/commonjs/index.d.ts.map | 1 + node_modules/minimatch/dist/commonjs/index.js | 1017 + .../minimatch/dist/commonjs/index.js.map | 1 + .../minimatch/dist/commonjs/package.json | 3 + .../minimatch/dist/commonjs/unescape.d.ts | 17 + .../minimatch/dist/commonjs/unescape.d.ts.map | 1 + .../minimatch/dist/commonjs/unescape.js | 24 + .../minimatch/dist/commonjs/unescape.js.map | 1 + .../dist/esm/assert-valid-pattern.d.ts | 2 + .../dist/esm/assert-valid-pattern.d.ts.map | 1 + .../dist/esm/assert-valid-pattern.js | 10 + .../dist/esm/assert-valid-pattern.js.map | 1 + node_modules/minimatch/dist/esm/ast.d.ts | 20 + node_modules/minimatch/dist/esm/ast.d.ts.map | 1 + node_modules/minimatch/dist/esm/ast.js | 588 + node_modules/minimatch/dist/esm/ast.js.map | 1 + .../minimatch/dist/esm/brace-expressions.d.ts | 8 + .../dist/esm/brace-expressions.d.ts.map | 1 + .../minimatch/dist/esm/brace-expressions.js | 148 + .../dist/esm/brace-expressions.js.map | 1 + node_modules/minimatch/dist/esm/escape.d.ts | 12 + .../minimatch/dist/esm/escape.d.ts.map | 1 + node_modules/minimatch/dist/esm/escape.js | 18 + node_modules/minimatch/dist/esm/escape.js.map | 1 + node_modules/minimatch/dist/esm/index.d.ts | 94 + .../minimatch/dist/esm/index.d.ts.map | 1 + node_modules/minimatch/dist/esm/index.js | 1001 + node_modules/minimatch/dist/esm/index.js.map | 1 + node_modules/minimatch/dist/esm/package.json | 3 + node_modules/minimatch/dist/esm/unescape.d.ts | 17 + .../minimatch/dist/esm/unescape.d.ts.map | 1 + node_modules/minimatch/dist/esm/unescape.js | 20 + .../minimatch/dist/esm/unescape.js.map | 1 + node_modules/minimatch/package.json | 82 + node_modules/minipass/LICENSE | 15 + node_modules/minipass/README.md | 825 + .../minipass/dist/commonjs/index.d.ts | 549 + .../minipass/dist/commonjs/index.d.ts.map | 1 + node_modules/minipass/dist/commonjs/index.js | 1028 + .../minipass/dist/commonjs/index.js.map | 1 + .../minipass/dist/commonjs/package.json | 3 + node_modules/minipass/dist/esm/index.d.ts | 549 + node_modules/minipass/dist/esm/index.d.ts.map | 1 + node_modules/minipass/dist/esm/index.js | 1018 + node_modules/minipass/dist/esm/index.js.map | 1 + node_modules/minipass/dist/esm/package.json | 3 + node_modules/minipass/package.json | 82 + .../package-json-from-dist/LICENSE.md | 63 + node_modules/package-json-from-dist/README.md | 95 + .../dist/commonjs/index.d.ts | 89 + .../dist/commonjs/index.d.ts.map | 1 + .../dist/commonjs/index.js | 124 + .../dist/commonjs/index.js.map | 1 + .../dist/commonjs/package.json | 3 + .../dist/esm/index.d.ts | 89 + .../dist/esm/index.d.ts.map | 1 + .../package-json-from-dist/dist/esm/index.js | 119 + .../dist/esm/index.js.map | 1 + .../dist/esm/package.json | 3 + .../package-json-from-dist/package.json | 68 + node_modules/path-key/index.d.ts | 40 + node_modules/path-key/index.js | 16 + node_modules/path-key/license | 9 + node_modules/path-key/package.json | 39 + node_modules/path-key/readme.md | 61 + node_modules/path-parse/LICENSE | 21 + node_modules/path-parse/README.md | 42 + node_modules/path-parse/index.js | 75 + node_modules/path-parse/package.json | 33 + node_modules/path-scurry/LICENSE.md | 55 + node_modules/path-scurry/README.md | 636 + .../path-scurry/dist/commonjs/index.d.ts | 1116 + .../path-scurry/dist/commonjs/index.d.ts.map | 1 + .../path-scurry/dist/commonjs/index.js | 2014 + .../path-scurry/dist/commonjs/index.js.map | 1 + .../path-scurry/dist/commonjs/package.json | 3 + node_modules/path-scurry/dist/esm/index.d.ts | 1116 + .../path-scurry/dist/esm/index.d.ts.map | 1 + node_modules/path-scurry/dist/esm/index.js | 1979 + .../path-scurry/dist/esm/index.js.map | 1 + .../path-scurry/dist/esm/package.json | 3 + node_modules/path-scurry/package.json | 89 + node_modules/picocolors/LICENSE | 15 + node_modules/picocolors/README.md | 21 + node_modules/picocolors/package.json | 25 + node_modules/picocolors/picocolors.browser.js | 4 + node_modules/picocolors/picocolors.d.ts | 5 + node_modules/picocolors/picocolors.js | 65 + node_modules/picocolors/types.ts | 30 + node_modules/picomatch/CHANGELOG.md | 136 + node_modules/picomatch/LICENSE | 21 + node_modules/picomatch/README.md | 708 + node_modules/picomatch/index.js | 3 + node_modules/picomatch/lib/constants.js | 179 + node_modules/picomatch/lib/parse.js | 1091 + node_modules/picomatch/lib/picomatch.js | 342 + node_modules/picomatch/lib/scan.js | 391 + node_modules/picomatch/lib/utils.js | 64 + node_modules/picomatch/package.json | 81 + node_modules/react/LICENSE | 21 + node_modules/react/README.md | 37 + .../cjs/react-jsx-dev-runtime.development.js | 1315 + .../react-jsx-dev-runtime.production.min.js | 10 + .../react-jsx-dev-runtime.profiling.min.js | 10 + .../cjs/react-jsx-runtime.development.js | 1333 + .../cjs/react-jsx-runtime.production.min.js | 11 + .../cjs/react-jsx-runtime.profiling.min.js | 11 + node_modules/react/cjs/react.development.js | 2740 + .../react/cjs/react.production.min.js | 26 + .../cjs/react.shared-subset.development.js | 20 + .../cjs/react.shared-subset.production.min.js | 10 + node_modules/react/index.js | 7 + node_modules/react/jsx-dev-runtime.js | 7 + node_modules/react/jsx-runtime.js | 7 + node_modules/react/package.json | 47 + node_modules/react/react.shared-subset.js | 7 + node_modules/react/umd/react.development.js | 3343 + .../react/umd/react.production.min.js | 31 + node_modules/react/umd/react.profiling.min.js | 31 + node_modules/resolve/.editorconfig | 37 + node_modules/resolve/.eslintrc | 65 + node_modules/resolve/.github/FUNDING.yml | 12 + node_modules/resolve/LICENSE | 21 + node_modules/resolve/SECURITY.md | 3 + node_modules/resolve/async.js | 3 + node_modules/resolve/bin/resolve | 50 + node_modules/resolve/example/async.js | 5 + node_modules/resolve/example/sync.js | 3 + node_modules/resolve/index.js | 6 + node_modules/resolve/lib/async.js | 329 + node_modules/resolve/lib/caller.js | 8 + node_modules/resolve/lib/core.js | 12 + node_modules/resolve/lib/core.json | 158 + node_modules/resolve/lib/homedir.js | 24 + node_modules/resolve/lib/is-core.js | 5 + .../resolve/lib/node-modules-paths.js | 42 + node_modules/resolve/lib/normalize-options.js | 10 + node_modules/resolve/lib/sync.js | 208 + node_modules/resolve/package.json | 72 + node_modules/resolve/readme.markdown | 301 + node_modules/resolve/sync.js | 3 + node_modules/resolve/test/core.js | 88 + node_modules/resolve/test/dotdot.js | 29 + node_modules/resolve/test/dotdot/abc/index.js | 2 + node_modules/resolve/test/dotdot/index.js | 1 + node_modules/resolve/test/faulty_basedir.js | 29 + node_modules/resolve/test/filter.js | 34 + node_modules/resolve/test/filter_sync.js | 33 + node_modules/resolve/test/home_paths.js | 127 + node_modules/resolve/test/home_paths_sync.js | 114 + node_modules/resolve/test/mock.js | 315 + node_modules/resolve/test/mock_sync.js | 214 + node_modules/resolve/test/module_dir.js | 56 + .../test/module_dir/xmodules/aaa/index.js | 1 + .../test/module_dir/ymodules/aaa/index.js | 1 + .../test/module_dir/zmodules/bbb/main.js | 1 + .../test/module_dir/zmodules/bbb/package.json | 3 + .../resolve/test/node-modules-paths.js | 143 + node_modules/resolve/test/node_path.js | 70 + .../resolve/test/node_path/x/aaa/index.js | 1 + .../resolve/test/node_path/x/ccc/index.js | 1 + .../resolve/test/node_path/y/bbb/index.js | 1 + .../resolve/test/node_path/y/ccc/index.js | 1 + node_modules/resolve/test/nonstring.js | 9 + node_modules/resolve/test/pathfilter.js | 75 + .../resolve/test/pathfilter/deep_ref/main.js | 0 node_modules/resolve/test/precedence.js | 23 + node_modules/resolve/test/precedence/aaa.js | 1 + .../resolve/test/precedence/aaa/index.js | 1 + .../resolve/test/precedence/aaa/main.js | 1 + node_modules/resolve/test/precedence/bbb.js | 1 + .../resolve/test/precedence/bbb/main.js | 1 + node_modules/resolve/test/resolver.js | 597 + .../resolve/test/resolver/baz/doom.js | 0 .../resolve/test/resolver/baz/package.json | 4 + .../resolve/test/resolver/baz/quux.js | 1 + .../resolve/test/resolver/browser_field/a.js | 0 .../resolve/test/resolver/browser_field/b.js | 0 .../test/resolver/browser_field/package.json | 5 + node_modules/resolve/test/resolver/cup.coffee | 1 + .../resolve/test/resolver/dot_main/index.js | 1 + .../test/resolver/dot_main/package.json | 3 + .../test/resolver/dot_slash_main/index.js | 1 + .../test/resolver/dot_slash_main/package.json | 3 + .../resolve/test/resolver/false_main/index.js | 0 .../test/resolver/false_main/package.json | 4 + node_modules/resolve/test/resolver/foo.js | 1 + .../test/resolver/incorrect_main/index.js | 2 + .../test/resolver/incorrect_main/package.json | 3 + .../test/resolver/invalid_main/package.json | 7 + node_modules/resolve/test/resolver/mug.coffee | 0 node_modules/resolve/test/resolver/mug.js | 0 .../test/resolver/multirepo/lerna.json | 6 + .../test/resolver/multirepo/package.json | 20 + .../multirepo/packages/package-a/index.js | 35 + .../multirepo/packages/package-a/package.json | 14 + .../multirepo/packages/package-b/index.js | 0 .../multirepo/packages/package-b/package.json | 14 + .../resolver/nested_symlinks/mylib/async.js | 26 + .../nested_symlinks/mylib/package.json | 15 + .../resolver/nested_symlinks/mylib/sync.js | 12 + .../test/resolver/other_path/lib/other-lib.js | 0 .../resolve/test/resolver/other_path/root.js | 0 .../resolve/test/resolver/quux/foo/index.js | 1 + .../resolve/test/resolver/same_names/foo.js | 1 + .../test/resolver/same_names/foo/index.js | 1 + .../resolver/symlinked/_/node_modules/foo.js | 0 .../symlinked/_/symlink_target/.gitkeep | 0 .../test/resolver/symlinked/package/bar.js | 1 + .../resolver/symlinked/package/package.json | 3 + .../test/resolver/without_basedir/main.js | 5 + node_modules/resolve/test/resolver_sync.js | 730 + node_modules/resolve/test/shadowed_core.js | 54 + .../shadowed_core/node_modules/util/index.js | 0 node_modules/resolve/test/subdirs.js | 13 + node_modules/resolve/test/symlinks.js | 176 + node_modules/rollup-plugin-dts/COPYING | 674 + node_modules/rollup-plugin-dts/COPYING.LESSER | 165 + node_modules/rollup-plugin-dts/README.md | 95 + .../dist/rollup-plugin-dts.cjs | 1904 + .../dist/rollup-plugin-dts.d.cts | 26 + .../dist/rollup-plugin-dts.d.mts | 26 + .../dist/rollup-plugin-dts.mjs | 1879 + node_modules/rollup-plugin-dts/package.json | 71 + node_modules/rollup/LICENSE.md | 653 + node_modules/rollup/README.md | 134 + node_modules/rollup/dist/bin/rollup | 1765 + node_modules/rollup/dist/es/getLogFilter.js | 64 + node_modules/rollup/dist/es/package.json | 1 + node_modules/rollup/dist/es/parseAst.js | 12 + node_modules/rollup/dist/es/rollup.js | 18 + .../rollup/dist/es/shared/node-entry.js | 21329 ++ .../rollup/dist/es/shared/parseAst.js | 1912 + node_modules/rollup/dist/es/shared/watch.js | 4883 + node_modules/rollup/dist/getLogFilter.d.ts | 5 + node_modules/rollup/dist/getLogFilter.js | 69 + node_modules/rollup/dist/loadConfigFile.d.ts | 20 + node_modules/rollup/dist/loadConfigFile.js | 30 + node_modules/rollup/dist/native.js | 105 + node_modules/rollup/dist/parseAst.d.ts | 4 + node_modules/rollup/dist/parseAst.js | 22 + node_modules/rollup/dist/rollup.d.ts | 1028 + node_modules/rollup/dist/rollup.js | 100 + .../rollup/dist/shared/fsevents-importer.js | 37 + node_modules/rollup/dist/shared/index.js | 4590 + .../rollup/dist/shared/loadConfigFile.js | 553 + node_modules/rollup/dist/shared/parseAst.js | 2134 + node_modules/rollup/dist/shared/rollup.js | 21322 ++ node_modules/rollup/dist/shared/watch-cli.js | 562 + node_modules/rollup/dist/shared/watch.js | 323 + node_modules/rollup/package.json | 261 + node_modules/shebang-command/index.js | 19 + node_modules/shebang-command/license | 9 + node_modules/shebang-command/package.json | 34 + node_modules/shebang-command/readme.md | 34 + node_modules/shebang-regex/index.d.ts | 22 + node_modules/shebang-regex/index.js | 2 + node_modules/shebang-regex/license | 9 + node_modules/shebang-regex/package.json | 35 + node_modules/shebang-regex/readme.md | 33 + node_modules/signal-exit/LICENSE.txt | 16 + node_modules/signal-exit/README.md | 74 + .../signal-exit/dist/cjs/browser.d.ts | 12 + .../signal-exit/dist/cjs/browser.d.ts.map | 1 + node_modules/signal-exit/dist/cjs/browser.js | 10 + .../signal-exit/dist/cjs/browser.js.map | 1 + node_modules/signal-exit/dist/cjs/index.d.ts | 48 + .../signal-exit/dist/cjs/index.d.ts.map | 1 + node_modules/signal-exit/dist/cjs/index.js | 279 + .../signal-exit/dist/cjs/index.js.map | 1 + .../signal-exit/dist/cjs/package.json | 3 + .../signal-exit/dist/cjs/signals.d.ts | 29 + .../signal-exit/dist/cjs/signals.d.ts.map | 1 + node_modules/signal-exit/dist/cjs/signals.js | 42 + .../signal-exit/dist/cjs/signals.js.map | 1 + .../signal-exit/dist/mjs/browser.d.ts | 12 + .../signal-exit/dist/mjs/browser.d.ts.map | 1 + node_modules/signal-exit/dist/mjs/browser.js | 4 + .../signal-exit/dist/mjs/browser.js.map | 1 + node_modules/signal-exit/dist/mjs/index.d.ts | 48 + .../signal-exit/dist/mjs/index.d.ts.map | 1 + node_modules/signal-exit/dist/mjs/index.js | 275 + .../signal-exit/dist/mjs/index.js.map | 1 + .../signal-exit/dist/mjs/package.json | 3 + .../signal-exit/dist/mjs/signals.d.ts | 29 + .../signal-exit/dist/mjs/signals.d.ts.map | 1 + node_modules/signal-exit/dist/mjs/signals.js | 39 + .../signal-exit/dist/mjs/signals.js.map | 1 + node_modules/signal-exit/package.json | 106 + node_modules/string-width-cjs/index.d.ts | 29 + node_modules/string-width-cjs/index.js | 47 + node_modules/string-width-cjs/license | 9 + .../node_modules/ansi-regex/index.d.ts | 37 + .../node_modules/ansi-regex/index.js | 10 + .../node_modules/ansi-regex/license | 9 + .../node_modules/ansi-regex/package.json | 55 + .../node_modules/ansi-regex/readme.md | 78 + .../node_modules/emoji-regex/LICENSE-MIT.txt | 20 + .../node_modules/emoji-regex/README.md | 73 + .../node_modules/emoji-regex/es2015/index.js | 6 + .../node_modules/emoji-regex/es2015/text.js | 6 + .../node_modules/emoji-regex/index.d.ts | 23 + .../node_modules/emoji-regex/index.js | 6 + .../node_modules/emoji-regex/package.json | 50 + .../node_modules/emoji-regex/text.js | 6 + .../node_modules/strip-ansi/index.d.ts | 17 + .../node_modules/strip-ansi/index.js | 4 + .../node_modules/strip-ansi/license | 9 + .../node_modules/strip-ansi/package.json | 54 + .../node_modules/strip-ansi/readme.md | 46 + node_modules/string-width-cjs/package.json | 56 + node_modules/string-width-cjs/readme.md | 50 + node_modules/string-width/index.d.ts | 29 + node_modules/string-width/index.js | 54 + node_modules/string-width/license | 9 + node_modules/string-width/package.json | 59 + node_modules/string-width/readme.md | 67 + node_modules/strip-ansi-cjs/index.d.ts | 17 + node_modules/strip-ansi-cjs/index.js | 4 + node_modules/strip-ansi-cjs/license | 9 + .../node_modules/ansi-regex/index.d.ts | 37 + .../node_modules/ansi-regex/index.js | 10 + .../node_modules/ansi-regex/license | 9 + .../node_modules/ansi-regex/package.json | 55 + .../node_modules/ansi-regex/readme.md | 78 + node_modules/strip-ansi-cjs/package.json | 54 + node_modules/strip-ansi-cjs/readme.md | 46 + node_modules/strip-ansi/index.d.ts | 15 + node_modules/strip-ansi/index.js | 14 + node_modules/strip-ansi/license | 9 + node_modules/strip-ansi/package.json | 57 + node_modules/strip-ansi/readme.md | 41 + node_modules/supports-color/browser.js | 5 + node_modules/supports-color/index.js | 131 + node_modules/supports-color/license | 9 + node_modules/supports-color/package.json | 53 + node_modules/supports-color/readme.md | 66 + .../supports-preserve-symlinks-flag/.eslintrc | 14 + .../.github/FUNDING.yml | 12 + .../supports-preserve-symlinks-flag/.nycrc | 9 + .../CHANGELOG.md | 22 + .../supports-preserve-symlinks-flag/LICENSE | 21 + .../supports-preserve-symlinks-flag/README.md | 42 + .../browser.js | 3 + .../supports-preserve-symlinks-flag/index.js | 9 + .../package.json | 70 + .../test/index.js | 29 + node_modules/typescript/LICENSE.txt | 55 + node_modules/typescript/README.md | 50 + node_modules/typescript/SECURITY.md | 41 + .../typescript/ThirdPartyNoticeText.txt | 193 + node_modules/typescript/bin/tsc | 2 + node_modules/typescript/bin/tsserver | 2 + .../typescript/lib/cancellationToken.js | 90 + .../lib/cs/diagnosticMessages.generated.json | 1880 + .../lib/de/diagnosticMessages.generated.json | 1880 + .../lib/es/diagnosticMessages.generated.json | 1880 + .../lib/fr/diagnosticMessages.generated.json | 1880 + .../lib/it/diagnosticMessages.generated.json | 1880 + .../lib/ja/diagnosticMessages.generated.json | 1880 + .../lib/ko/diagnosticMessages.generated.json | 1880 + node_modules/typescript/lib/lib.d.ts | 22 + .../typescript/lib/lib.decorators.d.ts | 386 + .../typescript/lib/lib.decorators.legacy.d.ts | 22 + .../typescript/lib/lib.dom.asynciterable.d.ts | 33 + node_modules/typescript/lib/lib.dom.d.ts | 28596 +++ .../typescript/lib/lib.dom.iterable.d.ts | 475 + .../typescript/lib/lib.es2015.collection.d.ts | 147 + .../typescript/lib/lib.es2015.core.d.ts | 597 + node_modules/typescript/lib/lib.es2015.d.ts | 28 + .../typescript/lib/lib.es2015.generator.d.ts | 77 + .../typescript/lib/lib.es2015.iterable.d.ts | 495 + .../typescript/lib/lib.es2015.promise.d.ts | 81 + .../typescript/lib/lib.es2015.proxy.d.ts | 128 + .../typescript/lib/lib.es2015.reflect.d.ts | 144 + .../typescript/lib/lib.es2015.symbol.d.ts | 46 + .../lib/lib.es2015.symbol.wellknown.d.ts | 326 + .../lib/lib.es2016.array.include.d.ts | 116 + node_modules/typescript/lib/lib.es2016.d.ts | 21 + .../typescript/lib/lib.es2016.full.d.ts | 23 + .../typescript/lib/lib.es2016.intl.d.ts | 31 + node_modules/typescript/lib/lib.es2017.d.ts | 25 + .../typescript/lib/lib.es2017.date.d.ts | 31 + .../typescript/lib/lib.es2017.full.d.ts | 23 + .../typescript/lib/lib.es2017.intl.d.ts | 44 + .../typescript/lib/lib.es2017.object.d.ts | 49 + .../lib/lib.es2017.sharedmemory.d.ts | 135 + .../typescript/lib/lib.es2017.string.d.ts | 45 + .../lib/lib.es2017.typedarrays.d.ts | 53 + .../lib/lib.es2018.asyncgenerator.d.ts | 77 + .../lib/lib.es2018.asynciterable.d.ts | 43 + node_modules/typescript/lib/lib.es2018.d.ts | 24 + .../typescript/lib/lib.es2018.full.d.ts | 24 + .../typescript/lib/lib.es2018.intl.d.ts | 83 + .../typescript/lib/lib.es2018.promise.d.ts | 30 + .../typescript/lib/lib.es2018.regexp.d.ts | 37 + .../typescript/lib/lib.es2019.array.d.ts | 79 + node_modules/typescript/lib/lib.es2019.d.ts | 24 + .../typescript/lib/lib.es2019.full.d.ts | 24 + .../typescript/lib/lib.es2019.intl.d.ts | 23 + .../typescript/lib/lib.es2019.object.d.ts | 33 + .../typescript/lib/lib.es2019.string.d.ts | 37 + .../typescript/lib/lib.es2019.symbol.d.ts | 24 + .../typescript/lib/lib.es2020.bigint.d.ts | 727 + node_modules/typescript/lib/lib.es2020.d.ts | 27 + .../typescript/lib/lib.es2020.date.d.ts | 42 + .../typescript/lib/lib.es2020.full.d.ts | 24 + .../typescript/lib/lib.es2020.intl.d.ts | 474 + .../typescript/lib/lib.es2020.number.d.ts | 28 + .../typescript/lib/lib.es2020.promise.d.ts | 47 + .../lib/lib.es2020.sharedmemory.d.ts | 97 + .../typescript/lib/lib.es2020.string.d.ts | 42 + .../lib/lib.es2020.symbol.wellknown.d.ts | 37 + node_modules/typescript/lib/lib.es2021.d.ts | 23 + .../typescript/lib/lib.es2021.full.d.ts | 24 + .../typescript/lib/lib.es2021.intl.d.ts | 166 + .../typescript/lib/lib.es2021.promise.d.ts | 48 + .../typescript/lib/lib.es2021.string.d.ts | 33 + .../typescript/lib/lib.es2021.weakref.d.ts | 76 + .../typescript/lib/lib.es2022.array.d.ts | 121 + node_modules/typescript/lib/lib.es2022.d.ts | 26 + .../typescript/lib/lib.es2022.error.d.ts | 73 + .../typescript/lib/lib.es2022.full.d.ts | 24 + .../typescript/lib/lib.es2022.intl.d.ts | 117 + .../typescript/lib/lib.es2022.object.d.ts | 26 + .../typescript/lib/lib.es2022.regexp.d.ts | 39 + .../lib/lib.es2022.sharedmemory.d.ts | 39 + .../typescript/lib/lib.es2022.string.d.ts | 25 + .../typescript/lib/lib.es2023.array.d.ts | 924 + .../typescript/lib/lib.es2023.collection.d.ts | 21 + node_modules/typescript/lib/lib.es2023.d.ts | 22 + .../typescript/lib/lib.es2023.full.d.ts | 24 + .../typescript/lib/lib.es2023.intl.d.ts | 56 + node_modules/typescript/lib/lib.es5.d.ts | 4585 + node_modules/typescript/lib/lib.es6.d.ts | 23 + .../typescript/lib/lib.esnext.array.d.ts | 35 + .../typescript/lib/lib.esnext.collection.d.ts | 106 + node_modules/typescript/lib/lib.esnext.d.ts | 28 + .../typescript/lib/lib.esnext.decorators.d.ts | 28 + .../typescript/lib/lib.esnext.disposable.d.ts | 185 + .../typescript/lib/lib.esnext.full.d.ts | 24 + .../typescript/lib/lib.esnext.intl.d.ts | 21 + .../typescript/lib/lib.esnext.object.d.ts | 29 + .../typescript/lib/lib.esnext.promise.d.ts | 35 + .../typescript/lib/lib.esnext.regexp.d.ts | 25 + .../typescript/lib/lib.esnext.string.d.ts | 29 + .../typescript/lib/lib.scripthost.d.ts | 322 + .../lib/lib.webworker.asynciterable.d.ts | 33 + .../typescript/lib/lib.webworker.d.ts | 9431 + .../lib/lib.webworker.importscripts.d.ts | 23 + .../lib/lib.webworker.iterable.d.ts | 276 + .../lib/pl/diagnosticMessages.generated.json | 1880 + .../pt-br/diagnosticMessages.generated.json | 1880 + .../lib/ru/diagnosticMessages.generated.json | 1880 + .../lib/tr/diagnosticMessages.generated.json | 1880 + node_modules/typescript/lib/tsc.js | 129810 ++++++++++ node_modules/typescript/lib/tsserver.js | 621 + .../typescript/lib/tsserverlibrary.d.ts | 17 + .../typescript/lib/tsserverlibrary.js | 21 + node_modules/typescript/lib/typesMap.json | 497 + node_modules/typescript/lib/typescript.d.ts | 11240 + node_modules/typescript/lib/typescript.js | 195005 +++++++++++++++ .../typescript/lib/typingsInstaller.js | 236 + node_modules/typescript/lib/watchGuard.js | 53 + .../zh-cn/diagnosticMessages.generated.json | 1880 + .../zh-tw/diagnosticMessages.generated.json | 1880 + node_modules/typescript/package.json | 116 + node_modules/which/CHANGELOG.md | 166 + node_modules/which/LICENSE | 15 + node_modules/which/README.md | 54 + node_modules/which/bin/node-which | 52 + node_modules/which/package.json | 43 + node_modules/which/which.js | 125 + node_modules/wrap-ansi-cjs/index.js | 216 + node_modules/wrap-ansi-cjs/license | 9 + .../node_modules/ansi-regex/index.d.ts | 37 + .../node_modules/ansi-regex/index.js | 10 + .../node_modules/ansi-regex/license | 9 + .../node_modules/ansi-regex/package.json | 55 + .../node_modules/ansi-regex/readme.md | 78 + .../node_modules/ansi-styles/index.d.ts | 345 + .../node_modules/ansi-styles/index.js | 163 + .../node_modules/ansi-styles/license | 9 + .../node_modules/ansi-styles/package.json | 56 + .../node_modules/ansi-styles/readme.md | 152 + .../node_modules/color-convert/CHANGELOG.md | 54 + .../node_modules/color-convert/LICENSE | 21 + .../node_modules/color-convert/README.md | 68 + .../node_modules/color-convert/conversions.js | 839 + .../node_modules/color-convert/index.js | 81 + .../node_modules/color-convert/package.json | 48 + .../node_modules/color-convert/route.js | 97 + .../node_modules/color-name/LICENSE | 8 + .../node_modules/color-name/README.md | 11 + .../node_modules/color-name/index.js | 152 + .../node_modules/color-name/package.json | 28 + .../node_modules/emoji-regex/LICENSE-MIT.txt | 20 + .../node_modules/emoji-regex/README.md | 73 + .../node_modules/emoji-regex/es2015/index.js | 6 + .../node_modules/emoji-regex/es2015/text.js | 6 + .../node_modules/emoji-regex/index.d.ts | 23 + .../node_modules/emoji-regex/index.js | 6 + .../node_modules/emoji-regex/package.json | 50 + .../node_modules/emoji-regex/text.js | 6 + .../node_modules/string-width/index.d.ts | 29 + .../node_modules/string-width/index.js | 47 + .../node_modules/string-width/license | 9 + .../node_modules/string-width/package.json | 56 + .../node_modules/string-width/readme.md | 50 + .../node_modules/strip-ansi/index.d.ts | 17 + .../node_modules/strip-ansi/index.js | 4 + .../node_modules/strip-ansi/license | 9 + .../node_modules/strip-ansi/package.json | 54 + .../node_modules/strip-ansi/readme.md | 46 + node_modules/wrap-ansi-cjs/package.json | 62 + node_modules/wrap-ansi-cjs/readme.md | 91 + node_modules/wrap-ansi/index.d.ts | 41 + node_modules/wrap-ansi/index.js | 214 + node_modules/wrap-ansi/license | 9 + .../node_modules/ansi-styles/index.d.ts | 236 + .../node_modules/ansi-styles/index.js | 223 + .../node_modules/ansi-styles/license | 9 + .../node_modules/ansi-styles/package.json | 54 + .../node_modules/ansi-styles/readme.md | 173 + node_modules/wrap-ansi/package.json | 69 + node_modules/wrap-ansi/readme.md | 91 + package-lock.json | 2068 + package.json | 27 + rollup.config.mjs | 30 + src/components/Button/Button.tsx | 11 + src/components/Button/index.ts | 1 + src/components/index.ts | 1 + src/index.ts | 1 + tsconfig.json | 21 + 1044 files changed, 621903 insertions(+) create mode 100644 .prettierrc create mode 100644 .prettierrc.js create mode 100644 .prettierrc.json create mode 100644 dist/cjs/index.js create mode 100644 dist/cjs/index.js.map create mode 100644 dist/cjs/types/components/Button/Button.d.ts create mode 100644 dist/cjs/types/components/Button/index.d.ts create mode 100644 dist/cjs/types/components/index.d.ts create mode 100644 dist/cjs/types/index.d.ts create mode 100644 dist/esm/index.js create mode 100644 dist/esm/index.js.map create mode 100644 dist/esm/types/components/Button/Button.d.ts create mode 100644 dist/esm/types/components/Button/index.d.ts create mode 100644 dist/esm/types/components/index.d.ts create mode 100644 dist/esm/types/index.d.ts create mode 100644 dist/index.d.ts create mode 120000 node_modules/.bin/glob create mode 120000 node_modules/.bin/loose-envify create mode 120000 node_modules/.bin/node-which create mode 120000 node_modules/.bin/resolve create mode 120000 node_modules/.bin/rollup create mode 120000 node_modules/.bin/tsc create mode 120000 node_modules/.bin/tsserver create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/@babel/code-frame/LICENSE create mode 100644 node_modules/@babel/code-frame/README.md create mode 100644 node_modules/@babel/code-frame/lib/index.js create mode 100644 node_modules/@babel/code-frame/lib/index.js.map create mode 100644 node_modules/@babel/code-frame/package.json create mode 100644 node_modules/@babel/helper-validator-identifier/LICENSE create mode 100644 node_modules/@babel/helper-validator-identifier/README.md create mode 100644 node_modules/@babel/helper-validator-identifier/lib/identifier.js create mode 100644 node_modules/@babel/helper-validator-identifier/lib/identifier.js.map create mode 100644 node_modules/@babel/helper-validator-identifier/lib/index.js create mode 100644 node_modules/@babel/helper-validator-identifier/lib/index.js.map create mode 100644 node_modules/@babel/helper-validator-identifier/lib/keyword.js create mode 100644 node_modules/@babel/helper-validator-identifier/lib/keyword.js.map create mode 100644 node_modules/@babel/helper-validator-identifier/package.json create mode 100644 node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js create mode 100644 node_modules/@babel/highlight/LICENSE create mode 100644 node_modules/@babel/highlight/README.md create mode 100644 node_modules/@babel/highlight/lib/index.js create mode 100644 node_modules/@babel/highlight/lib/index.js.map create mode 100644 node_modules/@babel/highlight/package.json create mode 100644 node_modules/@isaacs/cliui/LICENSE.txt create mode 100644 node_modules/@isaacs/cliui/README.md create mode 100644 node_modules/@isaacs/cliui/build/index.cjs create mode 100644 node_modules/@isaacs/cliui/build/index.d.cts create mode 100644 node_modules/@isaacs/cliui/build/lib/index.js create mode 100644 node_modules/@isaacs/cliui/index.mjs create mode 100644 node_modules/@isaacs/cliui/package.json create mode 100644 node_modules/@jridgewell/sourcemap-codec/LICENSE create mode 100644 node_modules/@jridgewell/sourcemap-codec/README.md create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/types/scopes.d.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/types/strings.d.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/types/vlq.d.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/package.json create mode 100644 node_modules/@pkgjs/parseargs/.editorconfig create mode 100644 node_modules/@pkgjs/parseargs/CHANGELOG.md create mode 100644 node_modules/@pkgjs/parseargs/LICENSE create mode 100644 node_modules/@pkgjs/parseargs/README.md create mode 100644 node_modules/@pkgjs/parseargs/examples/is-default-value.js create mode 100644 node_modules/@pkgjs/parseargs/examples/limit-long-syntax.js create mode 100644 node_modules/@pkgjs/parseargs/examples/negate.js create mode 100644 node_modules/@pkgjs/parseargs/examples/no-repeated-options.js create mode 100644 node_modules/@pkgjs/parseargs/examples/ordered-options.mjs create mode 100644 node_modules/@pkgjs/parseargs/examples/simple-hard-coded.js create mode 100644 node_modules/@pkgjs/parseargs/index.js create mode 100644 node_modules/@pkgjs/parseargs/internal/errors.js create mode 100644 node_modules/@pkgjs/parseargs/internal/primordials.js create mode 100644 node_modules/@pkgjs/parseargs/internal/util.js create mode 100644 node_modules/@pkgjs/parseargs/internal/validators.js create mode 100644 node_modules/@pkgjs/parseargs/package.json create mode 100644 node_modules/@pkgjs/parseargs/utils.js create mode 100644 node_modules/@rollup/plugin-commonjs/LICENSE create mode 100644 node_modules/@rollup/plugin-commonjs/README.md create mode 100644 node_modules/@rollup/plugin-commonjs/dist/cjs/index.js create mode 100644 node_modules/@rollup/plugin-commonjs/dist/es/index.js create mode 100644 node_modules/@rollup/plugin-commonjs/dist/es/package.json create mode 100644 node_modules/@rollup/plugin-commonjs/package.json create mode 100644 node_modules/@rollup/plugin-commonjs/types/index.d.ts create mode 100644 node_modules/@rollup/plugin-node-resolve/LICENSE create mode 100755 node_modules/@rollup/plugin-node-resolve/README.md create mode 100644 node_modules/@rollup/plugin-node-resolve/dist/cjs/index.js create mode 100644 node_modules/@rollup/plugin-node-resolve/dist/es/index.js create mode 100644 node_modules/@rollup/plugin-node-resolve/dist/es/package.json create mode 100644 node_modules/@rollup/plugin-node-resolve/package.json create mode 100755 node_modules/@rollup/plugin-node-resolve/types/index.d.ts create mode 100644 node_modules/@rollup/plugin-typescript/LICENSE create mode 100644 node_modules/@rollup/plugin-typescript/README.md create mode 100644 node_modules/@rollup/plugin-typescript/dist/cjs/index.js create mode 100644 node_modules/@rollup/plugin-typescript/dist/es/index.js create mode 100644 node_modules/@rollup/plugin-typescript/dist/es/package.json create mode 100644 node_modules/@rollup/plugin-typescript/package.json create mode 100644 node_modules/@rollup/plugin-typescript/types/index.d.ts create mode 100644 node_modules/@rollup/pluginutils/LICENSE create mode 100644 node_modules/@rollup/pluginutils/README.md create mode 100644 node_modules/@rollup/pluginutils/dist/cjs/index.js create mode 100644 node_modules/@rollup/pluginutils/dist/es/index.js create mode 100644 node_modules/@rollup/pluginutils/dist/es/package.json create mode 100644 node_modules/@rollup/pluginutils/package.json create mode 100644 node_modules/@rollup/pluginutils/types/index.d.ts create mode 100644 node_modules/@rollup/rollup-darwin-x64/README.md create mode 100644 node_modules/@rollup/rollup-darwin-x64/package.json create mode 100644 node_modules/@rollup/rollup-darwin-x64/rollup.darwin-x64.node create mode 100644 node_modules/@types/estree/LICENSE create mode 100644 node_modules/@types/estree/README.md create mode 100644 node_modules/@types/estree/flow.d.ts create mode 100644 node_modules/@types/estree/index.d.ts create mode 100644 node_modules/@types/estree/package.json create mode 100644 node_modules/@types/prop-types/LICENSE create mode 100644 node_modules/@types/prop-types/README.md create mode 100644 node_modules/@types/prop-types/index.d.ts create mode 100644 node_modules/@types/prop-types/package.json create mode 100644 node_modules/@types/react/LICENSE create mode 100644 node_modules/@types/react/README.md create mode 100644 node_modules/@types/react/canary.d.ts create mode 100644 node_modules/@types/react/experimental.d.ts create mode 100644 node_modules/@types/react/global.d.ts create mode 100644 node_modules/@types/react/index.d.ts create mode 100644 node_modules/@types/react/jsx-dev-runtime.d.ts create mode 100644 node_modules/@types/react/jsx-runtime.d.ts create mode 100644 node_modules/@types/react/package.json create mode 100644 node_modules/@types/react/ts5.0/canary.d.ts create mode 100644 node_modules/@types/react/ts5.0/experimental.d.ts create mode 100644 node_modules/@types/react/ts5.0/global.d.ts create mode 100644 node_modules/@types/react/ts5.0/index.d.ts create mode 100644 node_modules/@types/react/ts5.0/jsx-dev-runtime.d.ts create mode 100644 node_modules/@types/react/ts5.0/jsx-runtime.d.ts create mode 100755 node_modules/@types/resolve/LICENSE create mode 100755 node_modules/@types/resolve/README.md create mode 100755 node_modules/@types/resolve/index.d.ts create mode 100755 node_modules/@types/resolve/package.json create mode 100644 node_modules/ansi-regex/index.d.ts create mode 100644 node_modules/ansi-regex/index.js create mode 100644 node_modules/ansi-regex/license create mode 100644 node_modules/ansi-regex/package.json create mode 100644 node_modules/ansi-regex/readme.md create mode 100644 node_modules/ansi-styles/index.js create mode 100644 node_modules/ansi-styles/license create mode 100644 node_modules/ansi-styles/package.json create mode 100644 node_modules/ansi-styles/readme.md create mode 100644 node_modules/balanced-match/.github/FUNDING.yml create mode 100644 node_modules/balanced-match/LICENSE.md create mode 100644 node_modules/balanced-match/README.md create mode 100644 node_modules/balanced-match/index.js create mode 100644 node_modules/balanced-match/package.json create mode 100644 node_modules/brace-expansion/.github/FUNDING.yml create mode 100644 node_modules/brace-expansion/LICENSE create mode 100644 node_modules/brace-expansion/README.md create mode 100644 node_modules/brace-expansion/index.js create mode 100644 node_modules/brace-expansion/package.json create mode 100644 node_modules/builtin-modules/builtin-modules.json create mode 100644 node_modules/builtin-modules/index.d.ts create mode 100644 node_modules/builtin-modules/index.js create mode 100644 node_modules/builtin-modules/license create mode 100644 node_modules/builtin-modules/package.json create mode 100644 node_modules/builtin-modules/readme.md create mode 100644 node_modules/builtin-modules/static.d.ts create mode 100644 node_modules/builtin-modules/static.js create mode 100644 node_modules/chalk/index.js create mode 100644 node_modules/chalk/index.js.flow create mode 100644 node_modules/chalk/license create mode 100644 node_modules/chalk/package.json create mode 100644 node_modules/chalk/readme.md create mode 100644 node_modules/chalk/templates.js create mode 100644 node_modules/chalk/types/index.d.ts create mode 100644 node_modules/color-convert/CHANGELOG.md create mode 100644 node_modules/color-convert/LICENSE create mode 100644 node_modules/color-convert/README.md create mode 100644 node_modules/color-convert/conversions.js create mode 100644 node_modules/color-convert/index.js create mode 100644 node_modules/color-convert/package.json create mode 100644 node_modules/color-convert/route.js create mode 100644 node_modules/color-name/.eslintrc.json create mode 100644 node_modules/color-name/.npmignore create mode 100644 node_modules/color-name/LICENSE create mode 100644 node_modules/color-name/README.md create mode 100644 node_modules/color-name/index.js create mode 100644 node_modules/color-name/package.json create mode 100644 node_modules/color-name/test.js create mode 100644 node_modules/commondir/LICENSE create mode 100644 node_modules/commondir/example/dir.js create mode 100644 node_modules/commondir/index.js create mode 100644 node_modules/commondir/package.json create mode 100644 node_modules/commondir/readme.markdown create mode 100644 node_modules/commondir/test/dirs.js create mode 100644 node_modules/cross-spawn/CHANGELOG.md create mode 100644 node_modules/cross-spawn/LICENSE create mode 100644 node_modules/cross-spawn/README.md create mode 100644 node_modules/cross-spawn/index.js create mode 100644 node_modules/cross-spawn/lib/enoent.js create mode 100644 node_modules/cross-spawn/lib/parse.js create mode 100644 node_modules/cross-spawn/lib/util/escape.js create mode 100644 node_modules/cross-spawn/lib/util/readShebang.js create mode 100644 node_modules/cross-spawn/lib/util/resolveCommand.js create mode 100644 node_modules/cross-spawn/package.json create mode 100644 node_modules/csstype/LICENSE create mode 100644 node_modules/csstype/README.md create mode 100644 node_modules/csstype/index.d.ts create mode 100644 node_modules/csstype/index.js.flow create mode 100644 node_modules/csstype/package.json create mode 100644 node_modules/deepmerge/.editorconfig create mode 100644 node_modules/deepmerge/.eslintcache create mode 100644 node_modules/deepmerge/changelog.md create mode 100644 node_modules/deepmerge/dist/cjs.js create mode 100644 node_modules/deepmerge/dist/umd.js create mode 100644 node_modules/deepmerge/index.d.ts create mode 100644 node_modules/deepmerge/index.js create mode 100644 node_modules/deepmerge/license.txt create mode 100644 node_modules/deepmerge/package.json create mode 100644 node_modules/deepmerge/readme.md create mode 100644 node_modules/deepmerge/rollup.config.js create mode 100644 node_modules/eastasianwidth/README.md create mode 100644 node_modules/eastasianwidth/eastasianwidth.js create mode 100644 node_modules/eastasianwidth/package.json create mode 100644 node_modules/emoji-regex/LICENSE-MIT.txt create mode 100644 node_modules/emoji-regex/README.md create mode 100644 node_modules/emoji-regex/RGI_Emoji.d.ts create mode 100644 node_modules/emoji-regex/RGI_Emoji.js create mode 100644 node_modules/emoji-regex/es2015/RGI_Emoji.d.ts create mode 100644 node_modules/emoji-regex/es2015/RGI_Emoji.js create mode 100644 node_modules/emoji-regex/es2015/index.d.ts create mode 100644 node_modules/emoji-regex/es2015/index.js create mode 100644 node_modules/emoji-regex/es2015/text.d.ts create mode 100644 node_modules/emoji-regex/es2015/text.js create mode 100644 node_modules/emoji-regex/index.d.ts create mode 100644 node_modules/emoji-regex/index.js create mode 100644 node_modules/emoji-regex/package.json create mode 100644 node_modules/emoji-regex/text.d.ts create mode 100644 node_modules/emoji-regex/text.js create mode 100644 node_modules/escape-string-regexp/index.js create mode 100644 node_modules/escape-string-regexp/license create mode 100644 node_modules/escape-string-regexp/package.json create mode 100644 node_modules/escape-string-regexp/readme.md create mode 100644 node_modules/estree-walker/CHANGELOG.md create mode 100644 node_modules/estree-walker/LICENSE create mode 100644 node_modules/estree-walker/README.md create mode 100644 node_modules/estree-walker/dist/esm/estree-walker.js create mode 100644 node_modules/estree-walker/dist/esm/package.json create mode 100644 node_modules/estree-walker/dist/umd/estree-walker.js create mode 100644 node_modules/estree-walker/package.json create mode 100644 node_modules/estree-walker/src/async.js create mode 100644 node_modules/estree-walker/src/index.js create mode 100644 node_modules/estree-walker/src/package.json create mode 100644 node_modules/estree-walker/src/sync.js create mode 100644 node_modules/estree-walker/src/walker.js create mode 100644 node_modules/estree-walker/types/async.d.ts create mode 100644 node_modules/estree-walker/types/index.d.ts create mode 100644 node_modules/estree-walker/types/sync.d.ts create mode 100644 node_modules/estree-walker/types/tsconfig.tsbuildinfo create mode 100644 node_modules/estree-walker/types/walker.d.ts create mode 100644 node_modules/foreground-child/LICENSE create mode 100644 node_modules/foreground-child/README.md create mode 100644 node_modules/foreground-child/dist/commonjs/all-signals.d.ts create mode 100644 node_modules/foreground-child/dist/commonjs/all-signals.d.ts.map create mode 100644 node_modules/foreground-child/dist/commonjs/all-signals.js create mode 100644 node_modules/foreground-child/dist/commonjs/all-signals.js.map create mode 100644 node_modules/foreground-child/dist/commonjs/index.d.ts create mode 100644 node_modules/foreground-child/dist/commonjs/index.d.ts.map create mode 100644 node_modules/foreground-child/dist/commonjs/index.js create mode 100644 node_modules/foreground-child/dist/commonjs/index.js.map create mode 100644 node_modules/foreground-child/dist/commonjs/package.json create mode 100644 node_modules/foreground-child/dist/commonjs/proxy-signals.d.ts create mode 100644 node_modules/foreground-child/dist/commonjs/proxy-signals.d.ts.map create mode 100644 node_modules/foreground-child/dist/commonjs/proxy-signals.js create mode 100644 node_modules/foreground-child/dist/commonjs/proxy-signals.js.map create mode 100644 node_modules/foreground-child/dist/commonjs/watchdog.d.ts create mode 100644 node_modules/foreground-child/dist/commonjs/watchdog.d.ts.map create mode 100644 node_modules/foreground-child/dist/commonjs/watchdog.js create mode 100644 node_modules/foreground-child/dist/commonjs/watchdog.js.map create mode 100644 node_modules/foreground-child/dist/esm/all-signals.d.ts create mode 100644 node_modules/foreground-child/dist/esm/all-signals.d.ts.map create mode 100644 node_modules/foreground-child/dist/esm/all-signals.js create mode 100644 node_modules/foreground-child/dist/esm/all-signals.js.map create mode 100644 node_modules/foreground-child/dist/esm/index.d.ts create mode 100644 node_modules/foreground-child/dist/esm/index.d.ts.map create mode 100644 node_modules/foreground-child/dist/esm/index.js create mode 100644 node_modules/foreground-child/dist/esm/index.js.map create mode 100644 node_modules/foreground-child/dist/esm/package.json create mode 100644 node_modules/foreground-child/dist/esm/proxy-signals.d.ts create mode 100644 node_modules/foreground-child/dist/esm/proxy-signals.d.ts.map create mode 100644 node_modules/foreground-child/dist/esm/proxy-signals.js create mode 100644 node_modules/foreground-child/dist/esm/proxy-signals.js.map create mode 100644 node_modules/foreground-child/dist/esm/watchdog.d.ts create mode 100644 node_modules/foreground-child/dist/esm/watchdog.d.ts.map create mode 100644 node_modules/foreground-child/dist/esm/watchdog.js create mode 100644 node_modules/foreground-child/dist/esm/watchdog.js.map create mode 100644 node_modules/foreground-child/package.json create mode 100644 node_modules/fsevents/LICENSE create mode 100644 node_modules/fsevents/README.md create mode 100644 node_modules/fsevents/fsevents.d.ts create mode 100644 node_modules/fsevents/fsevents.js create mode 100755 node_modules/fsevents/fsevents.node create mode 100644 node_modules/fsevents/package.json create mode 100644 node_modules/function-bind/.eslintrc create mode 100644 node_modules/function-bind/.github/FUNDING.yml create mode 100644 node_modules/function-bind/.github/SECURITY.md create mode 100644 node_modules/function-bind/.nycrc create mode 100644 node_modules/function-bind/CHANGELOG.md create mode 100644 node_modules/function-bind/LICENSE create mode 100644 node_modules/function-bind/README.md create mode 100644 node_modules/function-bind/implementation.js create mode 100644 node_modules/function-bind/index.js create mode 100644 node_modules/function-bind/package.json create mode 100644 node_modules/function-bind/test/.eslintrc create mode 100644 node_modules/function-bind/test/index.js create mode 100644 node_modules/glob/LICENSE create mode 100644 node_modules/glob/README.md create mode 100644 node_modules/glob/dist/commonjs/glob.d.ts create mode 100644 node_modules/glob/dist/commonjs/glob.d.ts.map create mode 100644 node_modules/glob/dist/commonjs/glob.js create mode 100644 node_modules/glob/dist/commonjs/glob.js.map create mode 100644 node_modules/glob/dist/commonjs/has-magic.d.ts create mode 100644 node_modules/glob/dist/commonjs/has-magic.d.ts.map create mode 100644 node_modules/glob/dist/commonjs/has-magic.js create mode 100644 node_modules/glob/dist/commonjs/has-magic.js.map create mode 100644 node_modules/glob/dist/commonjs/ignore.d.ts create mode 100644 node_modules/glob/dist/commonjs/ignore.d.ts.map create mode 100644 node_modules/glob/dist/commonjs/ignore.js create mode 100644 node_modules/glob/dist/commonjs/ignore.js.map create mode 100644 node_modules/glob/dist/commonjs/index.d.ts create mode 100644 node_modules/glob/dist/commonjs/index.d.ts.map create mode 100644 node_modules/glob/dist/commonjs/index.js create mode 100644 node_modules/glob/dist/commonjs/index.js.map create mode 100644 node_modules/glob/dist/commonjs/package.json create mode 100644 node_modules/glob/dist/commonjs/pattern.d.ts create mode 100644 node_modules/glob/dist/commonjs/pattern.d.ts.map create mode 100644 node_modules/glob/dist/commonjs/pattern.js create mode 100644 node_modules/glob/dist/commonjs/pattern.js.map create mode 100644 node_modules/glob/dist/commonjs/processor.d.ts create mode 100644 node_modules/glob/dist/commonjs/processor.d.ts.map create mode 100644 node_modules/glob/dist/commonjs/processor.js create mode 100644 node_modules/glob/dist/commonjs/processor.js.map create mode 100644 node_modules/glob/dist/commonjs/walker.d.ts create mode 100644 node_modules/glob/dist/commonjs/walker.d.ts.map create mode 100644 node_modules/glob/dist/commonjs/walker.js create mode 100644 node_modules/glob/dist/commonjs/walker.js.map create mode 100644 node_modules/glob/dist/esm/bin.d.mts create mode 100644 node_modules/glob/dist/esm/bin.d.mts.map create mode 100755 node_modules/glob/dist/esm/bin.mjs create mode 100644 node_modules/glob/dist/esm/bin.mjs.map create mode 100644 node_modules/glob/dist/esm/glob.d.ts create mode 100644 node_modules/glob/dist/esm/glob.d.ts.map create mode 100644 node_modules/glob/dist/esm/glob.js create mode 100644 node_modules/glob/dist/esm/glob.js.map create mode 100644 node_modules/glob/dist/esm/has-magic.d.ts create mode 100644 node_modules/glob/dist/esm/has-magic.d.ts.map create mode 100644 node_modules/glob/dist/esm/has-magic.js create mode 100644 node_modules/glob/dist/esm/has-magic.js.map create mode 100644 node_modules/glob/dist/esm/ignore.d.ts create mode 100644 node_modules/glob/dist/esm/ignore.d.ts.map create mode 100644 node_modules/glob/dist/esm/ignore.js create mode 100644 node_modules/glob/dist/esm/ignore.js.map create mode 100644 node_modules/glob/dist/esm/index.d.ts create mode 100644 node_modules/glob/dist/esm/index.d.ts.map create mode 100644 node_modules/glob/dist/esm/index.js create mode 100644 node_modules/glob/dist/esm/index.js.map create mode 100644 node_modules/glob/dist/esm/package.json create mode 100644 node_modules/glob/dist/esm/pattern.d.ts create mode 100644 node_modules/glob/dist/esm/pattern.d.ts.map create mode 100644 node_modules/glob/dist/esm/pattern.js create mode 100644 node_modules/glob/dist/esm/pattern.js.map create mode 100644 node_modules/glob/dist/esm/processor.d.ts create mode 100644 node_modules/glob/dist/esm/processor.d.ts.map create mode 100644 node_modules/glob/dist/esm/processor.js create mode 100644 node_modules/glob/dist/esm/processor.js.map create mode 100644 node_modules/glob/dist/esm/walker.d.ts create mode 100644 node_modules/glob/dist/esm/walker.d.ts.map create mode 100644 node_modules/glob/dist/esm/walker.js create mode 100644 node_modules/glob/dist/esm/walker.js.map create mode 100644 node_modules/glob/package.json create mode 100644 node_modules/has-flag/index.js create mode 100644 node_modules/has-flag/license create mode 100644 node_modules/has-flag/package.json create mode 100644 node_modules/has-flag/readme.md create mode 100644 node_modules/hasown/.eslintrc create mode 100644 node_modules/hasown/.github/FUNDING.yml create mode 100644 node_modules/hasown/.nycrc create mode 100644 node_modules/hasown/CHANGELOG.md create mode 100644 node_modules/hasown/LICENSE create mode 100644 node_modules/hasown/README.md create mode 100644 node_modules/hasown/index.d.ts create mode 100644 node_modules/hasown/index.js create mode 100644 node_modules/hasown/package.json create mode 100644 node_modules/hasown/tsconfig.json create mode 100644 node_modules/is-builtin-module/index.d.ts create mode 100644 node_modules/is-builtin-module/index.js create mode 100644 node_modules/is-builtin-module/license create mode 100644 node_modules/is-builtin-module/package.json create mode 100644 node_modules/is-builtin-module/readme.md create mode 100644 node_modules/is-core-module/.eslintrc create mode 100644 node_modules/is-core-module/.nycrc create mode 100644 node_modules/is-core-module/CHANGELOG.md create mode 100644 node_modules/is-core-module/LICENSE create mode 100644 node_modules/is-core-module/README.md create mode 100644 node_modules/is-core-module/core.json create mode 100644 node_modules/is-core-module/index.js create mode 100644 node_modules/is-core-module/package.json create mode 100644 node_modules/is-core-module/test/index.js create mode 100644 node_modules/is-fullwidth-code-point/index.d.ts create mode 100644 node_modules/is-fullwidth-code-point/index.js create mode 100644 node_modules/is-fullwidth-code-point/license create mode 100644 node_modules/is-fullwidth-code-point/package.json create mode 100644 node_modules/is-fullwidth-code-point/readme.md create mode 100644 node_modules/is-module/.npmignore create mode 100644 node_modules/is-module/README.md create mode 100644 node_modules/is-module/component.json create mode 100644 node_modules/is-module/index.js create mode 100644 node_modules/is-module/package.json create mode 100644 node_modules/is-reference/CHANGELOG.md create mode 100644 node_modules/is-reference/README.md create mode 100644 node_modules/is-reference/dist/is-reference.es.js create mode 100644 node_modules/is-reference/dist/is-reference.js create mode 100644 node_modules/is-reference/dist/types/index.d.ts create mode 100644 node_modules/is-reference/package.json create mode 100644 node_modules/isexe/.npmignore create mode 100644 node_modules/isexe/LICENSE create mode 100644 node_modules/isexe/README.md create mode 100644 node_modules/isexe/index.js create mode 100644 node_modules/isexe/mode.js create mode 100644 node_modules/isexe/package.json create mode 100644 node_modules/isexe/test/basic.js create mode 100644 node_modules/isexe/windows.js create mode 100644 node_modules/jackspeak/LICENSE.md create mode 100644 node_modules/jackspeak/README.md create mode 100644 node_modules/jackspeak/dist/commonjs/index.d.ts create mode 100644 node_modules/jackspeak/dist/commonjs/index.d.ts.map create mode 100644 node_modules/jackspeak/dist/commonjs/index.js create mode 100644 node_modules/jackspeak/dist/commonjs/index.js.map create mode 100644 node_modules/jackspeak/dist/commonjs/package.json create mode 100644 node_modules/jackspeak/dist/commonjs/parse-args-cjs.cjs.map create mode 100644 node_modules/jackspeak/dist/commonjs/parse-args-cjs.d.cts.map create mode 100644 node_modules/jackspeak/dist/commonjs/parse-args.d.ts create mode 100644 node_modules/jackspeak/dist/commonjs/parse-args.js create mode 100644 node_modules/jackspeak/dist/esm/index.d.ts create mode 100644 node_modules/jackspeak/dist/esm/index.d.ts.map create mode 100644 node_modules/jackspeak/dist/esm/index.js create mode 100644 node_modules/jackspeak/dist/esm/index.js.map create mode 100644 node_modules/jackspeak/dist/esm/package.json create mode 100644 node_modules/jackspeak/dist/esm/parse-args.d.ts create mode 100644 node_modules/jackspeak/dist/esm/parse-args.d.ts.map create mode 100644 node_modules/jackspeak/dist/esm/parse-args.js create mode 100644 node_modules/jackspeak/dist/esm/parse-args.js.map create mode 100644 node_modules/jackspeak/package.json create mode 100644 node_modules/js-tokens/CHANGELOG.md create mode 100644 node_modules/js-tokens/LICENSE create mode 100644 node_modules/js-tokens/README.md create mode 100644 node_modules/js-tokens/index.js create mode 100644 node_modules/js-tokens/package.json create mode 100644 node_modules/loose-envify/LICENSE create mode 100644 node_modules/loose-envify/README.md create mode 100755 node_modules/loose-envify/cli.js create mode 100644 node_modules/loose-envify/custom.js create mode 100644 node_modules/loose-envify/index.js create mode 100644 node_modules/loose-envify/loose-envify.js create mode 100644 node_modules/loose-envify/package.json create mode 100644 node_modules/loose-envify/replace.js create mode 100644 node_modules/lru-cache/LICENSE create mode 100644 node_modules/lru-cache/README.md create mode 100644 node_modules/lru-cache/dist/commonjs/index.d.ts create mode 100644 node_modules/lru-cache/dist/commonjs/index.d.ts.map create mode 100644 node_modules/lru-cache/dist/commonjs/index.js create mode 100644 node_modules/lru-cache/dist/commonjs/index.js.map create mode 100644 node_modules/lru-cache/dist/commonjs/index.min.js create mode 100644 node_modules/lru-cache/dist/commonjs/index.min.js.map create mode 100644 node_modules/lru-cache/dist/commonjs/package.json create mode 100644 node_modules/lru-cache/dist/esm/index.d.ts create mode 100644 node_modules/lru-cache/dist/esm/index.d.ts.map create mode 100644 node_modules/lru-cache/dist/esm/index.js create mode 100644 node_modules/lru-cache/dist/esm/index.js.map create mode 100644 node_modules/lru-cache/dist/esm/index.min.js create mode 100644 node_modules/lru-cache/dist/esm/index.min.js.map create mode 100644 node_modules/lru-cache/dist/esm/package.json create mode 100644 node_modules/lru-cache/package.json create mode 100644 node_modules/magic-string/LICENSE create mode 100644 node_modules/magic-string/README.md create mode 100644 node_modules/magic-string/dist/magic-string.cjs.d.ts create mode 100644 node_modules/magic-string/dist/magic-string.cjs.js create mode 100644 node_modules/magic-string/dist/magic-string.cjs.js.map create mode 100644 node_modules/magic-string/dist/magic-string.es.d.mts create mode 100644 node_modules/magic-string/dist/magic-string.es.mjs create mode 100644 node_modules/magic-string/dist/magic-string.es.mjs.map create mode 100644 node_modules/magic-string/dist/magic-string.umd.js create mode 100644 node_modules/magic-string/dist/magic-string.umd.js.map create mode 100644 node_modules/magic-string/package.json create mode 100644 node_modules/minimatch/LICENSE create mode 100644 node_modules/minimatch/README.md create mode 100644 node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts create mode 100644 node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts.map create mode 100644 node_modules/minimatch/dist/commonjs/assert-valid-pattern.js create mode 100644 node_modules/minimatch/dist/commonjs/assert-valid-pattern.js.map create mode 100644 node_modules/minimatch/dist/commonjs/ast.d.ts create mode 100644 node_modules/minimatch/dist/commonjs/ast.d.ts.map create mode 100644 node_modules/minimatch/dist/commonjs/ast.js create mode 100644 node_modules/minimatch/dist/commonjs/ast.js.map create mode 100644 node_modules/minimatch/dist/commonjs/brace-expressions.d.ts create mode 100644 node_modules/minimatch/dist/commonjs/brace-expressions.d.ts.map create mode 100644 node_modules/minimatch/dist/commonjs/brace-expressions.js create mode 100644 node_modules/minimatch/dist/commonjs/brace-expressions.js.map create mode 100644 node_modules/minimatch/dist/commonjs/escape.d.ts create mode 100644 node_modules/minimatch/dist/commonjs/escape.d.ts.map create mode 100644 node_modules/minimatch/dist/commonjs/escape.js create mode 100644 node_modules/minimatch/dist/commonjs/escape.js.map create mode 100644 node_modules/minimatch/dist/commonjs/index.d.ts create mode 100644 node_modules/minimatch/dist/commonjs/index.d.ts.map create mode 100644 node_modules/minimatch/dist/commonjs/index.js create mode 100644 node_modules/minimatch/dist/commonjs/index.js.map create mode 100644 node_modules/minimatch/dist/commonjs/package.json create mode 100644 node_modules/minimatch/dist/commonjs/unescape.d.ts create mode 100644 node_modules/minimatch/dist/commonjs/unescape.d.ts.map create mode 100644 node_modules/minimatch/dist/commonjs/unescape.js create mode 100644 node_modules/minimatch/dist/commonjs/unescape.js.map create mode 100644 node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts create mode 100644 node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts.map create mode 100644 node_modules/minimatch/dist/esm/assert-valid-pattern.js create mode 100644 node_modules/minimatch/dist/esm/assert-valid-pattern.js.map create mode 100644 node_modules/minimatch/dist/esm/ast.d.ts create mode 100644 node_modules/minimatch/dist/esm/ast.d.ts.map create mode 100644 node_modules/minimatch/dist/esm/ast.js create mode 100644 node_modules/minimatch/dist/esm/ast.js.map create mode 100644 node_modules/minimatch/dist/esm/brace-expressions.d.ts create mode 100644 node_modules/minimatch/dist/esm/brace-expressions.d.ts.map create mode 100644 node_modules/minimatch/dist/esm/brace-expressions.js create mode 100644 node_modules/minimatch/dist/esm/brace-expressions.js.map create mode 100644 node_modules/minimatch/dist/esm/escape.d.ts create mode 100644 node_modules/minimatch/dist/esm/escape.d.ts.map create mode 100644 node_modules/minimatch/dist/esm/escape.js create mode 100644 node_modules/minimatch/dist/esm/escape.js.map create mode 100644 node_modules/minimatch/dist/esm/index.d.ts create mode 100644 node_modules/minimatch/dist/esm/index.d.ts.map create mode 100644 node_modules/minimatch/dist/esm/index.js create mode 100644 node_modules/minimatch/dist/esm/index.js.map create mode 100644 node_modules/minimatch/dist/esm/package.json create mode 100644 node_modules/minimatch/dist/esm/unescape.d.ts create mode 100644 node_modules/minimatch/dist/esm/unescape.d.ts.map create mode 100644 node_modules/minimatch/dist/esm/unescape.js create mode 100644 node_modules/minimatch/dist/esm/unescape.js.map create mode 100644 node_modules/minimatch/package.json create mode 100644 node_modules/minipass/LICENSE create mode 100644 node_modules/minipass/README.md create mode 100644 node_modules/minipass/dist/commonjs/index.d.ts create mode 100644 node_modules/minipass/dist/commonjs/index.d.ts.map create mode 100644 node_modules/minipass/dist/commonjs/index.js create mode 100644 node_modules/minipass/dist/commonjs/index.js.map create mode 100644 node_modules/minipass/dist/commonjs/package.json create mode 100644 node_modules/minipass/dist/esm/index.d.ts create mode 100644 node_modules/minipass/dist/esm/index.d.ts.map create mode 100644 node_modules/minipass/dist/esm/index.js create mode 100644 node_modules/minipass/dist/esm/index.js.map create mode 100644 node_modules/minipass/dist/esm/package.json create mode 100644 node_modules/minipass/package.json create mode 100644 node_modules/package-json-from-dist/LICENSE.md create mode 100644 node_modules/package-json-from-dist/README.md create mode 100644 node_modules/package-json-from-dist/dist/commonjs/index.d.ts create mode 100644 node_modules/package-json-from-dist/dist/commonjs/index.d.ts.map create mode 100644 node_modules/package-json-from-dist/dist/commonjs/index.js create mode 100644 node_modules/package-json-from-dist/dist/commonjs/index.js.map create mode 100644 node_modules/package-json-from-dist/dist/commonjs/package.json create mode 100644 node_modules/package-json-from-dist/dist/esm/index.d.ts create mode 100644 node_modules/package-json-from-dist/dist/esm/index.d.ts.map create mode 100644 node_modules/package-json-from-dist/dist/esm/index.js create mode 100644 node_modules/package-json-from-dist/dist/esm/index.js.map create mode 100644 node_modules/package-json-from-dist/dist/esm/package.json create mode 100644 node_modules/package-json-from-dist/package.json create mode 100644 node_modules/path-key/index.d.ts create mode 100644 node_modules/path-key/index.js create mode 100644 node_modules/path-key/license create mode 100644 node_modules/path-key/package.json create mode 100644 node_modules/path-key/readme.md create mode 100644 node_modules/path-parse/LICENSE create mode 100644 node_modules/path-parse/README.md create mode 100644 node_modules/path-parse/index.js create mode 100644 node_modules/path-parse/package.json create mode 100644 node_modules/path-scurry/LICENSE.md create mode 100644 node_modules/path-scurry/README.md create mode 100644 node_modules/path-scurry/dist/commonjs/index.d.ts create mode 100644 node_modules/path-scurry/dist/commonjs/index.d.ts.map create mode 100644 node_modules/path-scurry/dist/commonjs/index.js create mode 100644 node_modules/path-scurry/dist/commonjs/index.js.map create mode 100644 node_modules/path-scurry/dist/commonjs/package.json create mode 100644 node_modules/path-scurry/dist/esm/index.d.ts create mode 100644 node_modules/path-scurry/dist/esm/index.d.ts.map create mode 100644 node_modules/path-scurry/dist/esm/index.js create mode 100644 node_modules/path-scurry/dist/esm/index.js.map create mode 100644 node_modules/path-scurry/dist/esm/package.json create mode 100644 node_modules/path-scurry/package.json create mode 100644 node_modules/picocolors/LICENSE create mode 100644 node_modules/picocolors/README.md create mode 100644 node_modules/picocolors/package.json create mode 100644 node_modules/picocolors/picocolors.browser.js create mode 100644 node_modules/picocolors/picocolors.d.ts create mode 100644 node_modules/picocolors/picocolors.js create mode 100644 node_modules/picocolors/types.ts create mode 100644 node_modules/picomatch/CHANGELOG.md create mode 100644 node_modules/picomatch/LICENSE create mode 100644 node_modules/picomatch/README.md create mode 100644 node_modules/picomatch/index.js create mode 100644 node_modules/picomatch/lib/constants.js create mode 100644 node_modules/picomatch/lib/parse.js create mode 100644 node_modules/picomatch/lib/picomatch.js create mode 100644 node_modules/picomatch/lib/scan.js create mode 100644 node_modules/picomatch/lib/utils.js create mode 100644 node_modules/picomatch/package.json create mode 100644 node_modules/react/LICENSE create mode 100644 node_modules/react/README.md create mode 100644 node_modules/react/cjs/react-jsx-dev-runtime.development.js create mode 100644 node_modules/react/cjs/react-jsx-dev-runtime.production.min.js create mode 100644 node_modules/react/cjs/react-jsx-dev-runtime.profiling.min.js create mode 100644 node_modules/react/cjs/react-jsx-runtime.development.js create mode 100644 node_modules/react/cjs/react-jsx-runtime.production.min.js create mode 100644 node_modules/react/cjs/react-jsx-runtime.profiling.min.js create mode 100644 node_modules/react/cjs/react.development.js create mode 100644 node_modules/react/cjs/react.production.min.js create mode 100644 node_modules/react/cjs/react.shared-subset.development.js create mode 100644 node_modules/react/cjs/react.shared-subset.production.min.js create mode 100644 node_modules/react/index.js create mode 100644 node_modules/react/jsx-dev-runtime.js create mode 100644 node_modules/react/jsx-runtime.js create mode 100644 node_modules/react/package.json create mode 100644 node_modules/react/react.shared-subset.js create mode 100644 node_modules/react/umd/react.development.js create mode 100644 node_modules/react/umd/react.production.min.js create mode 100644 node_modules/react/umd/react.profiling.min.js create mode 100644 node_modules/resolve/.editorconfig create mode 100644 node_modules/resolve/.eslintrc create mode 100644 node_modules/resolve/.github/FUNDING.yml create mode 100644 node_modules/resolve/LICENSE create mode 100644 node_modules/resolve/SECURITY.md create mode 100644 node_modules/resolve/async.js create mode 100755 node_modules/resolve/bin/resolve create mode 100644 node_modules/resolve/example/async.js create mode 100644 node_modules/resolve/example/sync.js create mode 100644 node_modules/resolve/index.js create mode 100644 node_modules/resolve/lib/async.js create mode 100644 node_modules/resolve/lib/caller.js create mode 100644 node_modules/resolve/lib/core.js create mode 100644 node_modules/resolve/lib/core.json create mode 100644 node_modules/resolve/lib/homedir.js create mode 100644 node_modules/resolve/lib/is-core.js create mode 100644 node_modules/resolve/lib/node-modules-paths.js create mode 100644 node_modules/resolve/lib/normalize-options.js create mode 100644 node_modules/resolve/lib/sync.js create mode 100644 node_modules/resolve/package.json create mode 100644 node_modules/resolve/readme.markdown create mode 100644 node_modules/resolve/sync.js create mode 100644 node_modules/resolve/test/core.js create mode 100644 node_modules/resolve/test/dotdot.js create mode 100644 node_modules/resolve/test/dotdot/abc/index.js create mode 100644 node_modules/resolve/test/dotdot/index.js create mode 100644 node_modules/resolve/test/faulty_basedir.js create mode 100644 node_modules/resolve/test/filter.js create mode 100644 node_modules/resolve/test/filter_sync.js create mode 100644 node_modules/resolve/test/home_paths.js create mode 100644 node_modules/resolve/test/home_paths_sync.js create mode 100644 node_modules/resolve/test/mock.js create mode 100644 node_modules/resolve/test/mock_sync.js create mode 100644 node_modules/resolve/test/module_dir.js create mode 100644 node_modules/resolve/test/module_dir/xmodules/aaa/index.js create mode 100644 node_modules/resolve/test/module_dir/ymodules/aaa/index.js create mode 100644 node_modules/resolve/test/module_dir/zmodules/bbb/main.js create mode 100644 node_modules/resolve/test/module_dir/zmodules/bbb/package.json create mode 100644 node_modules/resolve/test/node-modules-paths.js create mode 100644 node_modules/resolve/test/node_path.js create mode 100644 node_modules/resolve/test/node_path/x/aaa/index.js create mode 100644 node_modules/resolve/test/node_path/x/ccc/index.js create mode 100644 node_modules/resolve/test/node_path/y/bbb/index.js create mode 100644 node_modules/resolve/test/node_path/y/ccc/index.js create mode 100644 node_modules/resolve/test/nonstring.js create mode 100644 node_modules/resolve/test/pathfilter.js create mode 100644 node_modules/resolve/test/pathfilter/deep_ref/main.js create mode 100644 node_modules/resolve/test/precedence.js create mode 100644 node_modules/resolve/test/precedence/aaa.js create mode 100644 node_modules/resolve/test/precedence/aaa/index.js create mode 100644 node_modules/resolve/test/precedence/aaa/main.js create mode 100644 node_modules/resolve/test/precedence/bbb.js create mode 100644 node_modules/resolve/test/precedence/bbb/main.js create mode 100644 node_modules/resolve/test/resolver.js create mode 100644 node_modules/resolve/test/resolver/baz/doom.js create mode 100644 node_modules/resolve/test/resolver/baz/package.json create mode 100644 node_modules/resolve/test/resolver/baz/quux.js create mode 100644 node_modules/resolve/test/resolver/browser_field/a.js create mode 100644 node_modules/resolve/test/resolver/browser_field/b.js create mode 100644 node_modules/resolve/test/resolver/browser_field/package.json create mode 100644 node_modules/resolve/test/resolver/cup.coffee create mode 100644 node_modules/resolve/test/resolver/dot_main/index.js create mode 100644 node_modules/resolve/test/resolver/dot_main/package.json create mode 100644 node_modules/resolve/test/resolver/dot_slash_main/index.js create mode 100644 node_modules/resolve/test/resolver/dot_slash_main/package.json create mode 100644 node_modules/resolve/test/resolver/false_main/index.js create mode 100644 node_modules/resolve/test/resolver/false_main/package.json create mode 100644 node_modules/resolve/test/resolver/foo.js create mode 100644 node_modules/resolve/test/resolver/incorrect_main/index.js create mode 100644 node_modules/resolve/test/resolver/incorrect_main/package.json create mode 100644 node_modules/resolve/test/resolver/invalid_main/package.json create mode 100644 node_modules/resolve/test/resolver/mug.coffee create mode 100644 node_modules/resolve/test/resolver/mug.js create mode 100644 node_modules/resolve/test/resolver/multirepo/lerna.json create mode 100644 node_modules/resolve/test/resolver/multirepo/package.json create mode 100644 node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js create mode 100644 node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json create mode 100644 node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js create mode 100644 node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json create mode 100644 node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js create mode 100644 node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json create mode 100644 node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js create mode 100644 node_modules/resolve/test/resolver/other_path/lib/other-lib.js create mode 100644 node_modules/resolve/test/resolver/other_path/root.js create mode 100644 node_modules/resolve/test/resolver/quux/foo/index.js create mode 100644 node_modules/resolve/test/resolver/same_names/foo.js create mode 100644 node_modules/resolve/test/resolver/same_names/foo/index.js create mode 100644 node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js create mode 100644 node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep create mode 100644 node_modules/resolve/test/resolver/symlinked/package/bar.js create mode 100644 node_modules/resolve/test/resolver/symlinked/package/package.json create mode 100644 node_modules/resolve/test/resolver/without_basedir/main.js create mode 100644 node_modules/resolve/test/resolver_sync.js create mode 100644 node_modules/resolve/test/shadowed_core.js create mode 100644 node_modules/resolve/test/shadowed_core/node_modules/util/index.js create mode 100644 node_modules/resolve/test/subdirs.js create mode 100644 node_modules/resolve/test/symlinks.js create mode 100644 node_modules/rollup-plugin-dts/COPYING create mode 100644 node_modules/rollup-plugin-dts/COPYING.LESSER create mode 100644 node_modules/rollup-plugin-dts/README.md create mode 100644 node_modules/rollup-plugin-dts/dist/rollup-plugin-dts.cjs create mode 100644 node_modules/rollup-plugin-dts/dist/rollup-plugin-dts.d.cts create mode 100644 node_modules/rollup-plugin-dts/dist/rollup-plugin-dts.d.mts create mode 100644 node_modules/rollup-plugin-dts/dist/rollup-plugin-dts.mjs create mode 100644 node_modules/rollup-plugin-dts/package.json create mode 100644 node_modules/rollup/LICENSE.md create mode 100644 node_modules/rollup/README.md create mode 100755 node_modules/rollup/dist/bin/rollup create mode 100644 node_modules/rollup/dist/es/getLogFilter.js create mode 100644 node_modules/rollup/dist/es/package.json create mode 100644 node_modules/rollup/dist/es/parseAst.js create mode 100644 node_modules/rollup/dist/es/rollup.js create mode 100644 node_modules/rollup/dist/es/shared/node-entry.js create mode 100644 node_modules/rollup/dist/es/shared/parseAst.js create mode 100644 node_modules/rollup/dist/es/shared/watch.js create mode 100644 node_modules/rollup/dist/getLogFilter.d.ts create mode 100644 node_modules/rollup/dist/getLogFilter.js create mode 100644 node_modules/rollup/dist/loadConfigFile.d.ts create mode 100644 node_modules/rollup/dist/loadConfigFile.js create mode 100644 node_modules/rollup/dist/native.js create mode 100644 node_modules/rollup/dist/parseAst.d.ts create mode 100644 node_modules/rollup/dist/parseAst.js create mode 100644 node_modules/rollup/dist/rollup.d.ts create mode 100644 node_modules/rollup/dist/rollup.js create mode 100644 node_modules/rollup/dist/shared/fsevents-importer.js create mode 100644 node_modules/rollup/dist/shared/index.js create mode 100644 node_modules/rollup/dist/shared/loadConfigFile.js create mode 100644 node_modules/rollup/dist/shared/parseAst.js create mode 100644 node_modules/rollup/dist/shared/rollup.js create mode 100644 node_modules/rollup/dist/shared/watch-cli.js create mode 100644 node_modules/rollup/dist/shared/watch.js create mode 100644 node_modules/rollup/package.json create mode 100644 node_modules/shebang-command/index.js create mode 100644 node_modules/shebang-command/license create mode 100644 node_modules/shebang-command/package.json create mode 100644 node_modules/shebang-command/readme.md create mode 100644 node_modules/shebang-regex/index.d.ts create mode 100644 node_modules/shebang-regex/index.js create mode 100644 node_modules/shebang-regex/license create mode 100644 node_modules/shebang-regex/package.json create mode 100644 node_modules/shebang-regex/readme.md create mode 100644 node_modules/signal-exit/LICENSE.txt create mode 100644 node_modules/signal-exit/README.md create mode 100644 node_modules/signal-exit/dist/cjs/browser.d.ts create mode 100644 node_modules/signal-exit/dist/cjs/browser.d.ts.map create mode 100644 node_modules/signal-exit/dist/cjs/browser.js create mode 100644 node_modules/signal-exit/dist/cjs/browser.js.map create mode 100644 node_modules/signal-exit/dist/cjs/index.d.ts create mode 100644 node_modules/signal-exit/dist/cjs/index.d.ts.map create mode 100644 node_modules/signal-exit/dist/cjs/index.js create mode 100644 node_modules/signal-exit/dist/cjs/index.js.map create mode 100644 node_modules/signal-exit/dist/cjs/package.json create mode 100644 node_modules/signal-exit/dist/cjs/signals.d.ts create mode 100644 node_modules/signal-exit/dist/cjs/signals.d.ts.map create mode 100644 node_modules/signal-exit/dist/cjs/signals.js create mode 100644 node_modules/signal-exit/dist/cjs/signals.js.map create mode 100644 node_modules/signal-exit/dist/mjs/browser.d.ts create mode 100644 node_modules/signal-exit/dist/mjs/browser.d.ts.map create mode 100644 node_modules/signal-exit/dist/mjs/browser.js create mode 100644 node_modules/signal-exit/dist/mjs/browser.js.map create mode 100644 node_modules/signal-exit/dist/mjs/index.d.ts create mode 100644 node_modules/signal-exit/dist/mjs/index.d.ts.map create mode 100644 node_modules/signal-exit/dist/mjs/index.js create mode 100644 node_modules/signal-exit/dist/mjs/index.js.map create mode 100644 node_modules/signal-exit/dist/mjs/package.json create mode 100644 node_modules/signal-exit/dist/mjs/signals.d.ts create mode 100644 node_modules/signal-exit/dist/mjs/signals.d.ts.map create mode 100644 node_modules/signal-exit/dist/mjs/signals.js create mode 100644 node_modules/signal-exit/dist/mjs/signals.js.map create mode 100644 node_modules/signal-exit/package.json create mode 100644 node_modules/string-width-cjs/index.d.ts create mode 100644 node_modules/string-width-cjs/index.js create mode 100644 node_modules/string-width-cjs/license create mode 100644 node_modules/string-width-cjs/node_modules/ansi-regex/index.d.ts create mode 100644 node_modules/string-width-cjs/node_modules/ansi-regex/index.js create mode 100644 node_modules/string-width-cjs/node_modules/ansi-regex/license create mode 100644 node_modules/string-width-cjs/node_modules/ansi-regex/package.json create mode 100644 node_modules/string-width-cjs/node_modules/ansi-regex/readme.md create mode 100644 node_modules/string-width-cjs/node_modules/emoji-regex/LICENSE-MIT.txt create mode 100644 node_modules/string-width-cjs/node_modules/emoji-regex/README.md create mode 100644 node_modules/string-width-cjs/node_modules/emoji-regex/es2015/index.js create mode 100644 node_modules/string-width-cjs/node_modules/emoji-regex/es2015/text.js create mode 100644 node_modules/string-width-cjs/node_modules/emoji-regex/index.d.ts create mode 100644 node_modules/string-width-cjs/node_modules/emoji-regex/index.js create mode 100644 node_modules/string-width-cjs/node_modules/emoji-regex/package.json create mode 100644 node_modules/string-width-cjs/node_modules/emoji-regex/text.js create mode 100644 node_modules/string-width-cjs/node_modules/strip-ansi/index.d.ts create mode 100644 node_modules/string-width-cjs/node_modules/strip-ansi/index.js create mode 100644 node_modules/string-width-cjs/node_modules/strip-ansi/license create mode 100644 node_modules/string-width-cjs/node_modules/strip-ansi/package.json create mode 100644 node_modules/string-width-cjs/node_modules/strip-ansi/readme.md create mode 100644 node_modules/string-width-cjs/package.json create mode 100644 node_modules/string-width-cjs/readme.md create mode 100644 node_modules/string-width/index.d.ts create mode 100644 node_modules/string-width/index.js create mode 100644 node_modules/string-width/license create mode 100644 node_modules/string-width/package.json create mode 100644 node_modules/string-width/readme.md create mode 100644 node_modules/strip-ansi-cjs/index.d.ts create mode 100644 node_modules/strip-ansi-cjs/index.js create mode 100644 node_modules/strip-ansi-cjs/license create mode 100644 node_modules/strip-ansi-cjs/node_modules/ansi-regex/index.d.ts create mode 100644 node_modules/strip-ansi-cjs/node_modules/ansi-regex/index.js create mode 100644 node_modules/strip-ansi-cjs/node_modules/ansi-regex/license create mode 100644 node_modules/strip-ansi-cjs/node_modules/ansi-regex/package.json create mode 100644 node_modules/strip-ansi-cjs/node_modules/ansi-regex/readme.md create mode 100644 node_modules/strip-ansi-cjs/package.json create mode 100644 node_modules/strip-ansi-cjs/readme.md create mode 100644 node_modules/strip-ansi/index.d.ts create mode 100644 node_modules/strip-ansi/index.js create mode 100644 node_modules/strip-ansi/license create mode 100644 node_modules/strip-ansi/package.json create mode 100644 node_modules/strip-ansi/readme.md create mode 100644 node_modules/supports-color/browser.js create mode 100644 node_modules/supports-color/index.js create mode 100644 node_modules/supports-color/license create mode 100644 node_modules/supports-color/package.json create mode 100644 node_modules/supports-color/readme.md create mode 100644 node_modules/supports-preserve-symlinks-flag/.eslintrc create mode 100644 node_modules/supports-preserve-symlinks-flag/.github/FUNDING.yml create mode 100644 node_modules/supports-preserve-symlinks-flag/.nycrc create mode 100644 node_modules/supports-preserve-symlinks-flag/CHANGELOG.md create mode 100644 node_modules/supports-preserve-symlinks-flag/LICENSE create mode 100644 node_modules/supports-preserve-symlinks-flag/README.md create mode 100644 node_modules/supports-preserve-symlinks-flag/browser.js create mode 100644 node_modules/supports-preserve-symlinks-flag/index.js create mode 100644 node_modules/supports-preserve-symlinks-flag/package.json create mode 100644 node_modules/supports-preserve-symlinks-flag/test/index.js create mode 100644 node_modules/typescript/LICENSE.txt create mode 100644 node_modules/typescript/README.md create mode 100644 node_modules/typescript/SECURITY.md create mode 100644 node_modules/typescript/ThirdPartyNoticeText.txt create mode 100755 node_modules/typescript/bin/tsc create mode 100755 node_modules/typescript/bin/tsserver create mode 100644 node_modules/typescript/lib/cancellationToken.js create mode 100644 node_modules/typescript/lib/cs/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/de/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/es/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/fr/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/it/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/ja/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/ko/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/lib.d.ts create mode 100644 node_modules/typescript/lib/lib.decorators.d.ts create mode 100644 node_modules/typescript/lib/lib.decorators.legacy.d.ts create mode 100644 node_modules/typescript/lib/lib.dom.asynciterable.d.ts create mode 100644 node_modules/typescript/lib/lib.dom.d.ts create mode 100644 node_modules/typescript/lib/lib.dom.iterable.d.ts create mode 100644 node_modules/typescript/lib/lib.es2015.collection.d.ts create mode 100644 node_modules/typescript/lib/lib.es2015.core.d.ts create mode 100644 node_modules/typescript/lib/lib.es2015.d.ts create mode 100644 node_modules/typescript/lib/lib.es2015.generator.d.ts create mode 100644 node_modules/typescript/lib/lib.es2015.iterable.d.ts create mode 100644 node_modules/typescript/lib/lib.es2015.promise.d.ts create mode 100644 node_modules/typescript/lib/lib.es2015.proxy.d.ts create mode 100644 node_modules/typescript/lib/lib.es2015.reflect.d.ts create mode 100644 node_modules/typescript/lib/lib.es2015.symbol.d.ts create mode 100644 node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts create mode 100644 node_modules/typescript/lib/lib.es2016.array.include.d.ts create mode 100644 node_modules/typescript/lib/lib.es2016.d.ts create mode 100644 node_modules/typescript/lib/lib.es2016.full.d.ts create mode 100644 node_modules/typescript/lib/lib.es2016.intl.d.ts create mode 100644 node_modules/typescript/lib/lib.es2017.d.ts create mode 100644 node_modules/typescript/lib/lib.es2017.date.d.ts create mode 100644 node_modules/typescript/lib/lib.es2017.full.d.ts create mode 100644 node_modules/typescript/lib/lib.es2017.intl.d.ts create mode 100644 node_modules/typescript/lib/lib.es2017.object.d.ts create mode 100644 node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts create mode 100644 node_modules/typescript/lib/lib.es2017.string.d.ts create mode 100644 node_modules/typescript/lib/lib.es2017.typedarrays.d.ts create mode 100644 node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts create mode 100644 node_modules/typescript/lib/lib.es2018.asynciterable.d.ts create mode 100644 node_modules/typescript/lib/lib.es2018.d.ts create mode 100644 node_modules/typescript/lib/lib.es2018.full.d.ts create mode 100644 node_modules/typescript/lib/lib.es2018.intl.d.ts create mode 100644 node_modules/typescript/lib/lib.es2018.promise.d.ts create mode 100644 node_modules/typescript/lib/lib.es2018.regexp.d.ts create mode 100644 node_modules/typescript/lib/lib.es2019.array.d.ts create mode 100644 node_modules/typescript/lib/lib.es2019.d.ts create mode 100644 node_modules/typescript/lib/lib.es2019.full.d.ts create mode 100644 node_modules/typescript/lib/lib.es2019.intl.d.ts create mode 100644 node_modules/typescript/lib/lib.es2019.object.d.ts create mode 100644 node_modules/typescript/lib/lib.es2019.string.d.ts create mode 100644 node_modules/typescript/lib/lib.es2019.symbol.d.ts create mode 100644 node_modules/typescript/lib/lib.es2020.bigint.d.ts create mode 100644 node_modules/typescript/lib/lib.es2020.d.ts create mode 100644 node_modules/typescript/lib/lib.es2020.date.d.ts create mode 100644 node_modules/typescript/lib/lib.es2020.full.d.ts create mode 100644 node_modules/typescript/lib/lib.es2020.intl.d.ts create mode 100644 node_modules/typescript/lib/lib.es2020.number.d.ts create mode 100644 node_modules/typescript/lib/lib.es2020.promise.d.ts create mode 100644 node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts create mode 100644 node_modules/typescript/lib/lib.es2020.string.d.ts create mode 100644 node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts create mode 100644 node_modules/typescript/lib/lib.es2021.d.ts create mode 100644 node_modules/typescript/lib/lib.es2021.full.d.ts create mode 100644 node_modules/typescript/lib/lib.es2021.intl.d.ts create mode 100644 node_modules/typescript/lib/lib.es2021.promise.d.ts create mode 100644 node_modules/typescript/lib/lib.es2021.string.d.ts create mode 100644 node_modules/typescript/lib/lib.es2021.weakref.d.ts create mode 100644 node_modules/typescript/lib/lib.es2022.array.d.ts create mode 100644 node_modules/typescript/lib/lib.es2022.d.ts create mode 100644 node_modules/typescript/lib/lib.es2022.error.d.ts create mode 100644 node_modules/typescript/lib/lib.es2022.full.d.ts create mode 100644 node_modules/typescript/lib/lib.es2022.intl.d.ts create mode 100644 node_modules/typescript/lib/lib.es2022.object.d.ts create mode 100644 node_modules/typescript/lib/lib.es2022.regexp.d.ts create mode 100644 node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts create mode 100644 node_modules/typescript/lib/lib.es2022.string.d.ts create mode 100644 node_modules/typescript/lib/lib.es2023.array.d.ts create mode 100644 node_modules/typescript/lib/lib.es2023.collection.d.ts create mode 100644 node_modules/typescript/lib/lib.es2023.d.ts create mode 100644 node_modules/typescript/lib/lib.es2023.full.d.ts create mode 100644 node_modules/typescript/lib/lib.es2023.intl.d.ts create mode 100644 node_modules/typescript/lib/lib.es5.d.ts create mode 100644 node_modules/typescript/lib/lib.es6.d.ts create mode 100644 node_modules/typescript/lib/lib.esnext.array.d.ts create mode 100644 node_modules/typescript/lib/lib.esnext.collection.d.ts create mode 100644 node_modules/typescript/lib/lib.esnext.d.ts create mode 100644 node_modules/typescript/lib/lib.esnext.decorators.d.ts create mode 100644 node_modules/typescript/lib/lib.esnext.disposable.d.ts create mode 100644 node_modules/typescript/lib/lib.esnext.full.d.ts create mode 100644 node_modules/typescript/lib/lib.esnext.intl.d.ts create mode 100644 node_modules/typescript/lib/lib.esnext.object.d.ts create mode 100644 node_modules/typescript/lib/lib.esnext.promise.d.ts create mode 100644 node_modules/typescript/lib/lib.esnext.regexp.d.ts create mode 100644 node_modules/typescript/lib/lib.esnext.string.d.ts create mode 100644 node_modules/typescript/lib/lib.scripthost.d.ts create mode 100644 node_modules/typescript/lib/lib.webworker.asynciterable.d.ts create mode 100644 node_modules/typescript/lib/lib.webworker.d.ts create mode 100644 node_modules/typescript/lib/lib.webworker.importscripts.d.ts create mode 100644 node_modules/typescript/lib/lib.webworker.iterable.d.ts create mode 100644 node_modules/typescript/lib/pl/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/ru/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/tr/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/tsc.js create mode 100644 node_modules/typescript/lib/tsserver.js create mode 100644 node_modules/typescript/lib/tsserverlibrary.d.ts create mode 100644 node_modules/typescript/lib/tsserverlibrary.js create mode 100644 node_modules/typescript/lib/typesMap.json create mode 100644 node_modules/typescript/lib/typescript.d.ts create mode 100644 node_modules/typescript/lib/typescript.js create mode 100644 node_modules/typescript/lib/typingsInstaller.js create mode 100644 node_modules/typescript/lib/watchGuard.js create mode 100644 node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json create mode 100644 node_modules/typescript/package.json create mode 100644 node_modules/which/CHANGELOG.md create mode 100644 node_modules/which/LICENSE create mode 100644 node_modules/which/README.md create mode 100755 node_modules/which/bin/node-which create mode 100644 node_modules/which/package.json create mode 100644 node_modules/which/which.js create mode 100755 node_modules/wrap-ansi-cjs/index.js create mode 100644 node_modules/wrap-ansi-cjs/license create mode 100644 node_modules/wrap-ansi-cjs/node_modules/ansi-regex/index.d.ts create mode 100644 node_modules/wrap-ansi-cjs/node_modules/ansi-regex/index.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/ansi-regex/license create mode 100644 node_modules/wrap-ansi-cjs/node_modules/ansi-regex/package.json create mode 100644 node_modules/wrap-ansi-cjs/node_modules/ansi-regex/readme.md create mode 100644 node_modules/wrap-ansi-cjs/node_modules/ansi-styles/index.d.ts create mode 100644 node_modules/wrap-ansi-cjs/node_modules/ansi-styles/index.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/ansi-styles/license create mode 100644 node_modules/wrap-ansi-cjs/node_modules/ansi-styles/package.json create mode 100644 node_modules/wrap-ansi-cjs/node_modules/ansi-styles/readme.md create mode 100644 node_modules/wrap-ansi-cjs/node_modules/color-convert/CHANGELOG.md create mode 100644 node_modules/wrap-ansi-cjs/node_modules/color-convert/LICENSE create mode 100644 node_modules/wrap-ansi-cjs/node_modules/color-convert/README.md create mode 100644 node_modules/wrap-ansi-cjs/node_modules/color-convert/conversions.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/color-convert/index.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/color-convert/package.json create mode 100644 node_modules/wrap-ansi-cjs/node_modules/color-convert/route.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/color-name/LICENSE create mode 100644 node_modules/wrap-ansi-cjs/node_modules/color-name/README.md create mode 100644 node_modules/wrap-ansi-cjs/node_modules/color-name/index.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/color-name/package.json create mode 100644 node_modules/wrap-ansi-cjs/node_modules/emoji-regex/LICENSE-MIT.txt create mode 100644 node_modules/wrap-ansi-cjs/node_modules/emoji-regex/README.md create mode 100644 node_modules/wrap-ansi-cjs/node_modules/emoji-regex/es2015/index.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/emoji-regex/es2015/text.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/emoji-regex/index.d.ts create mode 100644 node_modules/wrap-ansi-cjs/node_modules/emoji-regex/index.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/emoji-regex/package.json create mode 100644 node_modules/wrap-ansi-cjs/node_modules/emoji-regex/text.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/string-width/index.d.ts create mode 100644 node_modules/wrap-ansi-cjs/node_modules/string-width/index.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/string-width/license create mode 100644 node_modules/wrap-ansi-cjs/node_modules/string-width/package.json create mode 100644 node_modules/wrap-ansi-cjs/node_modules/string-width/readme.md create mode 100644 node_modules/wrap-ansi-cjs/node_modules/strip-ansi/index.d.ts create mode 100644 node_modules/wrap-ansi-cjs/node_modules/strip-ansi/index.js create mode 100644 node_modules/wrap-ansi-cjs/node_modules/strip-ansi/license create mode 100644 node_modules/wrap-ansi-cjs/node_modules/strip-ansi/package.json create mode 100644 node_modules/wrap-ansi-cjs/node_modules/strip-ansi/readme.md create mode 100644 node_modules/wrap-ansi-cjs/package.json create mode 100644 node_modules/wrap-ansi-cjs/readme.md create mode 100644 node_modules/wrap-ansi/index.d.ts create mode 100755 node_modules/wrap-ansi/index.js create mode 100644 node_modules/wrap-ansi/license create mode 100644 node_modules/wrap-ansi/node_modules/ansi-styles/index.d.ts create mode 100644 node_modules/wrap-ansi/node_modules/ansi-styles/index.js create mode 100644 node_modules/wrap-ansi/node_modules/ansi-styles/license create mode 100644 node_modules/wrap-ansi/node_modules/ansi-styles/package.json create mode 100644 node_modules/wrap-ansi/node_modules/ansi-styles/readme.md create mode 100644 node_modules/wrap-ansi/package.json create mode 100644 node_modules/wrap-ansi/readme.md create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 rollup.config.mjs create mode 100644 src/components/Button/Button.tsx create mode 100644 src/components/Button/index.ts create mode 100644 src/components/index.ts create mode 100644 src/index.ts create mode 100644 tsconfig.json diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..8b0d72f --- /dev/null +++ b/.prettierrc @@ -0,0 +1,18 @@ +{ + "arrowParens": "avoid", + "bracketSpacing": true, + "endOfLine": "auto", + "htmlWhitespaceSensitivity": "css", + "insertPragma": false, + "jsxBracketSameLine": false, + "jsxSingleQuote": false, + "printWidth": 120, + "proseWrap": "preserve", + "quoteProps": "preserve", + "requirePragma": false, + "semi": true, + "singleQuote": false, + "tabWidth": 4, + "trailingComma": "none", + "useTabs": false +} diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..b1a1bd2 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,7 @@ +module.exports = { + bracketSpacing: false, + jsxBracketSameLine: true, + singleQuote: true, + trailingComma: "all", + arrowParens: "avoid" +}; diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1 @@ +{} diff --git a/dist/cjs/index.js b/dist/cjs/index.js new file mode 100644 index 0000000..691a9f3 --- /dev/null +++ b/dist/cjs/index.js @@ -0,0 +1,2810 @@ +'use strict'; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +var react = {exports: {}}; + +var react_production_min = {}; + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var hasRequiredReact_production_min; + +function requireReact_production_min () { + if (hasRequiredReact_production_min) return react_production_min; + hasRequiredReact_production_min = 1; +var l=Symbol.for("react.element"),n=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),q=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),t=Symbol.for("react.provider"),u=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),z=Symbol.iterator;function A(a){if(null===a||"object"!==typeof a)return null;a=z&&a[z]||a["@@iterator"];return "function"===typeof a?a:null} + var B={isMounted:function(){return !1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B;}E.prototype.isReactComponent={}; + E.prototype.setState=function(a,b){if("object"!==typeof a&&"function"!==typeof a&&null!=a)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,a,b,"setState");};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,"forceUpdate");};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B;}var H=G.prototype=new F; + H.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0}; + function M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=""+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + printWarning('warn', format, args); + } + } + } + function error(format) { + { + { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + printWarning('error', format, args); + } + } + } + + function printWarning(level, format, args) { + // When changing this logic, you might want to also + // update consoleWithStackDev.www.js as well. + { + var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame.getStackAddendum(); + + if (stack !== '') { + format += '%s'; + args = args.concat([stack]); + } // eslint-disable-next-line react-internal/safe-string-coercion + + + var argsWithFormat = args.map(function (item) { + return String(item); + }); // Careful: RN currently depends on this prefix + + argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it + // breaks IE9: https://github.com/facebook/react/issues/13610 + // eslint-disable-next-line react-internal/no-production-logging + + Function.prototype.apply.call(console[level], console, argsWithFormat); + } + } + + var didWarnStateUpdateForUnmountedComponent = {}; + + function warnNoop(publicInstance, callerName) { + { + var _constructor = publicInstance.constructor; + var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass'; + var warningKey = componentName + "." + callerName; + + if (didWarnStateUpdateForUnmountedComponent[warningKey]) { + return; + } + + error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName); + + didWarnStateUpdateForUnmountedComponent[warningKey] = true; + } + } + /** + * This is the abstract API for an update queue. + */ + + + var ReactNoopUpdateQueue = { + /** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function (publicInstance) { + return false; + }, + + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueForceUpdate: function (publicInstance, callback, callerName) { + warnNoop(publicInstance, 'forceUpdate'); + }, + + /** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} completeState Next state. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { + warnNoop(publicInstance, 'replaceState'); + }, + + /** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} partialState Next partial state to be merged with state. + * @param {?function} callback Called after component is updated. + * @param {?string} Name of the calling function in the public API. + * @internal + */ + enqueueSetState: function (publicInstance, partialState, callback, callerName) { + warnNoop(publicInstance, 'setState'); + } + }; + + var assign = Object.assign; + + var emptyObject = {}; + + { + Object.freeze(emptyObject); + } + /** + * Base class helpers for the updating state of a component. + */ + + + function Component(props, context, updater) { + this.props = props; + this.context = context; // If a component has string refs, we will assign a different object later. + + this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the + // renderer. + + this.updater = updater || ReactNoopUpdateQueue; + } + + Component.prototype.isReactComponent = {}; + /** + * Sets a subset of the state. Always use this to mutate + * state. You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * There is no guarantee that calls to `setState` will run synchronously, + * as they may eventually be batched together. You can provide an optional + * callback that will be executed when the call to setState is actually + * completed. + * + * When a function is provided to setState, it will be called at some point in + * the future (not synchronously). It will be called with the up to date + * component arguments (state, props, context). These values can be different + * from this.* because your function may be called after receiveProps but before + * shouldComponentUpdate, and this new state, props, and context will not yet be + * assigned to this. + * + * @param {object|function} partialState Next partial state or function to + * produce next partial state to be merged with current state. + * @param {?function} callback Called after state is updated. + * @final + * @protected + */ + + Component.prototype.setState = function (partialState, callback) { + if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) { + throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.'); + } + + this.updater.enqueueSetState(this, partialState, callback, 'setState'); + }; + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {?function} callback Called after update is complete. + * @final + * @protected + */ + + + Component.prototype.forceUpdate = function (callback) { + this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); + }; + /** + * Deprecated APIs. These APIs used to exist on classic React classes but since + * we would like to deprecate them, we're not going to move them over to this + * modern base class. Instead, we define a getter that warns if it's accessed. + */ + + + { + var deprecatedAPIs = { + isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], + replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] + }; + + var defineDeprecationWarning = function (methodName, info) { + Object.defineProperty(Component.prototype, methodName, { + get: function () { + warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); + + return undefined; + } + }); + }; + + for (var fnName in deprecatedAPIs) { + if (deprecatedAPIs.hasOwnProperty(fnName)) { + defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + } + } + } + + function ComponentDummy() {} + + ComponentDummy.prototype = Component.prototype; + /** + * Convenience component with default shallow equality check for sCU. + */ + + function PureComponent(props, context, updater) { + this.props = props; + this.context = context; // If a component has string refs, we will assign a different object later. + + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + + var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); + pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods. + + assign(pureComponentPrototype, Component.prototype); + pureComponentPrototype.isPureReactComponent = true; + + // an immutable object with a single mutable value + function createRef() { + var refObject = { + current: null + }; + + { + Object.seal(refObject); + } + + return refObject; + } + + var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare + + function isArray(a) { + return isArrayImpl(a); + } + + /* + * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol + * and Temporal.* types. See https://github.com/facebook/react/pull/22064. + * + * The functions in this module will throw an easier-to-understand, + * easier-to-debug exception with a clear errors message message explaining the + * problem. (Instead of a confusing exception thrown inside the implementation + * of the `value` object). + */ + // $FlowFixMe only called in DEV, so void return is not possible. + function typeName(value) { + { + // toStringTag is needed for namespaced types like Temporal.Instant + var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag; + var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object'; + return type; + } + } // $FlowFixMe only called in DEV, so void return is not possible. + + + function willCoercionThrow(value) { + { + try { + testStringCoercion(value); + return false; + } catch (e) { + return true; + } + } + } + + function testStringCoercion(value) { + // If you ended up here by following an exception call stack, here's what's + // happened: you supplied an object or symbol value to React (as a prop, key, + // DOM attribute, CSS property, string ref, etc.) and when React tried to + // coerce it to a string using `'' + value`, an exception was thrown. + // + // The most common types that will cause this exception are `Symbol` instances + // and Temporal objects like `Temporal.Instant`. But any object that has a + // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this + // exception. (Library authors do this to prevent users from using built-in + // numeric operators like `+` or comparison operators like `>=` because custom + // methods are needed to perform accurate arithmetic or comparison.) + // + // To fix the problem, coerce this object or symbol value to a string before + // passing it to React. The most reliable way is usually `String(value)`. + // + // To find which value is throwing, check the browser or debugger console. + // Before this exception was thrown, there should be `console.error` output + // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the + // problem and how that type was used: key, atrribute, input value prop, etc. + // In most cases, this console output also shows the component and its + // ancestor components where the exception happened. + // + // eslint-disable-next-line react-internal/safe-string-coercion + return '' + value; + } + function checkKeyStringCoercion(value) { + { + if (willCoercionThrow(value)) { + error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value)); + + return testStringCoercion(value); // throw (to help callers find troubleshooting comments) + } + } + } + + function getWrappedName(outerType, innerType, wrapperName) { + var displayName = outerType.displayName; + + if (displayName) { + return displayName; + } + + var functionName = innerType.displayName || innerType.name || ''; + return functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName; + } // Keep in sync with react-reconciler/getComponentNameFromFiber + + + function getContextName(type) { + return type.displayName || 'Context'; + } // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead. + + + function getComponentNameFromType(type) { + if (type == null) { + // Host root, text node or just invalid type. + return null; + } + + { + if (typeof type.tag === 'number') { + error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.'); + } + } + + if (typeof type === 'function') { + return type.displayName || type.name || null; + } + + if (typeof type === 'string') { + return type; + } + + switch (type) { + case REACT_FRAGMENT_TYPE: + return 'Fragment'; + + case REACT_PORTAL_TYPE: + return 'Portal'; + + case REACT_PROFILER_TYPE: + return 'Profiler'; + + case REACT_STRICT_MODE_TYPE: + return 'StrictMode'; + + case REACT_SUSPENSE_TYPE: + return 'Suspense'; + + case REACT_SUSPENSE_LIST_TYPE: + return 'SuspenseList'; + + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_CONTEXT_TYPE: + var context = type; + return getContextName(context) + '.Consumer'; + + case REACT_PROVIDER_TYPE: + var provider = type; + return getContextName(provider._context) + '.Provider'; + + case REACT_FORWARD_REF_TYPE: + return getWrappedName(type, type.render, 'ForwardRef'); + + case REACT_MEMO_TYPE: + var outerName = type.displayName || null; + + if (outerName !== null) { + return outerName; + } + + return getComponentNameFromType(type.type) || 'Memo'; + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + return getComponentNameFromType(init(payload)); + } catch (x) { + return null; + } + } + + // eslint-disable-next-line no-fallthrough + } + } + + return null; + } + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true + }; + var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs; + + { + didWarnAboutStringRefs = {}; + } + + function hasValidRef(config) { + { + if (hasOwnProperty.call(config, 'ref')) { + var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; + + if (getter && getter.isReactWarning) { + return false; + } + } + } + + return config.ref !== undefined; + } + + function hasValidKey(config) { + { + if (hasOwnProperty.call(config, 'key')) { + var getter = Object.getOwnPropertyDescriptor(config, 'key').get; + + if (getter && getter.isReactWarning) { + return false; + } + } + } + + return config.key !== undefined; + } + + function defineKeyPropWarningGetter(props, displayName) { + var warnAboutAccessingKey = function () { + { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + + error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); + } + } + }; + + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, 'key', { + get: warnAboutAccessingKey, + configurable: true + }); + } + + function defineRefPropWarningGetter(props, displayName) { + var warnAboutAccessingRef = function () { + { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + + error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); + } + } + }; + + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, 'ref', { + get: warnAboutAccessingRef, + configurable: true + }); + } + + function warnIfStringRefCannotBeAutoConverted(config) { + { + if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) { + var componentName = getComponentNameFromType(ReactCurrentOwner.current.type); + + if (!didWarnAboutStringRefs[componentName]) { + error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref); + + didWarnAboutStringRefs[componentName] = true; + } + } + } + } + /** + * Factory method to create a new React element. This no longer adheres to + * the class pattern, so do not use new to call it. Also, instanceof check + * will not work. Instead test $$typeof field against Symbol.for('react.element') to check + * if something is a React Element. + * + * @param {*} type + * @param {*} props + * @param {*} key + * @param {string|object} ref + * @param {*} owner + * @param {*} self A *temporary* helper to detect places where `this` is + * different from the `owner` when React.createElement is called, so that we + * can warn. We want to get rid of owner and replace string `ref`s with arrow + * functions, and as long as `this` and owner are the same, there will be no + * change in behavior. + * @param {*} source An annotation object (added by a transpiler or otherwise) + * indicating filename, line number, and/or other information. + * @internal + */ + + + var ReactElement = function (type, key, ref, self, source, owner, props) { + var element = { + // This tag allows us to uniquely identify this as a React Element + $$typeof: REACT_ELEMENT_TYPE, + // Built-in properties that belong on the element + type: type, + key: key, + ref: ref, + props: props, + // Record the component responsible for creating this element. + _owner: owner + }; + + { + // The validation flag is currently mutative. We put it on + // an external backing store so that we can freeze the whole object. + // This can be replaced with a WeakMap once they are implemented in + // commonly used development environments. + element._store = {}; // To make comparing ReactElements easier for testing purposes, we make + // the validation flag non-enumerable (where possible, which should + // include every environment we run tests in), so the test framework + // ignores it. + + Object.defineProperty(element._store, 'validated', { + configurable: false, + enumerable: false, + writable: true, + value: false + }); // self and source are DEV only properties. + + Object.defineProperty(element, '_self', { + configurable: false, + enumerable: false, + writable: false, + value: self + }); // Two elements created in two different places should be considered + // equal for testing purposes and therefore we hide it from enumeration. + + Object.defineProperty(element, '_source', { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + + return element; + }; + /** + * Create and return a new ReactElement of the given type. + * See https://reactjs.org/docs/react-api.html#createelement + */ + + function createElement(type, config, children) { + var propName; // Reserved names are extracted + + var props = {}; + var key = null; + var ref = null; + var self = null; + var source = null; + + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + + { + warnIfStringRefCannotBeAutoConverted(config); + } + } + + if (hasValidKey(config)) { + { + checkKeyStringCoercion(config.key); + } + + key = '' + config.key; + } + + self = config.__self === undefined ? null : config.__self; + source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object + + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + } // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + + + var childrenLength = arguments.length - 2; + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + + { + if (Object.freeze) { + Object.freeze(childArray); + } + } + + props.children = childArray; + } // Resolve default props + + + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } + } + } + + { + if (key || ref) { + var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; + + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + } + + return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); + } + function cloneAndReplaceKey(oldElement, newKey) { + var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); + return newElement; + } + /** + * Clone and return a new ReactElement using element as the starting point. + * See https://reactjs.org/docs/react-api.html#cloneelement + */ + + function cloneElement(element, config, children) { + if (element === null || element === undefined) { + throw new Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + "."); + } + + var propName; // Original props are copied + + var props = assign({}, element.props); // Reserved names are extracted + + var key = element.key; + var ref = element.ref; // Self is preserved since the owner is preserved. + + var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a + // transpiler, and the original source is probably a better indicator of the + // true owner. + + var source = element._source; // Owner will be preserved, unless ref is overridden + + var owner = element._owner; + + if (config != null) { + if (hasValidRef(config)) { + // Silently steal the ref from the parent. + ref = config.ref; + owner = ReactCurrentOwner.current; + } + + if (hasValidKey(config)) { + { + checkKeyStringCoercion(config.key); + } + + key = '' + config.key; + } // Remaining properties override existing props + + + var defaultProps; + + if (element.type && element.type.defaultProps) { + defaultProps = element.type.defaultProps; + } + + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (config[propName] === undefined && defaultProps !== undefined) { + // Resolve default props + props[propName] = defaultProps[propName]; + } else { + props[propName] = config[propName]; + } + } + } + } // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + + + var childrenLength = arguments.length - 2; + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + + props.children = childArray; + } + + return ReactElement(element.type, key, ref, self, source, owner, props); + } + /** + * Verifies the object is a ReactElement. + * See https://reactjs.org/docs/react-api.html#isvalidelement + * @param {?object} object + * @return {boolean} True if `object` is a ReactElement. + * @final + */ + + function isValidElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + + var SEPARATOR = '.'; + var SUBSEPARATOR = ':'; + /** + * Escape and wrap key so it is safe to use as a reactid + * + * @param {string} key to be escaped. + * @return {string} the escaped key. + */ + + function escape(key) { + var escapeRegex = /[=:]/g; + var escaperLookup = { + '=': '=0', + ':': '=2' + }; + var escapedString = key.replace(escapeRegex, function (match) { + return escaperLookup[match]; + }); + return '$' + escapedString; + } + /** + * TODO: Test that a single child and an array with one item have the same key + * pattern. + */ + + + var didWarnAboutMaps = false; + var userProvidedKeyEscapeRegex = /\/+/g; + + function escapeUserProvidedKey(text) { + return text.replace(userProvidedKeyEscapeRegex, '$&/'); + } + /** + * Generate a key string that identifies a element within a set. + * + * @param {*} element A element that could contain a manual key. + * @param {number} index Index that is used if a manual key is not provided. + * @return {string} + */ + + + function getElementKey(element, index) { + // Do some typechecking here since we call this blindly. We want to ensure + // that we don't block potential future ES APIs. + if (typeof element === 'object' && element !== null && element.key != null) { + // Explicit key + { + checkKeyStringCoercion(element.key); + } + + return escape('' + element.key); + } // Implicit key determined by the index in the set + + + return index.toString(36); + } + + function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) { + var type = typeof children; + + if (type === 'undefined' || type === 'boolean') { + // All of the above are perceived as null. + children = null; + } + + var invokeCallback = false; + + if (children === null) { + invokeCallback = true; + } else { + switch (type) { + case 'string': + case 'number': + invokeCallback = true; + break; + + case 'object': + switch (children.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_PORTAL_TYPE: + invokeCallback = true; + } + + } + } + + if (invokeCallback) { + var _child = children; + var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array + // so that it's consistent if the number of children grows: + + var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar; + + if (isArray(mappedChild)) { + var escapedChildKey = ''; + + if (childKey != null) { + escapedChildKey = escapeUserProvidedKey(childKey) + '/'; + } + + mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) { + return c; + }); + } else if (mappedChild != null) { + if (isValidElement(mappedChild)) { + { + // The `if` statement here prevents auto-disabling of the safe + // coercion ESLint rule, so we must manually disable it below. + // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key + if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) { + checkKeyStringCoercion(mappedChild.key); + } + } + + mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as + // traverseAllChildren used to do for objects as children + escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key + mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number + // eslint-disable-next-line react-internal/safe-string-coercion + escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey); + } + + array.push(mappedChild); + } + + return 1; + } + + var child; + var nextName; + var subtreeCount = 0; // Count of children found in the current subtree. + + var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; + + if (isArray(children)) { + for (var i = 0; i < children.length; i++) { + child = children[i]; + nextName = nextNamePrefix + getElementKey(child, i); + subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); + } + } else { + var iteratorFn = getIteratorFn(children); + + if (typeof iteratorFn === 'function') { + var iterableChildren = children; + + { + // Warn about using Maps as children + if (iteratorFn === iterableChildren.entries) { + if (!didWarnAboutMaps) { + warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.'); + } + + didWarnAboutMaps = true; + } + } + + var iterator = iteratorFn.call(iterableChildren); + var step; + var ii = 0; + + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getElementKey(child, ii++); + subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); + } + } else if (type === 'object') { + // eslint-disable-next-line react-internal/safe-string-coercion + var childrenString = String(children); + throw new Error("Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + "). " + 'If you meant to render a collection of children, use an array ' + 'instead.'); + } + } + + return subtreeCount; + } + + /** + * Maps children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenmap + * + * The provided mapFunction(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} func The map function. + * @param {*} context Context for mapFunction. + * @return {object} Object containing the ordered map of results. + */ + function mapChildren(children, func, context) { + if (children == null) { + return children; + } + + var result = []; + var count = 0; + mapIntoArray(children, result, '', '', function (child) { + return func.call(context, child, count++); + }); + return result; + } + /** + * Count the number of children that are typically specified as + * `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrencount + * + * @param {?*} children Children tree container. + * @return {number} The number of children. + */ + + + function countChildren(children) { + var n = 0; + mapChildren(children, function () { + n++; // Don't return anything + }); + return n; + } + + /** + * Iterates through children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenforeach + * + * The provided forEachFunc(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} forEachFunc + * @param {*} forEachContext Context for forEachContext. + */ + function forEachChildren(children, forEachFunc, forEachContext) { + mapChildren(children, function () { + forEachFunc.apply(this, arguments); // Don't return anything. + }, forEachContext); + } + /** + * Flatten a children object (typically specified as `props.children`) and + * return an array with appropriately re-keyed children. + * + * See https://reactjs.org/docs/react-api.html#reactchildrentoarray + */ + + + function toArray(children) { + return mapChildren(children, function (child) { + return child; + }) || []; + } + /** + * Returns the first child in a collection of children and verifies that there + * is only one child in the collection. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenonly + * + * The current implementation of this function assumes that a single child gets + * passed without a wrapper, but the purpose of this helper function is to + * abstract away the particular structure of children. + * + * @param {?object} children Child collection structure. + * @return {ReactElement} The first and only `ReactElement` contained in the + * structure. + */ + + + function onlyChild(children) { + if (!isValidElement(children)) { + throw new Error('React.Children.only expected to receive a single React element child.'); + } + + return children; + } + + function createContext(defaultValue) { + // TODO: Second argument used to be an optional `calculateChangedBits` + // function. Warn to reserve for future use? + var context = { + $$typeof: REACT_CONTEXT_TYPE, + // As a workaround to support multiple concurrent renderers, we categorize + // some renderers as primary and others as secondary. We only expect + // there to be two concurrent renderers at most: React Native (primary) and + // Fabric (secondary); React DOM (primary) and React ART (secondary). + // Secondary renderers store their context values on separate fields. + _currentValue: defaultValue, + _currentValue2: defaultValue, + // Used to track how many concurrent renderers this context currently + // supports within in a single renderer. Such as parallel server rendering. + _threadCount: 0, + // These are circular + Provider: null, + Consumer: null, + // Add these to use same hidden class in VM as ServerContext + _defaultValue: null, + _globalName: null + }; + context.Provider = { + $$typeof: REACT_PROVIDER_TYPE, + _context: context + }; + var hasWarnedAboutUsingNestedContextConsumers = false; + var hasWarnedAboutUsingConsumerProvider = false; + var hasWarnedAboutDisplayNameOnConsumer = false; + + { + // A separate object, but proxies back to the original context object for + // backwards compatibility. It has a different $$typeof, so we can properly + // warn for the incorrect usage of Context as a Consumer. + var Consumer = { + $$typeof: REACT_CONTEXT_TYPE, + _context: context + }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here + + Object.defineProperties(Consumer, { + Provider: { + get: function () { + if (!hasWarnedAboutUsingConsumerProvider) { + hasWarnedAboutUsingConsumerProvider = true; + + error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?'); + } + + return context.Provider; + }, + set: function (_Provider) { + context.Provider = _Provider; + } + }, + _currentValue: { + get: function () { + return context._currentValue; + }, + set: function (_currentValue) { + context._currentValue = _currentValue; + } + }, + _currentValue2: { + get: function () { + return context._currentValue2; + }, + set: function (_currentValue2) { + context._currentValue2 = _currentValue2; + } + }, + _threadCount: { + get: function () { + return context._threadCount; + }, + set: function (_threadCount) { + context._threadCount = _threadCount; + } + }, + Consumer: { + get: function () { + if (!hasWarnedAboutUsingNestedContextConsumers) { + hasWarnedAboutUsingNestedContextConsumers = true; + + error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?'); + } + + return context.Consumer; + } + }, + displayName: { + get: function () { + return context.displayName; + }, + set: function (displayName) { + if (!hasWarnedAboutDisplayNameOnConsumer) { + warn('Setting `displayName` on Context.Consumer has no effect. ' + "You should set it directly on the context with Context.displayName = '%s'.", displayName); + + hasWarnedAboutDisplayNameOnConsumer = true; + } + } + } + }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty + + context.Consumer = Consumer; + } + + { + context._currentRenderer = null; + context._currentRenderer2 = null; + } + + return context; + } + + var Uninitialized = -1; + var Pending = 0; + var Resolved = 1; + var Rejected = 2; + + function lazyInitializer(payload) { + if (payload._status === Uninitialized) { + var ctor = payload._result; + var thenable = ctor(); // Transition to the next state. + // This might throw either because it's missing or throws. If so, we treat it + // as still uninitialized and try again next time. Which is the same as what + // happens if the ctor or any wrappers processing the ctor throws. This might + // end up fixing it if the resolution was a concurrency bug. + + thenable.then(function (moduleObject) { + if (payload._status === Pending || payload._status === Uninitialized) { + // Transition to the next state. + var resolved = payload; + resolved._status = Resolved; + resolved._result = moduleObject; + } + }, function (error) { + if (payload._status === Pending || payload._status === Uninitialized) { + // Transition to the next state. + var rejected = payload; + rejected._status = Rejected; + rejected._result = error; + } + }); + + if (payload._status === Uninitialized) { + // In case, we're still uninitialized, then we're waiting for the thenable + // to resolve. Set it as pending in the meantime. + var pending = payload; + pending._status = Pending; + pending._result = thenable; + } + } + + if (payload._status === Resolved) { + var moduleObject = payload._result; + + { + if (moduleObject === undefined) { + error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + // Break up imports to avoid accidentally parsing them as dependencies. + 'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))\n\n" + 'Did you accidentally put curly braces around the import?', moduleObject); + } + } + + { + if (!('default' in moduleObject)) { + error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + // Break up imports to avoid accidentally parsing them as dependencies. + 'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))", moduleObject); + } + } + + return moduleObject.default; + } else { + throw payload._result; + } + } + + function lazy(ctor) { + var payload = { + // We use these fields to store the result. + _status: Uninitialized, + _result: ctor + }; + var lazyType = { + $$typeof: REACT_LAZY_TYPE, + _payload: payload, + _init: lazyInitializer + }; + + { + // In production, this would just set it on the object. + var defaultProps; + var propTypes; // $FlowFixMe + + Object.defineProperties(lazyType, { + defaultProps: { + configurable: true, + get: function () { + return defaultProps; + }, + set: function (newDefaultProps) { + error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); + + defaultProps = newDefaultProps; // Match production behavior more closely: + // $FlowFixMe + + Object.defineProperty(lazyType, 'defaultProps', { + enumerable: true + }); + } + }, + propTypes: { + configurable: true, + get: function () { + return propTypes; + }, + set: function (newPropTypes) { + error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); + + propTypes = newPropTypes; // Match production behavior more closely: + // $FlowFixMe + + Object.defineProperty(lazyType, 'propTypes', { + enumerable: true + }); + } + } + }); + } + + return lazyType; + } + + function forwardRef(render) { + { + if (render != null && render.$$typeof === REACT_MEMO_TYPE) { + error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).'); + } else if (typeof render !== 'function') { + error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render); + } else { + if (render.length !== 0 && render.length !== 2) { + error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.'); + } + } + + if (render != null) { + if (render.defaultProps != null || render.propTypes != null) { + error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?'); + } + } + } + + var elementType = { + $$typeof: REACT_FORWARD_REF_TYPE, + render: render + }; + + { + var ownName; + Object.defineProperty(elementType, 'displayName', { + enumerable: false, + configurable: true, + get: function () { + return ownName; + }, + set: function (name) { + ownName = name; // The inner component shouldn't inherit this display name in most cases, + // because the component may be used elsewhere. + // But it's nice for anonymous functions to inherit the name, + // so that our component-stack generation logic will display their frames. + // An anonymous function generally suggests a pattern like: + // React.forwardRef((props, ref) => {...}); + // This kind of inner function is not used elsewhere so the side effect is okay. + + if (!render.name && !render.displayName) { + render.displayName = name; + } + } + }); + } + + return elementType; + } + + var REACT_MODULE_REFERENCE; + + { + REACT_MODULE_REFERENCE = Symbol.for('react.module.reference'); + } + + function isValidElementType(type) { + if (typeof type === 'string' || typeof type === 'function') { + return true; + } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). + + + if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) { + return true; + } + + if (typeof type === 'object' && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) { + return true; + } + } + + return false; + } + + function memo(type, compare) { + { + if (!isValidElementType(type)) { + error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type); + } + } + + var elementType = { + $$typeof: REACT_MEMO_TYPE, + type: type, + compare: compare === undefined ? null : compare + }; + + { + var ownName; + Object.defineProperty(elementType, 'displayName', { + enumerable: false, + configurable: true, + get: function () { + return ownName; + }, + set: function (name) { + ownName = name; // The inner component shouldn't inherit this display name in most cases, + // because the component may be used elsewhere. + // But it's nice for anonymous functions to inherit the name, + // so that our component-stack generation logic will display their frames. + // An anonymous function generally suggests a pattern like: + // React.memo((props) => {...}); + // This kind of inner function is not used elsewhere so the side effect is okay. + + if (!type.name && !type.displayName) { + type.displayName = name; + } + } + }); + } + + return elementType; + } + + function resolveDispatcher() { + var dispatcher = ReactCurrentDispatcher.current; + + { + if (dispatcher === null) { + error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\n' + '2. You might be breaking the Rules of Hooks\n' + '3. You might have more than one copy of React in the same app\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.'); + } + } // Will result in a null access error if accessed outside render phase. We + // intentionally don't throw our own error because this is in a hot path. + // Also helps ensure this is inlined. + + + return dispatcher; + } + function useContext(Context) { + var dispatcher = resolveDispatcher(); + + { + // TODO: add a more generic warning for invalid values. + if (Context._context !== undefined) { + var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs + // and nobody should be using this in existing code. + + if (realContext.Consumer === Context) { + error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?'); + } else if (realContext.Provider === Context) { + error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?'); + } + } + } + + return dispatcher.useContext(Context); + } + function useState(initialState) { + var dispatcher = resolveDispatcher(); + return dispatcher.useState(initialState); + } + function useReducer(reducer, initialArg, init) { + var dispatcher = resolveDispatcher(); + return dispatcher.useReducer(reducer, initialArg, init); + } + function useRef(initialValue) { + var dispatcher = resolveDispatcher(); + return dispatcher.useRef(initialValue); + } + function useEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useEffect(create, deps); + } + function useInsertionEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useInsertionEffect(create, deps); + } + function useLayoutEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useLayoutEffect(create, deps); + } + function useCallback(callback, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useCallback(callback, deps); + } + function useMemo(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useMemo(create, deps); + } + function useImperativeHandle(ref, create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useImperativeHandle(ref, create, deps); + } + function useDebugValue(value, formatterFn) { + { + var dispatcher = resolveDispatcher(); + return dispatcher.useDebugValue(value, formatterFn); + } + } + function useTransition() { + var dispatcher = resolveDispatcher(); + return dispatcher.useTransition(); + } + function useDeferredValue(value) { + var dispatcher = resolveDispatcher(); + return dispatcher.useDeferredValue(value); + } + function useId() { + var dispatcher = resolveDispatcher(); + return dispatcher.useId(); + } + function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) { + var dispatcher = resolveDispatcher(); + return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot); + } + + // Helpers to patch console.logs to avoid logging during side-effect free + // replaying on render function. This currently only patches the object + // lazily which won't cover if the log function was extracted eagerly. + // We could also eagerly patch the method. + var disabledDepth = 0; + var prevLog; + var prevInfo; + var prevWarn; + var prevError; + var prevGroup; + var prevGroupCollapsed; + var prevGroupEnd; + + function disabledLog() {} + + disabledLog.__reactDisabledLog = true; + function disableLogs() { + { + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + prevLog = console.log; + prevInfo = console.info; + prevWarn = console.warn; + prevError = console.error; + prevGroup = console.group; + prevGroupCollapsed = console.groupCollapsed; + prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099 + + var props = { + configurable: true, + enumerable: true, + value: disabledLog, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + info: props, + log: props, + warn: props, + error: props, + group: props, + groupCollapsed: props, + groupEnd: props + }); + /* eslint-enable react-internal/no-production-logging */ + } + + disabledDepth++; + } + } + function reenableLogs() { + { + disabledDepth--; + + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + var props = { + configurable: true, + enumerable: true, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + log: assign({}, props, { + value: prevLog + }), + info: assign({}, props, { + value: prevInfo + }), + warn: assign({}, props, { + value: prevWarn + }), + error: assign({}, props, { + value: prevError + }), + group: assign({}, props, { + value: prevGroup + }), + groupCollapsed: assign({}, props, { + value: prevGroupCollapsed + }), + groupEnd: assign({}, props, { + value: prevGroupEnd + }) + }); + /* eslint-enable react-internal/no-production-logging */ + } + + if (disabledDepth < 0) { + error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.'); + } + } + } + + var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher; + var prefix; + function describeBuiltInComponentFrame(name, source, ownerFn) { + { + if (prefix === undefined) { + // Extract the VM specific prefix used by each line. + try { + throw Error(); + } catch (x) { + var match = x.stack.trim().match(/\n( *(at )?)/); + prefix = match && match[1] || ''; + } + } // We use the prefix to ensure our stacks line up with native stack frames. + + + return '\n' + prefix + name; + } + } + var reentry = false; + var componentFrameCache; + + { + var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; + componentFrameCache = new PossiblyWeakMap(); + } + + function describeNativeComponentFrame(fn, construct) { + // If something asked for a stack inside a fake render, it should get ignored. + if ( !fn || reentry) { + return ''; + } + + { + var frame = componentFrameCache.get(fn); + + if (frame !== undefined) { + return frame; + } + } + + var control; + reentry = true; + var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined. + + Error.prepareStackTrace = undefined; + var previousDispatcher; + + { + previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function + // for warnings. + + ReactCurrentDispatcher$1.current = null; + disableLogs(); + } + + try { + // This should throw. + if (construct) { + // Something should be setting the props in the constructor. + var Fake = function () { + throw Error(); + }; // $FlowFixMe + + + Object.defineProperty(Fake.prototype, 'props', { + set: function () { + // We use a throwing setter instead of frozen or non-writable props + // because that won't throw in a non-strict mode function. + throw Error(); + } + }); + + if (typeof Reflect === 'object' && Reflect.construct) { + // We construct a different control for this case to include any extra + // frames added by the construct call. + try { + Reflect.construct(Fake, []); + } catch (x) { + control = x; + } + + Reflect.construct(fn, [], Fake); + } else { + try { + Fake.call(); + } catch (x) { + control = x; + } + + fn.call(Fake.prototype); + } + } else { + try { + throw Error(); + } catch (x) { + control = x; + } + + fn(); + } + } catch (sample) { + // This is inlined manually because closure doesn't do it for us. + if (sample && control && typeof sample.stack === 'string') { + // This extracts the first frame from the sample that isn't also in the control. + // Skipping one frame that we assume is the frame that calls the two. + var sampleLines = sample.stack.split('\n'); + var controlLines = control.stack.split('\n'); + var s = sampleLines.length - 1; + var c = controlLines.length - 1; + + while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) { + // We expect at least one stack frame to be shared. + // Typically this will be the root most one. However, stack frames may be + // cut off due to maximum stack limits. In this case, one maybe cut off + // earlier than the other. We assume that the sample is longer or the same + // and there for cut off earlier. So we should find the root most frame in + // the sample somewhere in the control. + c--; + } + + for (; s >= 1 && c >= 0; s--, c--) { + // Next we find the first one that isn't the same which should be the + // frame that called our sample function and the control. + if (sampleLines[s] !== controlLines[c]) { + // In V8, the first line is describing the message but other VMs don't. + // If we're about to return the first line, and the control is also on the same + // line, that's a pretty good indicator that our sample threw at same line as + // the control. I.e. before we entered the sample frame. So we ignore this result. + // This can happen if you passed a class to function component, or non-function. + if (s !== 1 || c !== 1) { + do { + s--; + c--; // We may still have similar intermediate frames from the construct call. + // The next one that isn't the same should be our match though. + + if (c < 0 || sampleLines[s] !== controlLines[c]) { + // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. + var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled "" + // but we have a user-provided "displayName" + // splice it in to make the stack more readable. + + + if (fn.displayName && _frame.includes('')) { + _frame = _frame.replace('', fn.displayName); + } + + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, _frame); + } + } // Return the line we found. + + + return _frame; + } + } while (s >= 1 && c >= 0); + } + + break; + } + } + } + } finally { + reentry = false; + + { + ReactCurrentDispatcher$1.current = previousDispatcher; + reenableLogs(); + } + + Error.prepareStackTrace = previousPrepareStackTrace; + } // Fallback to just using the name if we couldn't make it throw. + + + var name = fn ? fn.displayName || fn.name : ''; + var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ''; + + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, syntheticFrame); + } + } + + return syntheticFrame; + } + function describeFunctionComponentFrame(fn, source, ownerFn) { + { + return describeNativeComponentFrame(fn, false); + } + } + + function shouldConstruct(Component) { + var prototype = Component.prototype; + return !!(prototype && prototype.isReactComponent); + } + + function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { + + if (type == null) { + return ''; + } + + if (typeof type === 'function') { + { + return describeNativeComponentFrame(type, shouldConstruct(type)); + } + } + + if (typeof type === 'string') { + return describeBuiltInComponentFrame(type); + } + + switch (type) { + case REACT_SUSPENSE_TYPE: + return describeBuiltInComponentFrame('Suspense'); + + case REACT_SUSPENSE_LIST_TYPE: + return describeBuiltInComponentFrame('SuspenseList'); + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_FORWARD_REF_TYPE: + return describeFunctionComponentFrame(type.render); + + case REACT_MEMO_TYPE: + // Memo may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + // Lazy may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); + } catch (x) {} + } + } + } + + return ''; + } + + var loggedTypeFailures = {}; + var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; + + function setCurrentlyValidatingElement(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + ReactDebugCurrentFrame$1.setExtraStackFrame(stack); + } else { + ReactDebugCurrentFrame$1.setExtraStackFrame(null); + } + } + } + + function checkPropTypes(typeSpecs, values, location, componentName, element) { + { + // $FlowFixMe This is okay but Flow doesn't know it. + var has = Function.call.bind(hasOwnProperty); + + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + // eslint-disable-next-line react-internal/prod-error-codes + var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'); + err.name = 'Invariant Violation'; + throw err; + } + + error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'); + } catch (ex) { + error$1 = ex; + } + + if (error$1 && !(error$1 instanceof Error)) { + setCurrentlyValidatingElement(element); + + error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1); + + setCurrentlyValidatingElement(null); + } + + if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error$1.message] = true; + setCurrentlyValidatingElement(element); + + error('Failed %s type: %s', location, error$1.message); + + setCurrentlyValidatingElement(null); + } + } + } + } + } + + function setCurrentlyValidatingElement$1(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + setExtraStackFrame(stack); + } else { + setExtraStackFrame(null); + } + } + } + + var propTypesMisspellWarningShown; + + { + propTypesMisspellWarningShown = false; + } + + function getDeclarationErrorAddendum() { + if (ReactCurrentOwner.current) { + var name = getComponentNameFromType(ReactCurrentOwner.current.type); + + if (name) { + return '\n\nCheck the render method of `' + name + '`.'; + } + } + + return ''; + } + + function getSourceInfoErrorAddendum(source) { + if (source !== undefined) { + var fileName = source.fileName.replace(/^.*[\\\/]/, ''); + var lineNumber = source.lineNumber; + return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; + } + + return ''; + } + + function getSourceInfoErrorAddendumForProps(elementProps) { + if (elementProps !== null && elementProps !== undefined) { + return getSourceInfoErrorAddendum(elementProps.__source); + } + + return ''; + } + /** + * Warn if there's no key explicitly set on dynamic arrays of children or + * object keys are not valid. This allows us to keep track of children between + * updates. + */ + + + var ownerHasKeyUseWarning = {}; + + function getCurrentComponentErrorInfo(parentType) { + var info = getDeclarationErrorAddendum(); + + if (!info) { + var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; + + if (parentName) { + info = "\n\nCheck the top-level render call using <" + parentName + ">."; + } + } + + return info; + } + /** + * Warn if the element doesn't have an explicit key assigned to it. + * This element is in an array. The array could grow and shrink or be + * reordered. All children that haven't already been validated are required to + * have a "key" property assigned to it. Error statuses are cached so a warning + * will only be shown once. + * + * @internal + * @param {ReactElement} element Element that requires a key. + * @param {*} parentType element's parent's type. + */ + + + function validateExplicitKey(element, parentType) { + if (!element._store || element._store.validated || element.key != null) { + return; + } + + element._store.validated = true; + var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); + + if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { + return; + } + + ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a + // property, it may be the creator of the child that's responsible for + // assigning it a key. + + var childOwner = ''; + + if (element && element._owner && element._owner !== ReactCurrentOwner.current) { + // Give the component that originally created this child. + childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + "."; + } + + { + setCurrentlyValidatingElement$1(element); + + error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner); + + setCurrentlyValidatingElement$1(null); + } + } + /** + * Ensure that every element either is passed in a static location, in an + * array with an explicit keys property defined, or in an object literal + * with valid key property. + * + * @internal + * @param {ReactNode} node Statically passed child of any type. + * @param {*} parentType node's parent's type. + */ + + + function validateChildKeys(node, parentType) { + if (typeof node !== 'object') { + return; + } + + if (isArray(node)) { + for (var i = 0; i < node.length; i++) { + var child = node[i]; + + if (isValidElement(child)) { + validateExplicitKey(child, parentType); + } + } + } else if (isValidElement(node)) { + // This element was passed in a valid location. + if (node._store) { + node._store.validated = true; + } + } else if (node) { + var iteratorFn = getIteratorFn(node); + + if (typeof iteratorFn === 'function') { + // Entry iterators used to provide implicit keys, + // but now we print a separate warning for them later. + if (iteratorFn !== node.entries) { + var iterator = iteratorFn.call(node); + var step; + + while (!(step = iterator.next()).done) { + if (isValidElement(step.value)) { + validateExplicitKey(step.value, parentType); + } + } + } + } + } + } + /** + * Given an element, validate that its props follow the propTypes definition, + * provided by the type. + * + * @param {ReactElement} element + */ + + + function validatePropTypes(element) { + { + var type = element.type; + + if (type === null || type === undefined || typeof type === 'string') { + return; + } + + var propTypes; + + if (typeof type === 'function') { + propTypes = type.propTypes; + } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here. + // Inner props are checked in the reconciler. + type.$$typeof === REACT_MEMO_TYPE)) { + propTypes = type.propTypes; + } else { + return; + } + + if (propTypes) { + // Intentionally inside to avoid triggering lazy initializers: + var name = getComponentNameFromType(type); + checkPropTypes(propTypes, element.props, 'prop', name, element); + } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) { + propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers: + + var _name = getComponentNameFromType(type); + + error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown'); + } + + if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) { + error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); + } + } + } + /** + * Given a fragment, validate that it can only be provided with fragment props + * @param {ReactElement} fragment + */ + + + function validateFragmentProps(fragment) { + { + var keys = Object.keys(fragment.props); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + + if (key !== 'children' && key !== 'key') { + setCurrentlyValidatingElement$1(fragment); + + error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key); + + setCurrentlyValidatingElement$1(null); + break; + } + } + + if (fragment.ref !== null) { + setCurrentlyValidatingElement$1(fragment); + + error('Invalid attribute `ref` supplied to `React.Fragment`.'); + + setCurrentlyValidatingElement$1(null); + } + } + } + function createElementWithValidation(type, props, children) { + var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to + // succeed and there will likely be errors in render. + + if (!validType) { + var info = ''; + + if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { + info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports."; + } + + var sourceInfo = getSourceInfoErrorAddendumForProps(props); + + if (sourceInfo) { + info += sourceInfo; + } else { + info += getDeclarationErrorAddendum(); + } + + var typeString; + + if (type === null) { + typeString = 'null'; + } else if (isArray(type)) { + typeString = 'array'; + } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) { + typeString = "<" + (getComponentNameFromType(type.type) || 'Unknown') + " />"; + info = ' Did you accidentally export a JSX literal instead of a component?'; + } else { + typeString = typeof type; + } + + { + error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info); + } + } + + var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used. + // TODO: Drop this when these are no longer allowed as the type argument. + + if (element == null) { + return element; + } // Skip key warning if the type isn't valid since our key validation logic + // doesn't expect a non-string/function type and can throw confusing errors. + // We don't want exception behavior to differ between dev and prod. + // (Rendering will throw with a helpful message and as soon as the type is + // fixed, the key warnings will appear.) + + + if (validType) { + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], type); + } + } + + if (type === REACT_FRAGMENT_TYPE) { + validateFragmentProps(element); + } else { + validatePropTypes(element); + } + + return element; + } + var didWarnAboutDeprecatedCreateFactory = false; + function createFactoryWithValidation(type) { + var validatedFactory = createElementWithValidation.bind(null, type); + validatedFactory.type = type; + + { + if (!didWarnAboutDeprecatedCreateFactory) { + didWarnAboutDeprecatedCreateFactory = true; + + warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.'); + } // Legacy hook: remove it + + + Object.defineProperty(validatedFactory, 'type', { + enumerable: false, + get: function () { + warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); + + Object.defineProperty(this, 'type', { + value: type + }); + return type; + } + }); + } + + return validatedFactory; + } + function cloneElementWithValidation(element, props, children) { + var newElement = cloneElement.apply(this, arguments); + + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], newElement.type); + } + + validatePropTypes(newElement); + return newElement; + } + + function startTransition(scope, options) { + var prevTransition = ReactCurrentBatchConfig.transition; + ReactCurrentBatchConfig.transition = {}; + var currentTransition = ReactCurrentBatchConfig.transition; + + { + ReactCurrentBatchConfig.transition._updatedFibers = new Set(); + } + + try { + scope(); + } finally { + ReactCurrentBatchConfig.transition = prevTransition; + + { + if (prevTransition === null && currentTransition._updatedFibers) { + var updatedFibersCount = currentTransition._updatedFibers.size; + + if (updatedFibersCount > 10) { + warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.'); + } + + currentTransition._updatedFibers.clear(); + } + } + } + } + + var didWarnAboutMessageChannel = false; + var enqueueTaskImpl = null; + function enqueueTask(task) { + if (enqueueTaskImpl === null) { + try { + // read require off the module object to get around the bundlers. + // we don't want them to detect a require and bundle a Node polyfill. + var requireString = ('require' + Math.random()).slice(0, 7); + var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's + // version of setImmediate, bypassing fake timers if any. + + enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate; + } catch (_err) { + // we're in a browser + // we can't use regular timers because they may still be faked + // so we try MessageChannel+postMessage instead + enqueueTaskImpl = function (callback) { + { + if (didWarnAboutMessageChannel === false) { + didWarnAboutMessageChannel = true; + + if (typeof MessageChannel === 'undefined') { + error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.'); + } + } + } + + var channel = new MessageChannel(); + channel.port1.onmessage = callback; + channel.port2.postMessage(undefined); + }; + } + } + + return enqueueTaskImpl(task); + } + + var actScopeDepth = 0; + var didWarnNoAwaitAct = false; + function act(callback) { + { + // `act` calls can be nested, so we track the depth. This represents the + // number of `act` scopes on the stack. + var prevActScopeDepth = actScopeDepth; + actScopeDepth++; + + if (ReactCurrentActQueue.current === null) { + // This is the outermost `act` scope. Initialize the queue. The reconciler + // will detect the queue and use it instead of Scheduler. + ReactCurrentActQueue.current = []; + } + + var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy; + var result; + + try { + // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only + // set to `true` while the given callback is executed, not for updates + // triggered during an async event, because this is how the legacy + // implementation of `act` behaved. + ReactCurrentActQueue.isBatchingLegacy = true; + result = callback(); // Replicate behavior of original `act` implementation in legacy mode, + // which flushed updates immediately after the scope function exits, even + // if it's an async function. + + if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) { + var queue = ReactCurrentActQueue.current; + + if (queue !== null) { + ReactCurrentActQueue.didScheduleLegacyUpdate = false; + flushActQueue(queue); + } + } + } catch (error) { + popActScope(prevActScopeDepth); + throw error; + } finally { + ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy; + } + + if (result !== null && typeof result === 'object' && typeof result.then === 'function') { + var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait + // for it to resolve before exiting the current scope. + + var wasAwaited = false; + var thenable = { + then: function (resolve, reject) { + wasAwaited = true; + thenableResult.then(function (returnValue) { + popActScope(prevActScopeDepth); + + if (actScopeDepth === 0) { + // We've exited the outermost act scope. Recursively flush the + // queue until there's no remaining work. + recursivelyFlushAsyncActWork(returnValue, resolve, reject); + } else { + resolve(returnValue); + } + }, function (error) { + // The callback threw an error. + popActScope(prevActScopeDepth); + reject(error); + }); + } + }; + + { + if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') { + // eslint-disable-next-line no-undef + Promise.resolve().then(function () {}).then(function () { + if (!wasAwaited) { + didWarnNoAwaitAct = true; + + error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);'); + } + }); + } + } + + return thenable; + } else { + var returnValue = result; // The callback is not an async function. Exit the current scope + // immediately, without awaiting. + + popActScope(prevActScopeDepth); + + if (actScopeDepth === 0) { + // Exiting the outermost act scope. Flush the queue. + var _queue = ReactCurrentActQueue.current; + + if (_queue !== null) { + flushActQueue(_queue); + ReactCurrentActQueue.current = null; + } // Return a thenable. If the user awaits it, we'll flush again in + // case additional work was scheduled by a microtask. + + + var _thenable = { + then: function (resolve, reject) { + // Confirm we haven't re-entered another `act` scope, in case + // the user does something weird like await the thenable + // multiple times. + if (ReactCurrentActQueue.current === null) { + // Recursively flush the queue until there's no remaining work. + ReactCurrentActQueue.current = []; + recursivelyFlushAsyncActWork(returnValue, resolve, reject); + } else { + resolve(returnValue); + } + } + }; + return _thenable; + } else { + // Since we're inside a nested `act` scope, the returned thenable + // immediately resolves. The outer scope will flush the queue. + var _thenable2 = { + then: function (resolve, reject) { + resolve(returnValue); + } + }; + return _thenable2; + } + } + } + } + + function popActScope(prevActScopeDepth) { + { + if (prevActScopeDepth !== actScopeDepth - 1) { + error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. '); + } + + actScopeDepth = prevActScopeDepth; + } + } + + function recursivelyFlushAsyncActWork(returnValue, resolve, reject) { + { + var queue = ReactCurrentActQueue.current; + + if (queue !== null) { + try { + flushActQueue(queue); + enqueueTask(function () { + if (queue.length === 0) { + // No additional work was scheduled. Finish. + ReactCurrentActQueue.current = null; + resolve(returnValue); + } else { + // Keep flushing work until there's none left. + recursivelyFlushAsyncActWork(returnValue, resolve, reject); + } + }); + } catch (error) { + reject(error); + } + } else { + resolve(returnValue); + } + } + } + + var isFlushing = false; + + function flushActQueue(queue) { + { + if (!isFlushing) { + // Prevent re-entrance. + isFlushing = true; + var i = 0; + + try { + for (; i < queue.length; i++) { + var callback = queue[i]; + + do { + callback = callback(true); + } while (callback !== null); + } + + queue.length = 0; + } catch (error) { + // If something throws, leave the remaining callbacks on the queue. + queue = queue.slice(i + 1); + throw error; + } finally { + isFlushing = false; + } + } + } + } + + var createElement$1 = createElementWithValidation ; + var cloneElement$1 = cloneElementWithValidation ; + var createFactory = createFactoryWithValidation ; + var Children = { + map: mapChildren, + forEach: forEachChildren, + count: countChildren, + toArray: toArray, + only: onlyChild + }; + + exports.Children = Children; + exports.Component = Component; + exports.Fragment = REACT_FRAGMENT_TYPE; + exports.Profiler = REACT_PROFILER_TYPE; + exports.PureComponent = PureComponent; + exports.StrictMode = REACT_STRICT_MODE_TYPE; + exports.Suspense = REACT_SUSPENSE_TYPE; + exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals; + exports.act = act; + exports.cloneElement = cloneElement$1; + exports.createContext = createContext; + exports.createElement = createElement$1; + exports.createFactory = createFactory; + exports.createRef = createRef; + exports.forwardRef = forwardRef; + exports.isValidElement = isValidElement; + exports.lazy = lazy; + exports.memo = memo; + exports.startTransition = startTransition; + exports.unstable_act = act; + exports.useCallback = useCallback; + exports.useContext = useContext; + exports.useDebugValue = useDebugValue; + exports.useDeferredValue = useDeferredValue; + exports.useEffect = useEffect; + exports.useId = useId; + exports.useImperativeHandle = useImperativeHandle; + exports.useInsertionEffect = useInsertionEffect; + exports.useLayoutEffect = useLayoutEffect; + exports.useMemo = useMemo; + exports.useReducer = useReducer; + exports.useRef = useRef; + exports.useState = useState; + exports.useSyncExternalStore = useSyncExternalStore; + exports.useTransition = useTransition; + exports.version = ReactVersion; + /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ + if ( + typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && + typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === + 'function' + ) { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); + } + + })(); + } + } (react_development, react_development.exports)); + return react_development.exports; +} + +if (process.env.NODE_ENV === 'production') { + react.exports = requireReact_production_min(); +} else { + react.exports = requireReact_development(); +} + +var reactExports = react.exports; +var React = /*@__PURE__*/getDefaultExportFromCjs(reactExports); + +var Button = function (props) { + return React.createElement("button", null, props.label); +}; + +exports.Button = Button; +//# sourceMappingURL=index.js.map diff --git a/dist/cjs/index.js.map b/dist/cjs/index.js.map new file mode 100644 index 0000000..c7aea7c --- /dev/null +++ b/dist/cjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../node_modules/react/cjs/react.production.min.js","../../node_modules/react/cjs/react.development.js","../../node_modules/react/index.js","../../src/components/Button/Button.tsx"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n }\n}\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + \".\" + callerName;\n\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n\n error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n return undefined;\n }\n });\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n\n {\n Object.seal(refObject);\n }\n\n return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n\n var propName; // Original props are copied\n\n var props = assign({}, element.props); // Reserved names are extracted\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n\n }\n }\n\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n if (isArray(mappedChild)) {\n var escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n // eslint-disable-next-line react-internal/safe-string-coercion\n escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var iterableChildren = children;\n\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n var count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n var n = 0;\n mapChildren(children, function () {\n n++; // Don't return anything\n });\n return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, function (child) {\n return child;\n }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('React.Children.only expected to receive a single React element child.');\n }\n\n return children;\n}\n\nfunction createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null,\n // Add these to use same hidden class in VM as ServerContext\n _defaultValue: null,\n _globalName: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context\n }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Consumer;\n }\n },\n displayName: {\n get: function () {\n return context.displayName;\n },\n set: function (displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n\n thenable.then(function (moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function (error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n\n {\n if (moduleObject === undefined) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n }\n }\n\n {\n if (!('default' in moduleObject)) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe\n\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function () {\n return defaultProps;\n },\n set: function (newDefaultProps) {\n error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'defaultProps', {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function () {\n return propTypes;\n },\n set: function (newPropTypes) {\n error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'propTypes', {\n enumerable: true\n });\n }\n }\n });\n }\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n }\n }\n\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n }\n }\n }\n\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher.current;\n\n {\n if (dispatcher === null) {\n error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n }\n } // Will result in a null access error if accessed outside render phase. We\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\nfunction useContext(Context) {\n var dispatcher = resolveDispatcher();\n\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n\n if (realContext.Consumer === Context) {\n error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n\n return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n}\nfunction useTransition() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher$1.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher$1.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n {\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n {\n error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n }\n\n var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n\n warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n } // Legacy hook: remove it\n\n\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n}\n\nfunction startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n\n try {\n scope();\n } finally {\n ReactCurrentBatchConfig.transition = prevTransition;\n\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n\n if (updatedFibersCount > 10) {\n warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n }\n\n currentTransition._updatedFibers.clear();\n }\n }\n }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n if (enqueueTaskImpl === null) {\n try {\n // read require off the module object to get around the bundlers.\n // we don't want them to detect a require and bundle a Node polyfill.\n var requireString = ('require' + Math.random()).slice(0, 7);\n var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n // version of setImmediate, bypassing fake timers if any.\n\n enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n } catch (_err) {\n // we're in a browser\n // we can't use regular timers because they may still be faked\n // so we try MessageChannel+postMessage instead\n enqueueTaskImpl = function (callback) {\n {\n if (didWarnAboutMessageChannel === false) {\n didWarnAboutMessageChannel = true;\n\n if (typeof MessageChannel === 'undefined') {\n error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n }\n }\n }\n\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(undefined);\n };\n }\n }\n\n return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n {\n // `act` calls can be nested, so we track the depth. This represents the\n // number of `act` scopes on the stack.\n var prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n\n if (ReactCurrentActQueue.current === null) {\n // This is the outermost `act` scope. Initialize the queue. The reconciler\n // will detect the queue and use it instead of Scheduler.\n ReactCurrentActQueue.current = [];\n }\n\n var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n var result;\n\n try {\n // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n // set to `true` while the given callback is executed, not for updates\n // triggered during an async event, because this is how the legacy\n // implementation of `act` behaved.\n ReactCurrentActQueue.isBatchingLegacy = true;\n result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n // which flushed updates immediately after the scope function exits, even\n // if it's an async function.\n\n if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n flushActQueue(queue);\n }\n }\n } catch (error) {\n popActScope(prevActScopeDepth);\n throw error;\n } finally {\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n }\n\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n // for it to resolve before exiting the current scope.\n\n var wasAwaited = false;\n var thenable = {\n then: function (resolve, reject) {\n wasAwaited = true;\n thenableResult.then(function (returnValue) {\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // We've exited the outermost act scope. Recursively flush the\n // queue until there's no remaining work.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }, function (error) {\n // The callback threw an error.\n popActScope(prevActScopeDepth);\n reject(error);\n });\n }\n };\n\n {\n if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n // eslint-disable-next-line no-undef\n Promise.resolve().then(function () {}).then(function () {\n if (!wasAwaited) {\n didWarnNoAwaitAct = true;\n\n error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n }\n });\n }\n }\n\n return thenable;\n } else {\n var returnValue = result; // The callback is not an async function. Exit the current scope\n // immediately, without awaiting.\n\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // Exiting the outermost act scope. Flush the queue.\n var _queue = ReactCurrentActQueue.current;\n\n if (_queue !== null) {\n flushActQueue(_queue);\n ReactCurrentActQueue.current = null;\n } // Return a thenable. If the user awaits it, we'll flush again in\n // case additional work was scheduled by a microtask.\n\n\n var _thenable = {\n then: function (resolve, reject) {\n // Confirm we haven't re-entered another `act` scope, in case\n // the user does something weird like await the thenable\n // multiple times.\n if (ReactCurrentActQueue.current === null) {\n // Recursively flush the queue until there's no remaining work.\n ReactCurrentActQueue.current = [];\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }\n };\n return _thenable;\n } else {\n // Since we're inside a nested `act` scope, the returned thenable\n // immediately resolves. The outer scope will flush the queue.\n var _thenable2 = {\n then: function (resolve, reject) {\n resolve(returnValue);\n }\n };\n return _thenable2;\n }\n }\n }\n}\n\nfunction popActScope(prevActScopeDepth) {\n {\n if (prevActScopeDepth !== actScopeDepth - 1) {\n error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n }\n\n actScopeDepth = prevActScopeDepth;\n }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n if (queue.length === 0) {\n // No additional work was scheduled. Finish.\n ReactCurrentActQueue.current = null;\n resolve(returnValue);\n } else {\n // Keep flushing work until there's none left.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n }\n });\n } catch (error) {\n reject(error);\n }\n } else {\n resolve(returnValue);\n }\n }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n {\n if (!isFlushing) {\n // Prevent re-entrance.\n isFlushing = true;\n var i = 0;\n\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n\n do {\n callback = callback(true);\n } while (callback !== null);\n }\n\n queue.length = 0;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n queue = queue.slice(i + 1);\n throw error;\n } finally {\n isFlushing = false;\n }\n }\n }\n}\n\nvar createElement$1 = createElementWithValidation ;\nvar cloneElement$1 = cloneElementWithValidation ;\nvar createFactory = createFactoryWithValidation ;\nvar Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.act = act;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n",null],"names":["reactModule","require$$0","require$$1"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/dist/cjs/types/components/Button/Button.d.ts b/dist/cjs/types/components/Button/Button.d.ts new file mode 100644 index 0000000..a84ea65 --- /dev/null +++ b/dist/cjs/types/components/Button/Button.d.ts @@ -0,0 +1,6 @@ +import React from "react"; +export interface ButtonProps { + label: string; +} +declare const Button: (props: ButtonProps) => React.JSX.Element; +export default Button; diff --git a/dist/cjs/types/components/Button/index.d.ts b/dist/cjs/types/components/Button/index.d.ts new file mode 100644 index 0000000..c4719be --- /dev/null +++ b/dist/cjs/types/components/Button/index.d.ts @@ -0,0 +1 @@ +export { default } from "./Button"; diff --git a/dist/cjs/types/components/index.d.ts b/dist/cjs/types/components/index.d.ts new file mode 100644 index 0000000..1fdf438 --- /dev/null +++ b/dist/cjs/types/components/index.d.ts @@ -0,0 +1 @@ +export { default as Button } from "./Button"; diff --git a/dist/cjs/types/index.d.ts b/dist/cjs/types/index.d.ts new file mode 100644 index 0000000..40b494c --- /dev/null +++ b/dist/cjs/types/index.d.ts @@ -0,0 +1 @@ +export * from "./components"; diff --git a/dist/esm/index.js b/dist/esm/index.js new file mode 100644 index 0000000..aa95ce4 --- /dev/null +++ b/dist/esm/index.js @@ -0,0 +1,2808 @@ +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +var react = {exports: {}}; + +var react_production_min = {}; + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var hasRequiredReact_production_min; + +function requireReact_production_min () { + if (hasRequiredReact_production_min) return react_production_min; + hasRequiredReact_production_min = 1; +var l=Symbol.for("react.element"),n=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),q=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),t=Symbol.for("react.provider"),u=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),z=Symbol.iterator;function A(a){if(null===a||"object"!==typeof a)return null;a=z&&a[z]||a["@@iterator"];return "function"===typeof a?a:null} + var B={isMounted:function(){return !1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B;}E.prototype.isReactComponent={}; + E.prototype.setState=function(a,b){if("object"!==typeof a&&"function"!==typeof a&&null!=a)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,a,b,"setState");};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,"forceUpdate");};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B;}var H=G.prototype=new F; + H.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0}; + function M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=""+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + printWarning('warn', format, args); + } + } + } + function error(format) { + { + { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + printWarning('error', format, args); + } + } + } + + function printWarning(level, format, args) { + // When changing this logic, you might want to also + // update consoleWithStackDev.www.js as well. + { + var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame.getStackAddendum(); + + if (stack !== '') { + format += '%s'; + args = args.concat([stack]); + } // eslint-disable-next-line react-internal/safe-string-coercion + + + var argsWithFormat = args.map(function (item) { + return String(item); + }); // Careful: RN currently depends on this prefix + + argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it + // breaks IE9: https://github.com/facebook/react/issues/13610 + // eslint-disable-next-line react-internal/no-production-logging + + Function.prototype.apply.call(console[level], console, argsWithFormat); + } + } + + var didWarnStateUpdateForUnmountedComponent = {}; + + function warnNoop(publicInstance, callerName) { + { + var _constructor = publicInstance.constructor; + var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass'; + var warningKey = componentName + "." + callerName; + + if (didWarnStateUpdateForUnmountedComponent[warningKey]) { + return; + } + + error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName); + + didWarnStateUpdateForUnmountedComponent[warningKey] = true; + } + } + /** + * This is the abstract API for an update queue. + */ + + + var ReactNoopUpdateQueue = { + /** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function (publicInstance) { + return false; + }, + + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueForceUpdate: function (publicInstance, callback, callerName) { + warnNoop(publicInstance, 'forceUpdate'); + }, + + /** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} completeState Next state. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ + enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { + warnNoop(publicInstance, 'replaceState'); + }, + + /** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} partialState Next partial state to be merged with state. + * @param {?function} callback Called after component is updated. + * @param {?string} Name of the calling function in the public API. + * @internal + */ + enqueueSetState: function (publicInstance, partialState, callback, callerName) { + warnNoop(publicInstance, 'setState'); + } + }; + + var assign = Object.assign; + + var emptyObject = {}; + + { + Object.freeze(emptyObject); + } + /** + * Base class helpers for the updating state of a component. + */ + + + function Component(props, context, updater) { + this.props = props; + this.context = context; // If a component has string refs, we will assign a different object later. + + this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the + // renderer. + + this.updater = updater || ReactNoopUpdateQueue; + } + + Component.prototype.isReactComponent = {}; + /** + * Sets a subset of the state. Always use this to mutate + * state. You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * There is no guarantee that calls to `setState` will run synchronously, + * as they may eventually be batched together. You can provide an optional + * callback that will be executed when the call to setState is actually + * completed. + * + * When a function is provided to setState, it will be called at some point in + * the future (not synchronously). It will be called with the up to date + * component arguments (state, props, context). These values can be different + * from this.* because your function may be called after receiveProps but before + * shouldComponentUpdate, and this new state, props, and context will not yet be + * assigned to this. + * + * @param {object|function} partialState Next partial state or function to + * produce next partial state to be merged with current state. + * @param {?function} callback Called after state is updated. + * @final + * @protected + */ + + Component.prototype.setState = function (partialState, callback) { + if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) { + throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.'); + } + + this.updater.enqueueSetState(this, partialState, callback, 'setState'); + }; + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {?function} callback Called after update is complete. + * @final + * @protected + */ + + + Component.prototype.forceUpdate = function (callback) { + this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); + }; + /** + * Deprecated APIs. These APIs used to exist on classic React classes but since + * we would like to deprecate them, we're not going to move them over to this + * modern base class. Instead, we define a getter that warns if it's accessed. + */ + + + { + var deprecatedAPIs = { + isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], + replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] + }; + + var defineDeprecationWarning = function (methodName, info) { + Object.defineProperty(Component.prototype, methodName, { + get: function () { + warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); + + return undefined; + } + }); + }; + + for (var fnName in deprecatedAPIs) { + if (deprecatedAPIs.hasOwnProperty(fnName)) { + defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + } + } + } + + function ComponentDummy() {} + + ComponentDummy.prototype = Component.prototype; + /** + * Convenience component with default shallow equality check for sCU. + */ + + function PureComponent(props, context, updater) { + this.props = props; + this.context = context; // If a component has string refs, we will assign a different object later. + + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + + var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); + pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods. + + assign(pureComponentPrototype, Component.prototype); + pureComponentPrototype.isPureReactComponent = true; + + // an immutable object with a single mutable value + function createRef() { + var refObject = { + current: null + }; + + { + Object.seal(refObject); + } + + return refObject; + } + + var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare + + function isArray(a) { + return isArrayImpl(a); + } + + /* + * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol + * and Temporal.* types. See https://github.com/facebook/react/pull/22064. + * + * The functions in this module will throw an easier-to-understand, + * easier-to-debug exception with a clear errors message message explaining the + * problem. (Instead of a confusing exception thrown inside the implementation + * of the `value` object). + */ + // $FlowFixMe only called in DEV, so void return is not possible. + function typeName(value) { + { + // toStringTag is needed for namespaced types like Temporal.Instant + var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag; + var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object'; + return type; + } + } // $FlowFixMe only called in DEV, so void return is not possible. + + + function willCoercionThrow(value) { + { + try { + testStringCoercion(value); + return false; + } catch (e) { + return true; + } + } + } + + function testStringCoercion(value) { + // If you ended up here by following an exception call stack, here's what's + // happened: you supplied an object or symbol value to React (as a prop, key, + // DOM attribute, CSS property, string ref, etc.) and when React tried to + // coerce it to a string using `'' + value`, an exception was thrown. + // + // The most common types that will cause this exception are `Symbol` instances + // and Temporal objects like `Temporal.Instant`. But any object that has a + // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this + // exception. (Library authors do this to prevent users from using built-in + // numeric operators like `+` or comparison operators like `>=` because custom + // methods are needed to perform accurate arithmetic or comparison.) + // + // To fix the problem, coerce this object or symbol value to a string before + // passing it to React. The most reliable way is usually `String(value)`. + // + // To find which value is throwing, check the browser or debugger console. + // Before this exception was thrown, there should be `console.error` output + // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the + // problem and how that type was used: key, atrribute, input value prop, etc. + // In most cases, this console output also shows the component and its + // ancestor components where the exception happened. + // + // eslint-disable-next-line react-internal/safe-string-coercion + return '' + value; + } + function checkKeyStringCoercion(value) { + { + if (willCoercionThrow(value)) { + error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value)); + + return testStringCoercion(value); // throw (to help callers find troubleshooting comments) + } + } + } + + function getWrappedName(outerType, innerType, wrapperName) { + var displayName = outerType.displayName; + + if (displayName) { + return displayName; + } + + var functionName = innerType.displayName || innerType.name || ''; + return functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName; + } // Keep in sync with react-reconciler/getComponentNameFromFiber + + + function getContextName(type) { + return type.displayName || 'Context'; + } // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead. + + + function getComponentNameFromType(type) { + if (type == null) { + // Host root, text node or just invalid type. + return null; + } + + { + if (typeof type.tag === 'number') { + error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.'); + } + } + + if (typeof type === 'function') { + return type.displayName || type.name || null; + } + + if (typeof type === 'string') { + return type; + } + + switch (type) { + case REACT_FRAGMENT_TYPE: + return 'Fragment'; + + case REACT_PORTAL_TYPE: + return 'Portal'; + + case REACT_PROFILER_TYPE: + return 'Profiler'; + + case REACT_STRICT_MODE_TYPE: + return 'StrictMode'; + + case REACT_SUSPENSE_TYPE: + return 'Suspense'; + + case REACT_SUSPENSE_LIST_TYPE: + return 'SuspenseList'; + + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_CONTEXT_TYPE: + var context = type; + return getContextName(context) + '.Consumer'; + + case REACT_PROVIDER_TYPE: + var provider = type; + return getContextName(provider._context) + '.Provider'; + + case REACT_FORWARD_REF_TYPE: + return getWrappedName(type, type.render, 'ForwardRef'); + + case REACT_MEMO_TYPE: + var outerName = type.displayName || null; + + if (outerName !== null) { + return outerName; + } + + return getComponentNameFromType(type.type) || 'Memo'; + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + return getComponentNameFromType(init(payload)); + } catch (x) { + return null; + } + } + + // eslint-disable-next-line no-fallthrough + } + } + + return null; + } + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true + }; + var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs; + + { + didWarnAboutStringRefs = {}; + } + + function hasValidRef(config) { + { + if (hasOwnProperty.call(config, 'ref')) { + var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; + + if (getter && getter.isReactWarning) { + return false; + } + } + } + + return config.ref !== undefined; + } + + function hasValidKey(config) { + { + if (hasOwnProperty.call(config, 'key')) { + var getter = Object.getOwnPropertyDescriptor(config, 'key').get; + + if (getter && getter.isReactWarning) { + return false; + } + } + } + + return config.key !== undefined; + } + + function defineKeyPropWarningGetter(props, displayName) { + var warnAboutAccessingKey = function () { + { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + + error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); + } + } + }; + + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, 'key', { + get: warnAboutAccessingKey, + configurable: true + }); + } + + function defineRefPropWarningGetter(props, displayName) { + var warnAboutAccessingRef = function () { + { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + + error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); + } + } + }; + + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, 'ref', { + get: warnAboutAccessingRef, + configurable: true + }); + } + + function warnIfStringRefCannotBeAutoConverted(config) { + { + if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) { + var componentName = getComponentNameFromType(ReactCurrentOwner.current.type); + + if (!didWarnAboutStringRefs[componentName]) { + error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref); + + didWarnAboutStringRefs[componentName] = true; + } + } + } + } + /** + * Factory method to create a new React element. This no longer adheres to + * the class pattern, so do not use new to call it. Also, instanceof check + * will not work. Instead test $$typeof field against Symbol.for('react.element') to check + * if something is a React Element. + * + * @param {*} type + * @param {*} props + * @param {*} key + * @param {string|object} ref + * @param {*} owner + * @param {*} self A *temporary* helper to detect places where `this` is + * different from the `owner` when React.createElement is called, so that we + * can warn. We want to get rid of owner and replace string `ref`s with arrow + * functions, and as long as `this` and owner are the same, there will be no + * change in behavior. + * @param {*} source An annotation object (added by a transpiler or otherwise) + * indicating filename, line number, and/or other information. + * @internal + */ + + + var ReactElement = function (type, key, ref, self, source, owner, props) { + var element = { + // This tag allows us to uniquely identify this as a React Element + $$typeof: REACT_ELEMENT_TYPE, + // Built-in properties that belong on the element + type: type, + key: key, + ref: ref, + props: props, + // Record the component responsible for creating this element. + _owner: owner + }; + + { + // The validation flag is currently mutative. We put it on + // an external backing store so that we can freeze the whole object. + // This can be replaced with a WeakMap once they are implemented in + // commonly used development environments. + element._store = {}; // To make comparing ReactElements easier for testing purposes, we make + // the validation flag non-enumerable (where possible, which should + // include every environment we run tests in), so the test framework + // ignores it. + + Object.defineProperty(element._store, 'validated', { + configurable: false, + enumerable: false, + writable: true, + value: false + }); // self and source are DEV only properties. + + Object.defineProperty(element, '_self', { + configurable: false, + enumerable: false, + writable: false, + value: self + }); // Two elements created in two different places should be considered + // equal for testing purposes and therefore we hide it from enumeration. + + Object.defineProperty(element, '_source', { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + + return element; + }; + /** + * Create and return a new ReactElement of the given type. + * See https://reactjs.org/docs/react-api.html#createelement + */ + + function createElement(type, config, children) { + var propName; // Reserved names are extracted + + var props = {}; + var key = null; + var ref = null; + var self = null; + var source = null; + + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + + { + warnIfStringRefCannotBeAutoConverted(config); + } + } + + if (hasValidKey(config)) { + { + checkKeyStringCoercion(config.key); + } + + key = '' + config.key; + } + + self = config.__self === undefined ? null : config.__self; + source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object + + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + } // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + + + var childrenLength = arguments.length - 2; + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + + { + if (Object.freeze) { + Object.freeze(childArray); + } + } + + props.children = childArray; + } // Resolve default props + + + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } + } + } + + { + if (key || ref) { + var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; + + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + } + + return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); + } + function cloneAndReplaceKey(oldElement, newKey) { + var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); + return newElement; + } + /** + * Clone and return a new ReactElement using element as the starting point. + * See https://reactjs.org/docs/react-api.html#cloneelement + */ + + function cloneElement(element, config, children) { + if (element === null || element === undefined) { + throw new Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + "."); + } + + var propName; // Original props are copied + + var props = assign({}, element.props); // Reserved names are extracted + + var key = element.key; + var ref = element.ref; // Self is preserved since the owner is preserved. + + var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a + // transpiler, and the original source is probably a better indicator of the + // true owner. + + var source = element._source; // Owner will be preserved, unless ref is overridden + + var owner = element._owner; + + if (config != null) { + if (hasValidRef(config)) { + // Silently steal the ref from the parent. + ref = config.ref; + owner = ReactCurrentOwner.current; + } + + if (hasValidKey(config)) { + { + checkKeyStringCoercion(config.key); + } + + key = '' + config.key; + } // Remaining properties override existing props + + + var defaultProps; + + if (element.type && element.type.defaultProps) { + defaultProps = element.type.defaultProps; + } + + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (config[propName] === undefined && defaultProps !== undefined) { + // Resolve default props + props[propName] = defaultProps[propName]; + } else { + props[propName] = config[propName]; + } + } + } + } // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + + + var childrenLength = arguments.length - 2; + + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + + props.children = childArray; + } + + return ReactElement(element.type, key, ref, self, source, owner, props); + } + /** + * Verifies the object is a ReactElement. + * See https://reactjs.org/docs/react-api.html#isvalidelement + * @param {?object} object + * @return {boolean} True if `object` is a ReactElement. + * @final + */ + + function isValidElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + + var SEPARATOR = '.'; + var SUBSEPARATOR = ':'; + /** + * Escape and wrap key so it is safe to use as a reactid + * + * @param {string} key to be escaped. + * @return {string} the escaped key. + */ + + function escape(key) { + var escapeRegex = /[=:]/g; + var escaperLookup = { + '=': '=0', + ':': '=2' + }; + var escapedString = key.replace(escapeRegex, function (match) { + return escaperLookup[match]; + }); + return '$' + escapedString; + } + /** + * TODO: Test that a single child and an array with one item have the same key + * pattern. + */ + + + var didWarnAboutMaps = false; + var userProvidedKeyEscapeRegex = /\/+/g; + + function escapeUserProvidedKey(text) { + return text.replace(userProvidedKeyEscapeRegex, '$&/'); + } + /** + * Generate a key string that identifies a element within a set. + * + * @param {*} element A element that could contain a manual key. + * @param {number} index Index that is used if a manual key is not provided. + * @return {string} + */ + + + function getElementKey(element, index) { + // Do some typechecking here since we call this blindly. We want to ensure + // that we don't block potential future ES APIs. + if (typeof element === 'object' && element !== null && element.key != null) { + // Explicit key + { + checkKeyStringCoercion(element.key); + } + + return escape('' + element.key); + } // Implicit key determined by the index in the set + + + return index.toString(36); + } + + function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) { + var type = typeof children; + + if (type === 'undefined' || type === 'boolean') { + // All of the above are perceived as null. + children = null; + } + + var invokeCallback = false; + + if (children === null) { + invokeCallback = true; + } else { + switch (type) { + case 'string': + case 'number': + invokeCallback = true; + break; + + case 'object': + switch (children.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_PORTAL_TYPE: + invokeCallback = true; + } + + } + } + + if (invokeCallback) { + var _child = children; + var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array + // so that it's consistent if the number of children grows: + + var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar; + + if (isArray(mappedChild)) { + var escapedChildKey = ''; + + if (childKey != null) { + escapedChildKey = escapeUserProvidedKey(childKey) + '/'; + } + + mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) { + return c; + }); + } else if (mappedChild != null) { + if (isValidElement(mappedChild)) { + { + // The `if` statement here prevents auto-disabling of the safe + // coercion ESLint rule, so we must manually disable it below. + // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key + if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) { + checkKeyStringCoercion(mappedChild.key); + } + } + + mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as + // traverseAllChildren used to do for objects as children + escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key + mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number + // eslint-disable-next-line react-internal/safe-string-coercion + escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey); + } + + array.push(mappedChild); + } + + return 1; + } + + var child; + var nextName; + var subtreeCount = 0; // Count of children found in the current subtree. + + var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; + + if (isArray(children)) { + for (var i = 0; i < children.length; i++) { + child = children[i]; + nextName = nextNamePrefix + getElementKey(child, i); + subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); + } + } else { + var iteratorFn = getIteratorFn(children); + + if (typeof iteratorFn === 'function') { + var iterableChildren = children; + + { + // Warn about using Maps as children + if (iteratorFn === iterableChildren.entries) { + if (!didWarnAboutMaps) { + warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.'); + } + + didWarnAboutMaps = true; + } + } + + var iterator = iteratorFn.call(iterableChildren); + var step; + var ii = 0; + + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getElementKey(child, ii++); + subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); + } + } else if (type === 'object') { + // eslint-disable-next-line react-internal/safe-string-coercion + var childrenString = String(children); + throw new Error("Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + "). " + 'If you meant to render a collection of children, use an array ' + 'instead.'); + } + } + + return subtreeCount; + } + + /** + * Maps children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenmap + * + * The provided mapFunction(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} func The map function. + * @param {*} context Context for mapFunction. + * @return {object} Object containing the ordered map of results. + */ + function mapChildren(children, func, context) { + if (children == null) { + return children; + } + + var result = []; + var count = 0; + mapIntoArray(children, result, '', '', function (child) { + return func.call(context, child, count++); + }); + return result; + } + /** + * Count the number of children that are typically specified as + * `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrencount + * + * @param {?*} children Children tree container. + * @return {number} The number of children. + */ + + + function countChildren(children) { + var n = 0; + mapChildren(children, function () { + n++; // Don't return anything + }); + return n; + } + + /** + * Iterates through children that are typically specified as `props.children`. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenforeach + * + * The provided forEachFunc(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} forEachFunc + * @param {*} forEachContext Context for forEachContext. + */ + function forEachChildren(children, forEachFunc, forEachContext) { + mapChildren(children, function () { + forEachFunc.apply(this, arguments); // Don't return anything. + }, forEachContext); + } + /** + * Flatten a children object (typically specified as `props.children`) and + * return an array with appropriately re-keyed children. + * + * See https://reactjs.org/docs/react-api.html#reactchildrentoarray + */ + + + function toArray(children) { + return mapChildren(children, function (child) { + return child; + }) || []; + } + /** + * Returns the first child in a collection of children and verifies that there + * is only one child in the collection. + * + * See https://reactjs.org/docs/react-api.html#reactchildrenonly + * + * The current implementation of this function assumes that a single child gets + * passed without a wrapper, but the purpose of this helper function is to + * abstract away the particular structure of children. + * + * @param {?object} children Child collection structure. + * @return {ReactElement} The first and only `ReactElement` contained in the + * structure. + */ + + + function onlyChild(children) { + if (!isValidElement(children)) { + throw new Error('React.Children.only expected to receive a single React element child.'); + } + + return children; + } + + function createContext(defaultValue) { + // TODO: Second argument used to be an optional `calculateChangedBits` + // function. Warn to reserve for future use? + var context = { + $$typeof: REACT_CONTEXT_TYPE, + // As a workaround to support multiple concurrent renderers, we categorize + // some renderers as primary and others as secondary. We only expect + // there to be two concurrent renderers at most: React Native (primary) and + // Fabric (secondary); React DOM (primary) and React ART (secondary). + // Secondary renderers store their context values on separate fields. + _currentValue: defaultValue, + _currentValue2: defaultValue, + // Used to track how many concurrent renderers this context currently + // supports within in a single renderer. Such as parallel server rendering. + _threadCount: 0, + // These are circular + Provider: null, + Consumer: null, + // Add these to use same hidden class in VM as ServerContext + _defaultValue: null, + _globalName: null + }; + context.Provider = { + $$typeof: REACT_PROVIDER_TYPE, + _context: context + }; + var hasWarnedAboutUsingNestedContextConsumers = false; + var hasWarnedAboutUsingConsumerProvider = false; + var hasWarnedAboutDisplayNameOnConsumer = false; + + { + // A separate object, but proxies back to the original context object for + // backwards compatibility. It has a different $$typeof, so we can properly + // warn for the incorrect usage of Context as a Consumer. + var Consumer = { + $$typeof: REACT_CONTEXT_TYPE, + _context: context + }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here + + Object.defineProperties(Consumer, { + Provider: { + get: function () { + if (!hasWarnedAboutUsingConsumerProvider) { + hasWarnedAboutUsingConsumerProvider = true; + + error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?'); + } + + return context.Provider; + }, + set: function (_Provider) { + context.Provider = _Provider; + } + }, + _currentValue: { + get: function () { + return context._currentValue; + }, + set: function (_currentValue) { + context._currentValue = _currentValue; + } + }, + _currentValue2: { + get: function () { + return context._currentValue2; + }, + set: function (_currentValue2) { + context._currentValue2 = _currentValue2; + } + }, + _threadCount: { + get: function () { + return context._threadCount; + }, + set: function (_threadCount) { + context._threadCount = _threadCount; + } + }, + Consumer: { + get: function () { + if (!hasWarnedAboutUsingNestedContextConsumers) { + hasWarnedAboutUsingNestedContextConsumers = true; + + error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?'); + } + + return context.Consumer; + } + }, + displayName: { + get: function () { + return context.displayName; + }, + set: function (displayName) { + if (!hasWarnedAboutDisplayNameOnConsumer) { + warn('Setting `displayName` on Context.Consumer has no effect. ' + "You should set it directly on the context with Context.displayName = '%s'.", displayName); + + hasWarnedAboutDisplayNameOnConsumer = true; + } + } + } + }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty + + context.Consumer = Consumer; + } + + { + context._currentRenderer = null; + context._currentRenderer2 = null; + } + + return context; + } + + var Uninitialized = -1; + var Pending = 0; + var Resolved = 1; + var Rejected = 2; + + function lazyInitializer(payload) { + if (payload._status === Uninitialized) { + var ctor = payload._result; + var thenable = ctor(); // Transition to the next state. + // This might throw either because it's missing or throws. If so, we treat it + // as still uninitialized and try again next time. Which is the same as what + // happens if the ctor or any wrappers processing the ctor throws. This might + // end up fixing it if the resolution was a concurrency bug. + + thenable.then(function (moduleObject) { + if (payload._status === Pending || payload._status === Uninitialized) { + // Transition to the next state. + var resolved = payload; + resolved._status = Resolved; + resolved._result = moduleObject; + } + }, function (error) { + if (payload._status === Pending || payload._status === Uninitialized) { + // Transition to the next state. + var rejected = payload; + rejected._status = Rejected; + rejected._result = error; + } + }); + + if (payload._status === Uninitialized) { + // In case, we're still uninitialized, then we're waiting for the thenable + // to resolve. Set it as pending in the meantime. + var pending = payload; + pending._status = Pending; + pending._result = thenable; + } + } + + if (payload._status === Resolved) { + var moduleObject = payload._result; + + { + if (moduleObject === undefined) { + error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + // Break up imports to avoid accidentally parsing them as dependencies. + 'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))\n\n" + 'Did you accidentally put curly braces around the import?', moduleObject); + } + } + + { + if (!('default' in moduleObject)) { + error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + // Break up imports to avoid accidentally parsing them as dependencies. + 'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))", moduleObject); + } + } + + return moduleObject.default; + } else { + throw payload._result; + } + } + + function lazy(ctor) { + var payload = { + // We use these fields to store the result. + _status: Uninitialized, + _result: ctor + }; + var lazyType = { + $$typeof: REACT_LAZY_TYPE, + _payload: payload, + _init: lazyInitializer + }; + + { + // In production, this would just set it on the object. + var defaultProps; + var propTypes; // $FlowFixMe + + Object.defineProperties(lazyType, { + defaultProps: { + configurable: true, + get: function () { + return defaultProps; + }, + set: function (newDefaultProps) { + error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); + + defaultProps = newDefaultProps; // Match production behavior more closely: + // $FlowFixMe + + Object.defineProperty(lazyType, 'defaultProps', { + enumerable: true + }); + } + }, + propTypes: { + configurable: true, + get: function () { + return propTypes; + }, + set: function (newPropTypes) { + error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); + + propTypes = newPropTypes; // Match production behavior more closely: + // $FlowFixMe + + Object.defineProperty(lazyType, 'propTypes', { + enumerable: true + }); + } + } + }); + } + + return lazyType; + } + + function forwardRef(render) { + { + if (render != null && render.$$typeof === REACT_MEMO_TYPE) { + error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).'); + } else if (typeof render !== 'function') { + error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render); + } else { + if (render.length !== 0 && render.length !== 2) { + error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.'); + } + } + + if (render != null) { + if (render.defaultProps != null || render.propTypes != null) { + error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?'); + } + } + } + + var elementType = { + $$typeof: REACT_FORWARD_REF_TYPE, + render: render + }; + + { + var ownName; + Object.defineProperty(elementType, 'displayName', { + enumerable: false, + configurable: true, + get: function () { + return ownName; + }, + set: function (name) { + ownName = name; // The inner component shouldn't inherit this display name in most cases, + // because the component may be used elsewhere. + // But it's nice for anonymous functions to inherit the name, + // so that our component-stack generation logic will display their frames. + // An anonymous function generally suggests a pattern like: + // React.forwardRef((props, ref) => {...}); + // This kind of inner function is not used elsewhere so the side effect is okay. + + if (!render.name && !render.displayName) { + render.displayName = name; + } + } + }); + } + + return elementType; + } + + var REACT_MODULE_REFERENCE; + + { + REACT_MODULE_REFERENCE = Symbol.for('react.module.reference'); + } + + function isValidElementType(type) { + if (typeof type === 'string' || typeof type === 'function') { + return true; + } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). + + + if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) { + return true; + } + + if (typeof type === 'object' && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) { + return true; + } + } + + return false; + } + + function memo(type, compare) { + { + if (!isValidElementType(type)) { + error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type); + } + } + + var elementType = { + $$typeof: REACT_MEMO_TYPE, + type: type, + compare: compare === undefined ? null : compare + }; + + { + var ownName; + Object.defineProperty(elementType, 'displayName', { + enumerable: false, + configurable: true, + get: function () { + return ownName; + }, + set: function (name) { + ownName = name; // The inner component shouldn't inherit this display name in most cases, + // because the component may be used elsewhere. + // But it's nice for anonymous functions to inherit the name, + // so that our component-stack generation logic will display their frames. + // An anonymous function generally suggests a pattern like: + // React.memo((props) => {...}); + // This kind of inner function is not used elsewhere so the side effect is okay. + + if (!type.name && !type.displayName) { + type.displayName = name; + } + } + }); + } + + return elementType; + } + + function resolveDispatcher() { + var dispatcher = ReactCurrentDispatcher.current; + + { + if (dispatcher === null) { + error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\n' + '2. You might be breaking the Rules of Hooks\n' + '3. You might have more than one copy of React in the same app\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.'); + } + } // Will result in a null access error if accessed outside render phase. We + // intentionally don't throw our own error because this is in a hot path. + // Also helps ensure this is inlined. + + + return dispatcher; + } + function useContext(Context) { + var dispatcher = resolveDispatcher(); + + { + // TODO: add a more generic warning for invalid values. + if (Context._context !== undefined) { + var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs + // and nobody should be using this in existing code. + + if (realContext.Consumer === Context) { + error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?'); + } else if (realContext.Provider === Context) { + error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?'); + } + } + } + + return dispatcher.useContext(Context); + } + function useState(initialState) { + var dispatcher = resolveDispatcher(); + return dispatcher.useState(initialState); + } + function useReducer(reducer, initialArg, init) { + var dispatcher = resolveDispatcher(); + return dispatcher.useReducer(reducer, initialArg, init); + } + function useRef(initialValue) { + var dispatcher = resolveDispatcher(); + return dispatcher.useRef(initialValue); + } + function useEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useEffect(create, deps); + } + function useInsertionEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useInsertionEffect(create, deps); + } + function useLayoutEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useLayoutEffect(create, deps); + } + function useCallback(callback, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useCallback(callback, deps); + } + function useMemo(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useMemo(create, deps); + } + function useImperativeHandle(ref, create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useImperativeHandle(ref, create, deps); + } + function useDebugValue(value, formatterFn) { + { + var dispatcher = resolveDispatcher(); + return dispatcher.useDebugValue(value, formatterFn); + } + } + function useTransition() { + var dispatcher = resolveDispatcher(); + return dispatcher.useTransition(); + } + function useDeferredValue(value) { + var dispatcher = resolveDispatcher(); + return dispatcher.useDeferredValue(value); + } + function useId() { + var dispatcher = resolveDispatcher(); + return dispatcher.useId(); + } + function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) { + var dispatcher = resolveDispatcher(); + return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot); + } + + // Helpers to patch console.logs to avoid logging during side-effect free + // replaying on render function. This currently only patches the object + // lazily which won't cover if the log function was extracted eagerly. + // We could also eagerly patch the method. + var disabledDepth = 0; + var prevLog; + var prevInfo; + var prevWarn; + var prevError; + var prevGroup; + var prevGroupCollapsed; + var prevGroupEnd; + + function disabledLog() {} + + disabledLog.__reactDisabledLog = true; + function disableLogs() { + { + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + prevLog = console.log; + prevInfo = console.info; + prevWarn = console.warn; + prevError = console.error; + prevGroup = console.group; + prevGroupCollapsed = console.groupCollapsed; + prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099 + + var props = { + configurable: true, + enumerable: true, + value: disabledLog, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + info: props, + log: props, + warn: props, + error: props, + group: props, + groupCollapsed: props, + groupEnd: props + }); + /* eslint-enable react-internal/no-production-logging */ + } + + disabledDepth++; + } + } + function reenableLogs() { + { + disabledDepth--; + + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + var props = { + configurable: true, + enumerable: true, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + log: assign({}, props, { + value: prevLog + }), + info: assign({}, props, { + value: prevInfo + }), + warn: assign({}, props, { + value: prevWarn + }), + error: assign({}, props, { + value: prevError + }), + group: assign({}, props, { + value: prevGroup + }), + groupCollapsed: assign({}, props, { + value: prevGroupCollapsed + }), + groupEnd: assign({}, props, { + value: prevGroupEnd + }) + }); + /* eslint-enable react-internal/no-production-logging */ + } + + if (disabledDepth < 0) { + error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.'); + } + } + } + + var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher; + var prefix; + function describeBuiltInComponentFrame(name, source, ownerFn) { + { + if (prefix === undefined) { + // Extract the VM specific prefix used by each line. + try { + throw Error(); + } catch (x) { + var match = x.stack.trim().match(/\n( *(at )?)/); + prefix = match && match[1] || ''; + } + } // We use the prefix to ensure our stacks line up with native stack frames. + + + return '\n' + prefix + name; + } + } + var reentry = false; + var componentFrameCache; + + { + var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; + componentFrameCache = new PossiblyWeakMap(); + } + + function describeNativeComponentFrame(fn, construct) { + // If something asked for a stack inside a fake render, it should get ignored. + if ( !fn || reentry) { + return ''; + } + + { + var frame = componentFrameCache.get(fn); + + if (frame !== undefined) { + return frame; + } + } + + var control; + reentry = true; + var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined. + + Error.prepareStackTrace = undefined; + var previousDispatcher; + + { + previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function + // for warnings. + + ReactCurrentDispatcher$1.current = null; + disableLogs(); + } + + try { + // This should throw. + if (construct) { + // Something should be setting the props in the constructor. + var Fake = function () { + throw Error(); + }; // $FlowFixMe + + + Object.defineProperty(Fake.prototype, 'props', { + set: function () { + // We use a throwing setter instead of frozen or non-writable props + // because that won't throw in a non-strict mode function. + throw Error(); + } + }); + + if (typeof Reflect === 'object' && Reflect.construct) { + // We construct a different control for this case to include any extra + // frames added by the construct call. + try { + Reflect.construct(Fake, []); + } catch (x) { + control = x; + } + + Reflect.construct(fn, [], Fake); + } else { + try { + Fake.call(); + } catch (x) { + control = x; + } + + fn.call(Fake.prototype); + } + } else { + try { + throw Error(); + } catch (x) { + control = x; + } + + fn(); + } + } catch (sample) { + // This is inlined manually because closure doesn't do it for us. + if (sample && control && typeof sample.stack === 'string') { + // This extracts the first frame from the sample that isn't also in the control. + // Skipping one frame that we assume is the frame that calls the two. + var sampleLines = sample.stack.split('\n'); + var controlLines = control.stack.split('\n'); + var s = sampleLines.length - 1; + var c = controlLines.length - 1; + + while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) { + // We expect at least one stack frame to be shared. + // Typically this will be the root most one. However, stack frames may be + // cut off due to maximum stack limits. In this case, one maybe cut off + // earlier than the other. We assume that the sample is longer or the same + // and there for cut off earlier. So we should find the root most frame in + // the sample somewhere in the control. + c--; + } + + for (; s >= 1 && c >= 0; s--, c--) { + // Next we find the first one that isn't the same which should be the + // frame that called our sample function and the control. + if (sampleLines[s] !== controlLines[c]) { + // In V8, the first line is describing the message but other VMs don't. + // If we're about to return the first line, and the control is also on the same + // line, that's a pretty good indicator that our sample threw at same line as + // the control. I.e. before we entered the sample frame. So we ignore this result. + // This can happen if you passed a class to function component, or non-function. + if (s !== 1 || c !== 1) { + do { + s--; + c--; // We may still have similar intermediate frames from the construct call. + // The next one that isn't the same should be our match though. + + if (c < 0 || sampleLines[s] !== controlLines[c]) { + // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. + var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled "" + // but we have a user-provided "displayName" + // splice it in to make the stack more readable. + + + if (fn.displayName && _frame.includes('')) { + _frame = _frame.replace('', fn.displayName); + } + + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, _frame); + } + } // Return the line we found. + + + return _frame; + } + } while (s >= 1 && c >= 0); + } + + break; + } + } + } + } finally { + reentry = false; + + { + ReactCurrentDispatcher$1.current = previousDispatcher; + reenableLogs(); + } + + Error.prepareStackTrace = previousPrepareStackTrace; + } // Fallback to just using the name if we couldn't make it throw. + + + var name = fn ? fn.displayName || fn.name : ''; + var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ''; + + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, syntheticFrame); + } + } + + return syntheticFrame; + } + function describeFunctionComponentFrame(fn, source, ownerFn) { + { + return describeNativeComponentFrame(fn, false); + } + } + + function shouldConstruct(Component) { + var prototype = Component.prototype; + return !!(prototype && prototype.isReactComponent); + } + + function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { + + if (type == null) { + return ''; + } + + if (typeof type === 'function') { + { + return describeNativeComponentFrame(type, shouldConstruct(type)); + } + } + + if (typeof type === 'string') { + return describeBuiltInComponentFrame(type); + } + + switch (type) { + case REACT_SUSPENSE_TYPE: + return describeBuiltInComponentFrame('Suspense'); + + case REACT_SUSPENSE_LIST_TYPE: + return describeBuiltInComponentFrame('SuspenseList'); + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_FORWARD_REF_TYPE: + return describeFunctionComponentFrame(type.render); + + case REACT_MEMO_TYPE: + // Memo may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + // Lazy may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); + } catch (x) {} + } + } + } + + return ''; + } + + var loggedTypeFailures = {}; + var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; + + function setCurrentlyValidatingElement(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + ReactDebugCurrentFrame$1.setExtraStackFrame(stack); + } else { + ReactDebugCurrentFrame$1.setExtraStackFrame(null); + } + } + } + + function checkPropTypes(typeSpecs, values, location, componentName, element) { + { + // $FlowFixMe This is okay but Flow doesn't know it. + var has = Function.call.bind(hasOwnProperty); + + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + // eslint-disable-next-line react-internal/prod-error-codes + var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'); + err.name = 'Invariant Violation'; + throw err; + } + + error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'); + } catch (ex) { + error$1 = ex; + } + + if (error$1 && !(error$1 instanceof Error)) { + setCurrentlyValidatingElement(element); + + error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1); + + setCurrentlyValidatingElement(null); + } + + if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error$1.message] = true; + setCurrentlyValidatingElement(element); + + error('Failed %s type: %s', location, error$1.message); + + setCurrentlyValidatingElement(null); + } + } + } + } + } + + function setCurrentlyValidatingElement$1(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + setExtraStackFrame(stack); + } else { + setExtraStackFrame(null); + } + } + } + + var propTypesMisspellWarningShown; + + { + propTypesMisspellWarningShown = false; + } + + function getDeclarationErrorAddendum() { + if (ReactCurrentOwner.current) { + var name = getComponentNameFromType(ReactCurrentOwner.current.type); + + if (name) { + return '\n\nCheck the render method of `' + name + '`.'; + } + } + + return ''; + } + + function getSourceInfoErrorAddendum(source) { + if (source !== undefined) { + var fileName = source.fileName.replace(/^.*[\\\/]/, ''); + var lineNumber = source.lineNumber; + return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; + } + + return ''; + } + + function getSourceInfoErrorAddendumForProps(elementProps) { + if (elementProps !== null && elementProps !== undefined) { + return getSourceInfoErrorAddendum(elementProps.__source); + } + + return ''; + } + /** + * Warn if there's no key explicitly set on dynamic arrays of children or + * object keys are not valid. This allows us to keep track of children between + * updates. + */ + + + var ownerHasKeyUseWarning = {}; + + function getCurrentComponentErrorInfo(parentType) { + var info = getDeclarationErrorAddendum(); + + if (!info) { + var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; + + if (parentName) { + info = "\n\nCheck the top-level render call using <" + parentName + ">."; + } + } + + return info; + } + /** + * Warn if the element doesn't have an explicit key assigned to it. + * This element is in an array. The array could grow and shrink or be + * reordered. All children that haven't already been validated are required to + * have a "key" property assigned to it. Error statuses are cached so a warning + * will only be shown once. + * + * @internal + * @param {ReactElement} element Element that requires a key. + * @param {*} parentType element's parent's type. + */ + + + function validateExplicitKey(element, parentType) { + if (!element._store || element._store.validated || element.key != null) { + return; + } + + element._store.validated = true; + var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); + + if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { + return; + } + + ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a + // property, it may be the creator of the child that's responsible for + // assigning it a key. + + var childOwner = ''; + + if (element && element._owner && element._owner !== ReactCurrentOwner.current) { + // Give the component that originally created this child. + childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + "."; + } + + { + setCurrentlyValidatingElement$1(element); + + error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner); + + setCurrentlyValidatingElement$1(null); + } + } + /** + * Ensure that every element either is passed in a static location, in an + * array with an explicit keys property defined, or in an object literal + * with valid key property. + * + * @internal + * @param {ReactNode} node Statically passed child of any type. + * @param {*} parentType node's parent's type. + */ + + + function validateChildKeys(node, parentType) { + if (typeof node !== 'object') { + return; + } + + if (isArray(node)) { + for (var i = 0; i < node.length; i++) { + var child = node[i]; + + if (isValidElement(child)) { + validateExplicitKey(child, parentType); + } + } + } else if (isValidElement(node)) { + // This element was passed in a valid location. + if (node._store) { + node._store.validated = true; + } + } else if (node) { + var iteratorFn = getIteratorFn(node); + + if (typeof iteratorFn === 'function') { + // Entry iterators used to provide implicit keys, + // but now we print a separate warning for them later. + if (iteratorFn !== node.entries) { + var iterator = iteratorFn.call(node); + var step; + + while (!(step = iterator.next()).done) { + if (isValidElement(step.value)) { + validateExplicitKey(step.value, parentType); + } + } + } + } + } + } + /** + * Given an element, validate that its props follow the propTypes definition, + * provided by the type. + * + * @param {ReactElement} element + */ + + + function validatePropTypes(element) { + { + var type = element.type; + + if (type === null || type === undefined || typeof type === 'string') { + return; + } + + var propTypes; + + if (typeof type === 'function') { + propTypes = type.propTypes; + } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here. + // Inner props are checked in the reconciler. + type.$$typeof === REACT_MEMO_TYPE)) { + propTypes = type.propTypes; + } else { + return; + } + + if (propTypes) { + // Intentionally inside to avoid triggering lazy initializers: + var name = getComponentNameFromType(type); + checkPropTypes(propTypes, element.props, 'prop', name, element); + } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) { + propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers: + + var _name = getComponentNameFromType(type); + + error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown'); + } + + if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) { + error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); + } + } + } + /** + * Given a fragment, validate that it can only be provided with fragment props + * @param {ReactElement} fragment + */ + + + function validateFragmentProps(fragment) { + { + var keys = Object.keys(fragment.props); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + + if (key !== 'children' && key !== 'key') { + setCurrentlyValidatingElement$1(fragment); + + error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key); + + setCurrentlyValidatingElement$1(null); + break; + } + } + + if (fragment.ref !== null) { + setCurrentlyValidatingElement$1(fragment); + + error('Invalid attribute `ref` supplied to `React.Fragment`.'); + + setCurrentlyValidatingElement$1(null); + } + } + } + function createElementWithValidation(type, props, children) { + var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to + // succeed and there will likely be errors in render. + + if (!validType) { + var info = ''; + + if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { + info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports."; + } + + var sourceInfo = getSourceInfoErrorAddendumForProps(props); + + if (sourceInfo) { + info += sourceInfo; + } else { + info += getDeclarationErrorAddendum(); + } + + var typeString; + + if (type === null) { + typeString = 'null'; + } else if (isArray(type)) { + typeString = 'array'; + } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) { + typeString = "<" + (getComponentNameFromType(type.type) || 'Unknown') + " />"; + info = ' Did you accidentally export a JSX literal instead of a component?'; + } else { + typeString = typeof type; + } + + { + error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info); + } + } + + var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used. + // TODO: Drop this when these are no longer allowed as the type argument. + + if (element == null) { + return element; + } // Skip key warning if the type isn't valid since our key validation logic + // doesn't expect a non-string/function type and can throw confusing errors. + // We don't want exception behavior to differ between dev and prod. + // (Rendering will throw with a helpful message and as soon as the type is + // fixed, the key warnings will appear.) + + + if (validType) { + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], type); + } + } + + if (type === REACT_FRAGMENT_TYPE) { + validateFragmentProps(element); + } else { + validatePropTypes(element); + } + + return element; + } + var didWarnAboutDeprecatedCreateFactory = false; + function createFactoryWithValidation(type) { + var validatedFactory = createElementWithValidation.bind(null, type); + validatedFactory.type = type; + + { + if (!didWarnAboutDeprecatedCreateFactory) { + didWarnAboutDeprecatedCreateFactory = true; + + warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.'); + } // Legacy hook: remove it + + + Object.defineProperty(validatedFactory, 'type', { + enumerable: false, + get: function () { + warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); + + Object.defineProperty(this, 'type', { + value: type + }); + return type; + } + }); + } + + return validatedFactory; + } + function cloneElementWithValidation(element, props, children) { + var newElement = cloneElement.apply(this, arguments); + + for (var i = 2; i < arguments.length; i++) { + validateChildKeys(arguments[i], newElement.type); + } + + validatePropTypes(newElement); + return newElement; + } + + function startTransition(scope, options) { + var prevTransition = ReactCurrentBatchConfig.transition; + ReactCurrentBatchConfig.transition = {}; + var currentTransition = ReactCurrentBatchConfig.transition; + + { + ReactCurrentBatchConfig.transition._updatedFibers = new Set(); + } + + try { + scope(); + } finally { + ReactCurrentBatchConfig.transition = prevTransition; + + { + if (prevTransition === null && currentTransition._updatedFibers) { + var updatedFibersCount = currentTransition._updatedFibers.size; + + if (updatedFibersCount > 10) { + warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.'); + } + + currentTransition._updatedFibers.clear(); + } + } + } + } + + var didWarnAboutMessageChannel = false; + var enqueueTaskImpl = null; + function enqueueTask(task) { + if (enqueueTaskImpl === null) { + try { + // read require off the module object to get around the bundlers. + // we don't want them to detect a require and bundle a Node polyfill. + var requireString = ('require' + Math.random()).slice(0, 7); + var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's + // version of setImmediate, bypassing fake timers if any. + + enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate; + } catch (_err) { + // we're in a browser + // we can't use regular timers because they may still be faked + // so we try MessageChannel+postMessage instead + enqueueTaskImpl = function (callback) { + { + if (didWarnAboutMessageChannel === false) { + didWarnAboutMessageChannel = true; + + if (typeof MessageChannel === 'undefined') { + error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.'); + } + } + } + + var channel = new MessageChannel(); + channel.port1.onmessage = callback; + channel.port2.postMessage(undefined); + }; + } + } + + return enqueueTaskImpl(task); + } + + var actScopeDepth = 0; + var didWarnNoAwaitAct = false; + function act(callback) { + { + // `act` calls can be nested, so we track the depth. This represents the + // number of `act` scopes on the stack. + var prevActScopeDepth = actScopeDepth; + actScopeDepth++; + + if (ReactCurrentActQueue.current === null) { + // This is the outermost `act` scope. Initialize the queue. The reconciler + // will detect the queue and use it instead of Scheduler. + ReactCurrentActQueue.current = []; + } + + var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy; + var result; + + try { + // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only + // set to `true` while the given callback is executed, not for updates + // triggered during an async event, because this is how the legacy + // implementation of `act` behaved. + ReactCurrentActQueue.isBatchingLegacy = true; + result = callback(); // Replicate behavior of original `act` implementation in legacy mode, + // which flushed updates immediately after the scope function exits, even + // if it's an async function. + + if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) { + var queue = ReactCurrentActQueue.current; + + if (queue !== null) { + ReactCurrentActQueue.didScheduleLegacyUpdate = false; + flushActQueue(queue); + } + } + } catch (error) { + popActScope(prevActScopeDepth); + throw error; + } finally { + ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy; + } + + if (result !== null && typeof result === 'object' && typeof result.then === 'function') { + var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait + // for it to resolve before exiting the current scope. + + var wasAwaited = false; + var thenable = { + then: function (resolve, reject) { + wasAwaited = true; + thenableResult.then(function (returnValue) { + popActScope(prevActScopeDepth); + + if (actScopeDepth === 0) { + // We've exited the outermost act scope. Recursively flush the + // queue until there's no remaining work. + recursivelyFlushAsyncActWork(returnValue, resolve, reject); + } else { + resolve(returnValue); + } + }, function (error) { + // The callback threw an error. + popActScope(prevActScopeDepth); + reject(error); + }); + } + }; + + { + if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') { + // eslint-disable-next-line no-undef + Promise.resolve().then(function () {}).then(function () { + if (!wasAwaited) { + didWarnNoAwaitAct = true; + + error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);'); + } + }); + } + } + + return thenable; + } else { + var returnValue = result; // The callback is not an async function. Exit the current scope + // immediately, without awaiting. + + popActScope(prevActScopeDepth); + + if (actScopeDepth === 0) { + // Exiting the outermost act scope. Flush the queue. + var _queue = ReactCurrentActQueue.current; + + if (_queue !== null) { + flushActQueue(_queue); + ReactCurrentActQueue.current = null; + } // Return a thenable. If the user awaits it, we'll flush again in + // case additional work was scheduled by a microtask. + + + var _thenable = { + then: function (resolve, reject) { + // Confirm we haven't re-entered another `act` scope, in case + // the user does something weird like await the thenable + // multiple times. + if (ReactCurrentActQueue.current === null) { + // Recursively flush the queue until there's no remaining work. + ReactCurrentActQueue.current = []; + recursivelyFlushAsyncActWork(returnValue, resolve, reject); + } else { + resolve(returnValue); + } + } + }; + return _thenable; + } else { + // Since we're inside a nested `act` scope, the returned thenable + // immediately resolves. The outer scope will flush the queue. + var _thenable2 = { + then: function (resolve, reject) { + resolve(returnValue); + } + }; + return _thenable2; + } + } + } + } + + function popActScope(prevActScopeDepth) { + { + if (prevActScopeDepth !== actScopeDepth - 1) { + error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. '); + } + + actScopeDepth = prevActScopeDepth; + } + } + + function recursivelyFlushAsyncActWork(returnValue, resolve, reject) { + { + var queue = ReactCurrentActQueue.current; + + if (queue !== null) { + try { + flushActQueue(queue); + enqueueTask(function () { + if (queue.length === 0) { + // No additional work was scheduled. Finish. + ReactCurrentActQueue.current = null; + resolve(returnValue); + } else { + // Keep flushing work until there's none left. + recursivelyFlushAsyncActWork(returnValue, resolve, reject); + } + }); + } catch (error) { + reject(error); + } + } else { + resolve(returnValue); + } + } + } + + var isFlushing = false; + + function flushActQueue(queue) { + { + if (!isFlushing) { + // Prevent re-entrance. + isFlushing = true; + var i = 0; + + try { + for (; i < queue.length; i++) { + var callback = queue[i]; + + do { + callback = callback(true); + } while (callback !== null); + } + + queue.length = 0; + } catch (error) { + // If something throws, leave the remaining callbacks on the queue. + queue = queue.slice(i + 1); + throw error; + } finally { + isFlushing = false; + } + } + } + } + + var createElement$1 = createElementWithValidation ; + var cloneElement$1 = cloneElementWithValidation ; + var createFactory = createFactoryWithValidation ; + var Children = { + map: mapChildren, + forEach: forEachChildren, + count: countChildren, + toArray: toArray, + only: onlyChild + }; + + exports.Children = Children; + exports.Component = Component; + exports.Fragment = REACT_FRAGMENT_TYPE; + exports.Profiler = REACT_PROFILER_TYPE; + exports.PureComponent = PureComponent; + exports.StrictMode = REACT_STRICT_MODE_TYPE; + exports.Suspense = REACT_SUSPENSE_TYPE; + exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals; + exports.act = act; + exports.cloneElement = cloneElement$1; + exports.createContext = createContext; + exports.createElement = createElement$1; + exports.createFactory = createFactory; + exports.createRef = createRef; + exports.forwardRef = forwardRef; + exports.isValidElement = isValidElement; + exports.lazy = lazy; + exports.memo = memo; + exports.startTransition = startTransition; + exports.unstable_act = act; + exports.useCallback = useCallback; + exports.useContext = useContext; + exports.useDebugValue = useDebugValue; + exports.useDeferredValue = useDeferredValue; + exports.useEffect = useEffect; + exports.useId = useId; + exports.useImperativeHandle = useImperativeHandle; + exports.useInsertionEffect = useInsertionEffect; + exports.useLayoutEffect = useLayoutEffect; + exports.useMemo = useMemo; + exports.useReducer = useReducer; + exports.useRef = useRef; + exports.useState = useState; + exports.useSyncExternalStore = useSyncExternalStore; + exports.useTransition = useTransition; + exports.version = ReactVersion; + /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ + if ( + typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && + typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === + 'function' + ) { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); + } + + })(); + } + } (react_development, react_development.exports)); + return react_development.exports; +} + +if (process.env.NODE_ENV === 'production') { + react.exports = requireReact_production_min(); +} else { + react.exports = requireReact_development(); +} + +var reactExports = react.exports; +var React = /*@__PURE__*/getDefaultExportFromCjs(reactExports); + +var Button = function (props) { + return React.createElement("button", null, props.label); +}; + +export { Button }; +//# sourceMappingURL=index.js.map diff --git a/dist/esm/index.js.map b/dist/esm/index.js.map new file mode 100644 index 0000000..fd2e6c0 --- /dev/null +++ b/dist/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../node_modules/react/cjs/react.production.min.js","../../node_modules/react/cjs/react.development.js","../../node_modules/react/index.js","../../src/components/Button/Button.tsx"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n }\n}\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + \".\" + callerName;\n\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n\n error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n return undefined;\n }\n });\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n\n {\n Object.seal(refObject);\n }\n\n return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n\n var propName; // Original props are copied\n\n var props = assign({}, element.props); // Reserved names are extracted\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n\n }\n }\n\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n if (isArray(mappedChild)) {\n var escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n // eslint-disable-next-line react-internal/safe-string-coercion\n escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var iterableChildren = children;\n\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n var count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n var n = 0;\n mapChildren(children, function () {\n n++; // Don't return anything\n });\n return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, function (child) {\n return child;\n }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('React.Children.only expected to receive a single React element child.');\n }\n\n return children;\n}\n\nfunction createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null,\n // Add these to use same hidden class in VM as ServerContext\n _defaultValue: null,\n _globalName: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context\n }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Consumer;\n }\n },\n displayName: {\n get: function () {\n return context.displayName;\n },\n set: function (displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n\n thenable.then(function (moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function (error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n\n {\n if (moduleObject === undefined) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n }\n }\n\n {\n if (!('default' in moduleObject)) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe\n\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function () {\n return defaultProps;\n },\n set: function (newDefaultProps) {\n error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'defaultProps', {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function () {\n return propTypes;\n },\n set: function (newPropTypes) {\n error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'propTypes', {\n enumerable: true\n });\n }\n }\n });\n }\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n }\n }\n\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n }\n }\n }\n\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher.current;\n\n {\n if (dispatcher === null) {\n error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n }\n } // Will result in a null access error if accessed outside render phase. We\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\nfunction useContext(Context) {\n var dispatcher = resolveDispatcher();\n\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n\n if (realContext.Consumer === Context) {\n error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n\n return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n}\nfunction useTransition() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher$1.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher$1.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n {\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n {\n error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n }\n\n var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n\n warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n } // Legacy hook: remove it\n\n\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n}\n\nfunction startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n\n try {\n scope();\n } finally {\n ReactCurrentBatchConfig.transition = prevTransition;\n\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n\n if (updatedFibersCount > 10) {\n warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n }\n\n currentTransition._updatedFibers.clear();\n }\n }\n }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n if (enqueueTaskImpl === null) {\n try {\n // read require off the module object to get around the bundlers.\n // we don't want them to detect a require and bundle a Node polyfill.\n var requireString = ('require' + Math.random()).slice(0, 7);\n var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n // version of setImmediate, bypassing fake timers if any.\n\n enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n } catch (_err) {\n // we're in a browser\n // we can't use regular timers because they may still be faked\n // so we try MessageChannel+postMessage instead\n enqueueTaskImpl = function (callback) {\n {\n if (didWarnAboutMessageChannel === false) {\n didWarnAboutMessageChannel = true;\n\n if (typeof MessageChannel === 'undefined') {\n error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n }\n }\n }\n\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(undefined);\n };\n }\n }\n\n return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n {\n // `act` calls can be nested, so we track the depth. This represents the\n // number of `act` scopes on the stack.\n var prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n\n if (ReactCurrentActQueue.current === null) {\n // This is the outermost `act` scope. Initialize the queue. The reconciler\n // will detect the queue and use it instead of Scheduler.\n ReactCurrentActQueue.current = [];\n }\n\n var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n var result;\n\n try {\n // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n // set to `true` while the given callback is executed, not for updates\n // triggered during an async event, because this is how the legacy\n // implementation of `act` behaved.\n ReactCurrentActQueue.isBatchingLegacy = true;\n result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n // which flushed updates immediately after the scope function exits, even\n // if it's an async function.\n\n if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n flushActQueue(queue);\n }\n }\n } catch (error) {\n popActScope(prevActScopeDepth);\n throw error;\n } finally {\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n }\n\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n // for it to resolve before exiting the current scope.\n\n var wasAwaited = false;\n var thenable = {\n then: function (resolve, reject) {\n wasAwaited = true;\n thenableResult.then(function (returnValue) {\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // We've exited the outermost act scope. Recursively flush the\n // queue until there's no remaining work.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }, function (error) {\n // The callback threw an error.\n popActScope(prevActScopeDepth);\n reject(error);\n });\n }\n };\n\n {\n if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n // eslint-disable-next-line no-undef\n Promise.resolve().then(function () {}).then(function () {\n if (!wasAwaited) {\n didWarnNoAwaitAct = true;\n\n error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n }\n });\n }\n }\n\n return thenable;\n } else {\n var returnValue = result; // The callback is not an async function. Exit the current scope\n // immediately, without awaiting.\n\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // Exiting the outermost act scope. Flush the queue.\n var _queue = ReactCurrentActQueue.current;\n\n if (_queue !== null) {\n flushActQueue(_queue);\n ReactCurrentActQueue.current = null;\n } // Return a thenable. If the user awaits it, we'll flush again in\n // case additional work was scheduled by a microtask.\n\n\n var _thenable = {\n then: function (resolve, reject) {\n // Confirm we haven't re-entered another `act` scope, in case\n // the user does something weird like await the thenable\n // multiple times.\n if (ReactCurrentActQueue.current === null) {\n // Recursively flush the queue until there's no remaining work.\n ReactCurrentActQueue.current = [];\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }\n };\n return _thenable;\n } else {\n // Since we're inside a nested `act` scope, the returned thenable\n // immediately resolves. The outer scope will flush the queue.\n var _thenable2 = {\n then: function (resolve, reject) {\n resolve(returnValue);\n }\n };\n return _thenable2;\n }\n }\n }\n}\n\nfunction popActScope(prevActScopeDepth) {\n {\n if (prevActScopeDepth !== actScopeDepth - 1) {\n error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n }\n\n actScopeDepth = prevActScopeDepth;\n }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n if (queue.length === 0) {\n // No additional work was scheduled. Finish.\n ReactCurrentActQueue.current = null;\n resolve(returnValue);\n } else {\n // Keep flushing work until there's none left.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n }\n });\n } catch (error) {\n reject(error);\n }\n } else {\n resolve(returnValue);\n }\n }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n {\n if (!isFlushing) {\n // Prevent re-entrance.\n isFlushing = true;\n var i = 0;\n\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n\n do {\n callback = callback(true);\n } while (callback !== null);\n }\n\n queue.length = 0;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n queue = queue.slice(i + 1);\n throw error;\n } finally {\n isFlushing = false;\n }\n }\n }\n}\n\nvar createElement$1 = createElementWithValidation ;\nvar cloneElement$1 = cloneElementWithValidation ;\nvar createFactory = createFactoryWithValidation ;\nvar Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.act = act;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n",null],"names":["reactModule","require$$0","require$$1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AASa,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,OAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3e,CAAA,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;AACtQ,CAAA,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,uHAAuH,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvf,CAAA,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1K,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9a,CAAA,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChX,CAAA,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtf,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iDAAiD,EAAE,iBAAiB,GAAG,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,2EAA2E,CAAC,CAAC,OAAO,CAAC,CAAC;CAC1Z,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AAC7Z,CAAA,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,0DAA0D,CAAC,CAAC,CAAC;AAC1M,CAAA,oBAAA,CAAA,QAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,uEAAuE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAA,CAAA,SAAiB,CAAC,CAAC,CAAC,oBAAA,CAAA,QAAgB,CAAC,CAAC,CAAC,oBAAgB,CAAA,QAAA,CAAC,CAAC,CAAC,oBAAqB,CAAA,aAAA,CAAC,CAAC,CAAC,oBAAkB,CAAA,UAAA,CAAC,CAAC,CAAC,oBAAgB,CAAA,QAAA,CAAC,CAAC,CAAC;AACpc,CAAA,oBAAA,CAAA,kDAA0D,CAAC,CAAC,CAAC,oBAAW,CAAA,GAAA,CAAC,CAAC,CAAC;AAC3E,CAAoB,oBAAA,CAAA,YAAA,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,gFAAgF,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxf,CAAA,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,OAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAA,CAAA,aAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAqB,CAAA,aAAA,CAAC,CAAC,CAAC,kCAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAiB,CAAA,SAAA,CAAC,UAAU,CAAC,OAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAChe,CAAA,oBAAA,CAAA,UAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAA,CAAA,cAAsB,CAAC,CAAC,CAAC,oBAAY,CAAA,IAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAA,CAAA,IAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAA,CAAA,eAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAE,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAC,CAAC,CAAC,CAAC,oBAAoB,CAAA,YAAA,CAAC,CAAC,CAAC,gCAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAkB,CAAA,UAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7f,CAAqB,oBAAA,CAAA,aAAA,CAAC,UAAU,EAAE,CAAC,oBAAA,CAAA,gBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAiB,CAAA,SAAA,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAa,CAAA,KAAA,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,oBAAA,CAAA,mBAA2B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAA,CAAA,kBAA0B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAuB,CAAA,eAAA,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3d,CAAe,oBAAA,CAAA,OAAA,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAkB,CAAA,UAAA,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAc,CAAA,MAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAgB,CAAA,QAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAA,CAAA,oBAA4B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAA,CAAA,aAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,oBAAe,CAAA,OAAA,CAAC,QAAQ,CAAA;;;;;;;;;;;;;;;;;;;;;;;ACd5a;AACA,EAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC3C,IAAE,CAAC,WAAW;AAGd;AACA;AACA,EAAA;IACE,OAAO,8BAA8B,KAAK,WAAW;IACrD,OAAO,8BAA8B,CAAC,2BAA2B;AACnE,MAAI,UAAU;IACZ;IACA,8BAA8B,CAAC,2BAA2B,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;GACzE;AACD,YAAU,IAAI,YAAY,GAAG,QAAQ,CAAC;AACtC;AACA;AACA;AACA;AACA;EACA,IAAI,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;EACrD,IAAI,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;EACnD,IAAI,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;EACvD,IAAI,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;EAC7D,IAAI,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;EACvD,IAAI,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;EACvD,IAAI,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;EACrD,IAAI,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;EAC7D,IAAI,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;EACvD,IAAI,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;EACjE,IAAI,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;EAC/C,IAAI,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;EAC/C,IAAI,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACzD,EAAA,IAAI,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC;EAC5C,IAAI,oBAAoB,GAAG,YAAY,CAAC;EACxC,SAAS,aAAa,CAAC,aAAa,EAAE;IACpC,IAAI,aAAa,KAAK,IAAI,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;MAC/D,OAAO,IAAI,CAAC;KACb;AACH;AACA,IAAE,IAAI,aAAa,GAAG,qBAAqB,IAAI,aAAa,CAAC,qBAAqB,CAAC,IAAI,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAC3H;AACA,IAAE,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE;MACvC,OAAO,aAAa,CAAC;KACtB;AACH;IACE,OAAO,IAAI,CAAC;GACb;AACD;AACA;AACA;AACA;AACA,EAAA,IAAI,sBAAsB,GAAG;AAC7B;AACA;AACA;AACA;IACE,OAAO,EAAE,IAAI;AACf,GAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,EAAA,IAAI,uBAAuB,GAAG;IAC5B,UAAU,EAAE,IAAI;AAClB,GAAC,CAAC;AACF;AACA,EAAA,IAAI,oBAAoB,GAAG;IACzB,OAAO,EAAE,IAAI;AACf;IACE,gBAAgB,EAAE,KAAK;IACvB,uBAAuB,EAAE,KAAK;AAChC,GAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,IAAI,iBAAiB,GAAG;AACxB;AACA;AACA;AACA;IACE,OAAO,EAAE,IAAI;AACf,GAAC,CAAC;AACF;EACA,IAAI,sBAAsB,GAAG,EAAE,CAAC;EAChC,IAAI,sBAAsB,GAAG,IAAI,CAAC;EAClC,SAAS,kBAAkB,CAAC,KAAK,EAAE;IACjC;MACE,sBAAsB,GAAG,KAAK,CAAC;KAChC;GACF;AACD;AACA,EAAA;AACA,IAAE,sBAAsB,CAAC,kBAAkB,GAAG,UAAU,KAAK,EAAE;MAC3D;QACE,sBAAsB,GAAG,KAAK,CAAC;OAChC;AACL,KAAG,CAAC;AACJ;AACA;AACA,IAAE,sBAAsB,CAAC,eAAe,GAAG,IAAI,CAAC;AAChD;AACA,IAAE,sBAAsB,CAAC,gBAAgB,GAAG,YAAY;AACxD,MAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB;MACI,IAAI,sBAAsB,EAAE;QAC1B,KAAK,IAAI,sBAAsB,CAAC;OACjC;AACL;AACA;AACA,MAAI,IAAI,IAAI,GAAG,sBAAsB,CAAC,eAAe,CAAC;AACtD;MACI,IAAI,IAAI,EAAE;AACd,QAAM,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;OACvB;AACL;MACI,OAAO,KAAK,CAAC;AACjB,KAAG,CAAC;GACH;AACD;AACA;AACA;EACA,IAAI,cAAc,GAAG,KAAK,CAAC;EAC3B,IAAI,kBAAkB,GAAG,KAAK,CAAC;EAC/B,IAAI,uBAAuB,GAAG,KAAK,CAAC;AACpC;EACA,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B;AACA;AACA;EACA,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B;AACA,EAAA,IAAI,oBAAoB,GAAG;IACzB,sBAAsB,EAAE,sBAAsB;IAC9C,uBAAuB,EAAE,uBAAuB;IAChD,iBAAiB,EAAE,iBAAiB;AACtC,GAAC,CAAC;AACF;AACA,EAAA;AACA,IAAE,oBAAoB,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;AACvE,IAAE,oBAAoB,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;GAClE;AACD;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,IAAI,CAAC,MAAM,EAAE;IACpB;MACE;AACJ,QAAM,KAAK,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE;UAC1G,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;SAClC;AACP;QACM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;OACpC;KACF;GACF;EACD,SAAS,KAAK,CAAC,MAAM,EAAE;IACrB;MACE;AACJ,QAAM,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE;UACjH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;SACpC;AACP;QACM,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;OACrC;KACF;GACF;AACD;AACA,EAAA,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;AAC3C;AACA;IACE;AACF,MAAI,IAAI,sBAAsB,GAAG,oBAAoB,CAAC,sBAAsB,CAAC;AAC7E,MAAI,IAAI,KAAK,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,CAAC;AAC1D;AACA,MAAI,IAAI,KAAK,KAAK,EAAE,EAAE;QAChB,MAAM,IAAI,IAAI,CAAC;QACf,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;OAC7B;AACL;AACA;MACI,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;AAClD,QAAM,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,OAAK,CAAC,CAAC;AACP;MACI,cAAc,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;AACjD;AACA;AACA;AACA,MAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;KACxE;GACF;AACD;EACA,IAAI,uCAAuC,GAAG,EAAE,CAAC;AACjD;AACA,EAAA,SAAS,QAAQ,CAAC,cAAc,EAAE,UAAU,EAAE;IAC5C;AACF,MAAI,IAAI,YAAY,GAAG,cAAc,CAAC,WAAW,CAAC;AAClD,MAAI,IAAI,aAAa,GAAG,YAAY,KAAK,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;MACpG,IAAI,UAAU,GAAG,aAAa,GAAG,GAAG,GAAG,UAAU,CAAC;AACtD;AACA,MAAI,IAAI,uCAAuC,CAAC,UAAU,CAAC,EAAE;AAC7D,QAAM,OAAO;OACR;AACL;AACA,MAAI,KAAK,CAAC,wDAAwD,GAAG,oEAAoE,GAAG,qEAAqE,GAAG,4DAA4D,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC7S;AACA,MAAI,uCAAuC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;KAC5D;GACF;AACD;AACA;AACA;AACA;AACA;AACA,EAAA,IAAI,oBAAoB,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAE,SAAS,EAAE,UAAU,cAAc,EAAE;MACnC,OAAO,KAAK,CAAC;KACd;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACE,kBAAkB,EAAE,UAAU,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE;AACtE,MAAI,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;KACzC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACE,mBAAmB,EAAE,UAAU,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE;AACtF,MAAI,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;KAC1C;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACE,eAAe,EAAE,UAAU,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE;AACjF,MAAI,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;KACtC;AACH,GAAC,CAAC;AACF;AACA,EAAA,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B;EACA,IAAI,WAAW,GAAG,EAAE,CAAC;AACrB;AACA,EAAA;AACA,IAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;GAC5B;AACD;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AAC5C,IAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,IAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB;AACA,IAAE,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;AAC1B;AACA;AACA,IAAE,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,oBAAoB,CAAC;GAChD;AACD;AACA,EAAA,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,YAAY,EAAE,QAAQ,EAAE;AACjE,IAAE,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,OAAO,YAAY,KAAK,UAAU,IAAI,YAAY,IAAI,IAAI,EAAE;MAClG,MAAM,IAAI,KAAK,CAAC,mEAAmE,GAAG,sDAAsD,CAAC,CAAC;KAC/I;AACH;AACA,IAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACzE,GAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,QAAQ,EAAE;AACtD,IAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACjE,GAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;IACE,IAAI,cAAc,GAAG;MACnB,SAAS,EAAE,CAAC,WAAW,EAAE,uEAAuE,GAAG,+CAA+C,CAAC;MACnJ,YAAY,EAAE,CAAC,cAAc,EAAE,kDAAkD,GAAG,iDAAiD,CAAC;AAC1I,KAAG,CAAC;AACJ;AACA,IAAE,IAAI,wBAAwB,GAAG,UAAU,UAAU,EAAE,IAAI,EAAE;MACzD,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE;QACrD,GAAG,EAAE,YAAY;AACvB,UAAQ,IAAI,CAAC,6DAA6D,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F;UACQ,OAAO,SAAS,CAAC;SAClB;AACP,OAAK,CAAC,CAAC;AACP,KAAG,CAAC;AACJ;AACA,IAAE,KAAK,IAAI,MAAM,IAAI,cAAc,EAAE;AACrC,MAAI,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;QACzC,wBAAwB,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;OAC1D;KACF;GACF;AACD;EACA,SAAS,cAAc,GAAG,EAAE;AAC5B;AACA,EAAA,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC/C;AACA;AACA;AACA;AACA,EAAA,SAAS,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AAChD,IAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,IAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB;AACA,IAAE,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;AAC1B,IAAE,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,oBAAoB,CAAC;GAChD;AACD;EACA,IAAI,sBAAsB,GAAG,aAAa,CAAC,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;AAC5E,EAAA,sBAAsB,CAAC,WAAW,GAAG,aAAa,CAAC;AACnD;AACA,EAAA,MAAM,CAAC,sBAAsB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AACpD,EAAA,sBAAsB,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACnD;AACA;AACA,EAAA,SAAS,SAAS,GAAG;IACnB,IAAI,SAAS,GAAG;MACd,OAAO,EAAE,IAAI;AACjB,KAAG,CAAC;AACJ;IACE;AACF,MAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACxB;AACH;IACE,OAAO,SAAS,CAAC;GAClB;AACD;AACA,EAAA,IAAI,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;AAChC;EACA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,IAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;GACvB;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,QAAQ,CAAC,KAAK,EAAE;IACvB;AACF;MACI,IAAI,cAAc,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,WAAW,CAAC;AAC5E,MAAI,IAAI,IAAI,GAAG,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC;MAC7F,OAAO,IAAI,CAAC;KACb;GACF;AACD;AACA;EACA,SAAS,iBAAiB,CAAC,KAAK,EAAE;IAChC;AACF,MAAI,IAAI;AACR,QAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;OACd,CAAC,OAAO,CAAC,EAAE;QACV,OAAO,IAAI,CAAC;OACb;KACF;GACF;AACD;EACA,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAE,OAAO,EAAE,GAAG,KAAK,CAAC;GACnB;EACD,SAAS,sBAAsB,CAAC,KAAK,EAAE;IACrC;AACF,MAAI,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;QAC5B,KAAK,CAAC,6CAA6C,GAAG,sEAAsE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACrJ;AACA,QAAM,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;OAClC;KACF;GACF;AACD;AACA,EAAA,SAAS,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE;AAC3D,IAAE,IAAI,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;AAC1C;IACE,IAAI,WAAW,EAAE;MACf,OAAO,WAAW,CAAC;KACpB;AACH;AACA,IAAE,IAAI,YAAY,GAAG,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;AACnE,IAAE,OAAO,YAAY,KAAK,EAAE,GAAG,WAAW,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,GAAG,WAAW,CAAC;GACnF;AACD;AACA;EACA,SAAS,cAAc,CAAC,IAAI,EAAE;AAC9B,IAAE,OAAO,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;GACtC;AACD;AACA;EACA,SAAS,wBAAwB,CAAC,IAAI,EAAE;AACxC,IAAE,IAAI,IAAI,IAAI,IAAI,EAAE;AACpB;MACI,OAAO,IAAI,CAAC;KACb;AACH;IACE;AACF,MAAI,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE;AACtC,QAAM,KAAK,CAAC,+DAA+D,GAAG,sDAAsD,CAAC,CAAC;OACjI;KACF;AACH;AACA,IAAE,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;MAC9B,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;KAC9C;AACH;AACA,IAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;MAC5B,OAAO,IAAI,CAAC;KACb;AACH;AACA,IAAE,QAAQ,IAAI;AACd,MAAI,KAAK,mBAAmB;QACtB,OAAO,UAAU,CAAC;AACxB;AACA,MAAI,KAAK,iBAAiB;QACpB,OAAO,QAAQ,CAAC;AACtB;AACA,MAAI,KAAK,mBAAmB;QACtB,OAAO,UAAU,CAAC;AACxB;AACA,MAAI,KAAK,sBAAsB;QACzB,OAAO,YAAY,CAAC;AAC1B;AACA,MAAI,KAAK,mBAAmB;QACtB,OAAO,UAAU,CAAC;AACxB;AACA,MAAI,KAAK,wBAAwB;QAC3B,OAAO,cAAc,CAAC;AAC5B;KACG;AACH;AACA,IAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;MAC5B,QAAQ,IAAI,CAAC,QAAQ;AACzB,QAAM,KAAK,kBAAkB;AAC7B,UAAQ,IAAI,OAAO,GAAG,IAAI,CAAC;AAC3B,UAAQ,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC;AACrD;AACA,QAAM,KAAK,mBAAmB;AAC9B,UAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC;UACpB,OAAO,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;AAC/D;AACA,QAAM,KAAK,sBAAsB;UACzB,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC/D;AACA,QAAM,KAAK,eAAe;UAClB,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;AACjD;AACA,UAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;YACtB,OAAO,SAAS,CAAC;WAClB;AACT;UACQ,OAAO,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;AAC7D;AACA,QAAM,KAAK,eAAe;UAClB;AACR,YAAU,IAAI,aAAa,GAAG,IAAI,CAAC;AACnC,YAAU,IAAI,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC;AAC/C,YAAU,IAAI,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC;AACzC;AACA,YAAU,IAAI;cACF,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;aAChD,CAAC,OAAO,CAAC,EAAE;cACV,OAAO,IAAI,CAAC;aACb;WACF;AACT;AACA;OACK;KACF;AACH;IACE,OAAO,IAAI,CAAC;GACb;AACD;AACA,EAAA,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACrD;AACA,EAAA,IAAI,cAAc,GAAG;IACnB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,IAAI;AAChB,GAAC,CAAC;AACF,EAAA,IAAI,0BAA0B,EAAE,0BAA0B,EAAE,sBAAsB,CAAC;AACnF;AACA,EAAA;IACE,sBAAsB,GAAG,EAAE,CAAC;GAC7B;AACD;EACA,SAAS,WAAW,CAAC,MAAM,EAAE;IAC3B;MACE,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AAC5C,QAAM,IAAI,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;AACtE;AACA,QAAM,IAAI,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;UACnC,OAAO,KAAK,CAAC;SACd;OACF;KACF;AACH;AACA,IAAE,OAAO,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC;GACjC;AACD;EACA,SAAS,WAAW,CAAC,MAAM,EAAE;IAC3B;MACE,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AAC5C,QAAM,IAAI,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;AACtE;AACA,QAAM,IAAI,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;UACnC,OAAO,KAAK,CAAC;SACd;OACF;KACF;AACH;AACA,IAAE,OAAO,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC;GACjC;AACD;AACA,EAAA,SAAS,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE;IACtD,IAAI,qBAAqB,GAAG,YAAY;MACtC;QACE,IAAI,CAAC,0BAA0B,EAAE;UAC/B,0BAA0B,GAAG,IAAI,CAAC;AAC1C;AACA,UAAQ,KAAK,CAAC,2DAA2D,GAAG,gEAAgE,GAAG,sEAAsE,GAAG,gDAAgD,EAAE,WAAW,CAAC,CAAC;SAChR;OACF;AACL,KAAG,CAAC;AACJ;AACA,IAAE,qBAAqB,CAAC,cAAc,GAAG,IAAI,CAAC;AAC9C,IAAE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE;MAClC,GAAG,EAAE,qBAAqB;MAC1B,YAAY,EAAE,IAAI;AACtB,KAAG,CAAC,CAAC;GACJ;AACD;AACA,EAAA,SAAS,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE;IACtD,IAAI,qBAAqB,GAAG,YAAY;MACtC;QACE,IAAI,CAAC,0BAA0B,EAAE;UAC/B,0BAA0B,GAAG,IAAI,CAAC;AAC1C;AACA,UAAQ,KAAK,CAAC,2DAA2D,GAAG,gEAAgE,GAAG,sEAAsE,GAAG,gDAAgD,EAAE,WAAW,CAAC,CAAC;SAChR;OACF;AACL,KAAG,CAAC;AACJ;AACA,IAAE,qBAAqB,CAAC,cAAc,GAAG,IAAI,CAAC;AAC9C,IAAE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE;MAClC,GAAG,EAAE,qBAAqB;MAC1B,YAAY,EAAE,IAAI;AACtB,KAAG,CAAC,CAAC;GACJ;AACD;EACA,SAAS,oCAAoC,CAAC,MAAM,EAAE;IACpD;MACE,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,iBAAiB,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,EAAE;QACzI,IAAI,aAAa,GAAG,wBAAwB,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnF;AACA,QAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,EAAE;UAC1C,KAAK,CAAC,+CAA+C,GAAG,qEAAqE,GAAG,oEAAoE,GAAG,iFAAiF,GAAG,2CAA2C,GAAG,iDAAiD,EAAE,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/Z;AACA,UAAQ,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;SAC9C;OACF;KACF;GACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,IAAI,YAAY,GAAG,UAAU,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;IACvE,IAAI,OAAO,GAAG;AAChB;MACI,QAAQ,EAAE,kBAAkB;AAChC;MACI,IAAI,EAAE,IAAI;MACV,GAAG,EAAE,GAAG;MACR,GAAG,EAAE,GAAG;MACR,KAAK,EAAE,KAAK;AAChB;MACI,MAAM,EAAE,KAAK;AACjB,KAAG,CAAC;AACJ;IACE;AACF;AACA;AACA;AACA;AACA,MAAI,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AACxB;AACA;AACA;AACA;MACI,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE;QACjD,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,KAAK;AAClB,OAAK,CAAC,CAAC;AACP;AACA,MAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;QACtC,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,IAAI;AACjB,OAAK,CAAC,CAAC;AACP;AACA;AACA,MAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;QACxC,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,MAAM;AACnB,OAAK,CAAC,CAAC;AACP;AACA,MAAI,IAAI,MAAM,CAAC,MAAM,EAAE;QACjB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnC,QAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;OACxB;KACF;AACH;IACE,OAAO,OAAO,CAAC;AACjB,GAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;IAC7C,IAAI,QAAQ,CAAC;AACf;AACA,IAAE,IAAI,KAAK,GAAG,EAAE,CAAC;AACjB,IAAE,IAAI,GAAG,GAAG,IAAI,CAAC;AACjB,IAAE,IAAI,GAAG,GAAG,IAAI,CAAC;AACjB,IAAE,IAAI,IAAI,GAAG,IAAI,CAAC;AAClB,IAAE,IAAI,MAAM,GAAG,IAAI,CAAC;AACpB;AACA,IAAE,IAAI,MAAM,IAAI,IAAI,EAAE;AACtB,MAAI,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACvB;QACM;AACN,UAAQ,oCAAoC,CAAC,MAAM,CAAC,CAAC;SAC9C;OACF;AACL;AACA,MAAI,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;QACvB;AACN,UAAQ,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACpC;AACP;AACA,QAAM,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC;OACvB;AACL;AACA,MAAI,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9D,MAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;AACpE;AACA,MAAI,KAAK,QAAQ,IAAI,MAAM,EAAE;AAC7B,QAAM,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;UACrF,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;SACpC;OACF;KACF;AACH;AACA;AACA;IACE,IAAI,cAAc,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5C;AACA,IAAE,IAAI,cAAc,KAAK,CAAC,EAAE;AAC5B,MAAI,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC9B,KAAG,MAAM,IAAI,cAAc,GAAG,CAAC,EAAE;AACjC,MAAI,IAAI,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;AAC3C;AACA,MAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;QACvC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OAClC;AACL;MACI;AACJ,QAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,UAAQ,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC3B;OACF;AACL;AACA,MAAI,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC7B;AACH;AACA;AACA,IAAE,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AACjC,MAAI,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACzC;AACA,MAAI,KAAK,QAAQ,IAAI,YAAY,EAAE;AACnC,QAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE;UACjC,KAAK,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;SAC1C;OACF;KACF;AACH;IACE;AACF,MAAI,IAAI,GAAG,IAAI,GAAG,EAAE;AACpB,QAAM,IAAI,WAAW,GAAG,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC;AACvG;QACM,IAAI,GAAG,EAAE;AACf,UAAQ,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;SAChD;AACP;QACM,IAAI,GAAG,EAAE;AACf,UAAQ,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;SAChD;OACF;KACF;AACH;AACA,IAAE,OAAO,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACrF;AACD,EAAA,SAAS,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE;AAChD,IAAE,IAAI,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClJ,OAAO,UAAU,CAAC;GACnB;AACD;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;IAC/C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE;MAC7C,MAAM,IAAI,KAAK,CAAC,gFAAgF,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;KACnH;AACH;IACE,IAAI,QAAQ,CAAC;AACf;IACE,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACxC;AACA,IAAE,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACxB,IAAE,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACxB;AACA,IAAE,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;AAC3B;AACA;AACA;AACA,IAAE,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B;AACA,IAAE,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B;AACA,IAAE,IAAI,MAAM,IAAI,IAAI,EAAE;AACtB,MAAI,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AAC7B;AACA,QAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACvB,QAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC;OACnC;AACL;AACA,MAAI,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;QACvB;AACN,UAAQ,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACpC;AACP;AACA,QAAM,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC;OACvB;AACL;AACA;MACI,IAAI,YAAY,CAAC;AACrB;MACI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;AACnD,QAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;OAC1C;AACL;AACA,MAAI,KAAK,QAAQ,IAAI,MAAM,EAAE;AAC7B,QAAM,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;UACrF,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;AAC1E;YACU,KAAK,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AACnD,WAAS,MAAM;YACL,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;WACpC;SACF;OACF;KACF;AACH;AACA;AACA;IACE,IAAI,cAAc,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5C;AACA,IAAE,IAAI,cAAc,KAAK,CAAC,EAAE;AAC5B,MAAI,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC9B,KAAG,MAAM,IAAI,cAAc,GAAG,CAAC,EAAE;AACjC,MAAI,IAAI,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;AAC3C;AACA,MAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;QACvC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OAClC;AACL;AACA,MAAI,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC7B;AACH;AACA,IAAE,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;GACzE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,cAAc,CAAC,MAAM,EAAE;AAChC,IAAE,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,kBAAkB,CAAC;GAChG;AACD;EACA,IAAI,SAAS,GAAG,GAAG,CAAC;EACpB,IAAI,YAAY,GAAG,GAAG,CAAC;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,MAAM,CAAC,GAAG,EAAE;AACrB,IAAE,IAAI,WAAW,GAAG,OAAO,CAAC;IAC1B,IAAI,aAAa,GAAG;MAClB,GAAG,EAAE,IAAI;MACT,GAAG,EAAE,IAAI;AACb,KAAG,CAAC;IACF,IAAI,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,KAAK,EAAE;AAChE,MAAI,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,KAAG,CAAC,CAAC;AACL,IAAE,OAAO,GAAG,GAAG,aAAa,CAAC;GAC5B;AACD;AACA;AACA;AACA;AACA;AACA;EACA,IAAI,gBAAgB,GAAG,KAAK,CAAC;EAC7B,IAAI,0BAA0B,GAAG,MAAM,CAAC;AACxC;EACA,SAAS,qBAAqB,CAAC,IAAI,EAAE;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;GACxD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE;AACvC;AACA;AACA,IAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE;AAC9E;MACI;AACJ,QAAM,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;OACrC;AACL;MACI,OAAO,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;KACjC;AACH;AACA;AACA,IAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;GAC3B;AACD;EACA,SAAS,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE;AAC3E,IAAE,IAAI,IAAI,GAAG,OAAO,QAAQ,CAAC;AAC7B;IACE,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,EAAE;AAClD;MACI,QAAQ,GAAG,IAAI,CAAC;KACjB;AACH;AACA,IAAE,IAAI,cAAc,GAAG,KAAK,CAAC;AAC7B;AACA,IAAE,IAAI,QAAQ,KAAK,IAAI,EAAE;MACrB,cAAc,GAAG,IAAI,CAAC;AAC1B,KAAG,MAAM;AACT,MAAI,QAAQ,IAAI;QACV,KAAK,QAAQ,CAAC;AACpB,QAAM,KAAK,QAAQ;UACX,cAAc,GAAG,IAAI,CAAC;AAC9B,UAAQ,MAAM;AACd;AACA,QAAM,KAAK,QAAQ;UACX,QAAQ,QAAQ,CAAC,QAAQ;YACvB,KAAK,kBAAkB,CAAC;AAClC,YAAU,KAAK,iBAAiB;cACpB,cAAc,GAAG,IAAI,CAAC;WACzB;AACT;OACK;KACF;AACH;IACE,IAAI,cAAc,EAAE;AACtB,MAAI,IAAI,MAAM,GAAG,QAAQ,CAAC;AAC1B,MAAI,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvC;AACA;AACA,MAAI,IAAI,QAAQ,GAAG,SAAS,KAAK,EAAE,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;AACvF;AACA,MAAI,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;AAC9B,QAAM,IAAI,eAAe,GAAG,EAAE,CAAC;AAC/B;AACA,QAAM,IAAI,QAAQ,IAAI,IAAI,EAAE;UACpB,eAAe,GAAG,qBAAqB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;SACzD;AACP;AACA,QAAM,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE;UACjE,OAAO,CAAC,CAAC;AACjB,SAAO,CAAC,CAAC;AACT,OAAK,MAAM,IAAI,WAAW,IAAI,IAAI,EAAE;AACpC,QAAM,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE;UAC/B;AACR;AACA;AACA;AACA,YAAU,IAAI,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE;AAC9E,cAAY,sBAAsB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aACzC;WACF;AACT;AACA,UAAQ,WAAW,GAAG,kBAAkB,CAAC,WAAW;AACpD;AACA,UAAQ,aAAa;AACrB,UAAQ,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC;AACtE;AACA,UAAQ,qBAAqB,CAAC,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;SACrE;AACP;AACA,QAAM,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;OACzB;AACL;MACI,OAAO,CAAC,CAAC;KACV;AACH;IACE,IAAI,KAAK,CAAC;IACV,IAAI,QAAQ,CAAC;AACf,IAAE,IAAI,YAAY,GAAG,CAAC,CAAC;AACvB;AACA,IAAE,IAAI,cAAc,GAAG,SAAS,KAAK,EAAE,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;AAC/E;AACA,IAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AACzB,MAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,QAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpB,QAAQ,GAAG,cAAc,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1D,QAAM,YAAY,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;OAC/E;AACL,KAAG,MAAM;AACT,MAAI,IAAI,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC7C;AACA,MAAI,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;AAC1C,QAAM,IAAI,gBAAgB,GAAG,QAAQ,CAAC;AACtC;QACM;AACN;AACA,UAAQ,IAAI,UAAU,KAAK,gBAAgB,CAAC,OAAO,EAAE;YAC3C,IAAI,CAAC,gBAAgB,EAAE;AACjC,cAAY,IAAI,CAAC,2CAA2C,GAAG,8CAA8C,CAAC,CAAC;aACpG;AACX;YACU,gBAAgB,GAAG,IAAI,CAAC;WACzB;SACF;AACP;QACM,IAAI,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC;AACf,QAAM,IAAI,EAAE,GAAG,CAAC,CAAC;AACjB;QACM,OAAO,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;AAC7C,UAAQ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;UACnB,QAAQ,GAAG,cAAc,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/D,UAAQ,YAAY,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;SAC/E;AACP,OAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;AAClC;AACA,QAAM,IAAI,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5C,QAAM,MAAM,IAAI,KAAK,CAAC,iDAAiD,IAAI,cAAc,KAAK,iBAAiB,GAAG,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,cAAc,CAAC,GAAG,KAAK,GAAG,gEAAgE,GAAG,UAAU,CAAC,CAAC;OACtR;KACF;AACH;IACE,OAAO,YAAY,CAAC;GACrB;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AAC9C,IAAE,IAAI,QAAQ,IAAI,IAAI,EAAE;MACpB,OAAO,QAAQ,CAAC;KACjB;AACH;AACA,IAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB,IAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,IAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,KAAK,EAAE;AAC1D,MAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9C,KAAG,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;GACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,aAAa,CAAC,QAAQ,EAAE;AACjC,IAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ,IAAE,WAAW,CAAC,QAAQ,EAAE,YAAY;MAChC,CAAC,EAAE,CAAC;AACR,KAAG,CAAC,CAAC;IACH,OAAO,CAAC,CAAC;GACV;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;AAChE,IAAE,WAAW,CAAC,QAAQ,EAAE,YAAY;MAChC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACpC,EAAE,cAAc,CAAC,CAAC;GACpB;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,OAAO,CAAC,QAAQ,EAAE;AAC3B,IAAE,OAAO,WAAW,CAAC,QAAQ,EAAE,UAAU,KAAK,EAAE;MAC5C,OAAO,KAAK,CAAC;KACd,CAAC,IAAI,EAAE,CAAC;GACV;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,SAAS,CAAC,QAAQ,EAAE;AAC7B,IAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACjC,MAAI,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;KAC1F;AACH;IACE,OAAO,QAAQ,CAAC;GACjB;AACD;EACA,SAAS,aAAa,CAAC,YAAY,EAAE;AACrC;AACA;IACE,IAAI,OAAO,GAAG;MACZ,QAAQ,EAAE,kBAAkB;AAChC;AACA;AACA;AACA;AACA;MACI,aAAa,EAAE,YAAY;MAC3B,cAAc,EAAE,YAAY;AAChC;AACA;MACI,YAAY,EAAE,CAAC;AACnB;MACI,QAAQ,EAAE,IAAI;MACd,QAAQ,EAAE,IAAI;AAClB;MACI,aAAa,EAAE,IAAI;MACnB,WAAW,EAAE,IAAI;AACrB,KAAG,CAAC;IACF,OAAO,CAAC,QAAQ,GAAG;MACjB,QAAQ,EAAE,mBAAmB;MAC7B,QAAQ,EAAE,OAAO;AACrB,KAAG,CAAC;AACJ,IAAE,IAAI,yCAAyC,GAAG,KAAK,CAAC;AACxD,IAAE,IAAI,mCAAmC,GAAG,KAAK,CAAC;AAClD,IAAE,IAAI,mCAAmC,GAAG,KAAK,CAAC;AAClD;IACE;AACF;AACA;AACA;MACI,IAAI,QAAQ,GAAG;QACb,QAAQ,EAAE,kBAAkB;QAC5B,QAAQ,EAAE,OAAO;AACvB,OAAK,CAAC;AACN;AACA,MAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AACtC,QAAM,QAAQ,EAAE;UACR,GAAG,EAAE,YAAY;YACf,IAAI,CAAC,mCAAmC,EAAE;cACxC,mCAAmC,GAAG,IAAI,CAAC;AACvD;AACA,cAAY,KAAK,CAAC,gFAAgF,GAAG,4EAA4E,CAAC,CAAC;aACxK;AACX;AACA,YAAU,OAAO,OAAO,CAAC,QAAQ,CAAC;WACzB;AACT,UAAQ,GAAG,EAAE,UAAU,SAAS,EAAE;AAClC,YAAU,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;WAC9B;SACF;AACP,QAAM,aAAa,EAAE;UACb,GAAG,EAAE,YAAY;AACzB,YAAU,OAAO,OAAO,CAAC,aAAa,CAAC;WAC9B;AACT,UAAQ,GAAG,EAAE,UAAU,aAAa,EAAE;AACtC,YAAU,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;WACvC;SACF;AACP,QAAM,cAAc,EAAE;UACd,GAAG,EAAE,YAAY;AACzB,YAAU,OAAO,OAAO,CAAC,cAAc,CAAC;WAC/B;AACT,UAAQ,GAAG,EAAE,UAAU,cAAc,EAAE;AACvC,YAAU,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC;WACzC;SACF;AACP,QAAM,YAAY,EAAE;UACZ,GAAG,EAAE,YAAY;AACzB,YAAU,OAAO,OAAO,CAAC,YAAY,CAAC;WAC7B;AACT,UAAQ,GAAG,EAAE,UAAU,YAAY,EAAE;AACrC,YAAU,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;WACrC;SACF;AACP,QAAM,QAAQ,EAAE;UACR,GAAG,EAAE,YAAY;YACf,IAAI,CAAC,yCAAyC,EAAE;cAC9C,yCAAyC,GAAG,IAAI,CAAC;AAC7D;AACA,cAAY,KAAK,CAAC,gFAAgF,GAAG,4EAA4E,CAAC,CAAC;aACxK;AACX;AACA,YAAU,OAAO,OAAO,CAAC,QAAQ,CAAC;WACzB;SACF;AACP,QAAM,WAAW,EAAE;UACX,GAAG,EAAE,YAAY;AACzB,YAAU,OAAO,OAAO,CAAC,WAAW,CAAC;WAC5B;AACT,UAAQ,GAAG,EAAE,UAAU,WAAW,EAAE;YAC1B,IAAI,CAAC,mCAAmC,EAAE;cACxC,IAAI,CAAC,2DAA2D,GAAG,4EAA4E,EAAE,WAAW,CAAC,CAAC;AAC1K;cACY,mCAAmC,GAAG,IAAI,CAAC;aAC5C;WACF;SACF;AACP,OAAK,CAAC,CAAC;AACP;AACA,MAAI,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC7B;AACH;IACE;AACF,MAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACpC,MAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;KAClC;AACH;IACE,OAAO,OAAO,CAAC;GAChB;AACD;AACA,EAAA,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;EACvB,IAAI,OAAO,GAAG,CAAC,CAAC;EAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;EACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB;EACA,SAAS,eAAe,CAAC,OAAO,EAAE;AAClC,IAAE,IAAI,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE;AACzC,MAAI,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B,MAAI,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA,MAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,YAAY,EAAE;AAC1C,QAAM,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE;AAC5E;AACA,UAAQ,IAAI,QAAQ,GAAG,OAAO,CAAC;AAC/B,UAAQ,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC;AACpC,UAAQ,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC;SACjC;OACF,EAAE,UAAU,KAAK,EAAE;AACxB,QAAM,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE;AAC5E;AACA,UAAQ,IAAI,QAAQ,GAAG,OAAO,CAAC;AAC/B,UAAQ,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC;AACpC,UAAQ,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;SAC1B;AACP,OAAK,CAAC,CAAC;AACP;AACA,MAAI,IAAI,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE;AAC3C;AACA;AACA,QAAM,IAAI,OAAO,GAAG,OAAO,CAAC;AAC5B,QAAM,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;AAChC,QAAM,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC;OAC5B;KACF;AACH;AACA,IAAE,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;AACpC,MAAI,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;AACvC;MACI;AACJ,QAAM,IAAI,YAAY,KAAK,SAAS,EAAE;AACtC,UAAQ,KAAK,CAAC,4CAA4C,GAAG,cAAc,GAAG,0DAA0D;UAChI,oCAAoC,GAAG,2BAA2B,GAAG,0DAA0D,EAAE,YAAY,CAAC,CAAC;SAChJ;OACF;AACL;MACI;AACJ,QAAM,IAAI,EAAE,SAAS,IAAI,YAAY,CAAC,EAAE;AACxC,UAAQ,KAAK,CAAC,4CAA4C,GAAG,cAAc,GAAG,0DAA0D;AACxI,UAAQ,oCAAoC,GAAG,uBAAuB,EAAE,YAAY,CAAC,CAAC;SAC/E;OACF;AACL;AACA,MAAI,OAAO,YAAY,CAAC,OAAO,CAAC;AAChC,KAAG,MAAM;AACT,MAAI,MAAM,OAAO,CAAC,OAAO,CAAC;KACvB;GACF;AACD;EACA,SAAS,IAAI,CAAC,IAAI,EAAE;IAClB,IAAI,OAAO,GAAG;AAChB;MACI,OAAO,EAAE,aAAa;MACtB,OAAO,EAAE,IAAI;AACjB,KAAG,CAAC;IACF,IAAI,QAAQ,GAAG;MACb,QAAQ,EAAE,eAAe;MACzB,QAAQ,EAAE,OAAO;MACjB,KAAK,EAAE,eAAe;AAC1B,KAAG,CAAC;AACJ;IACE;AACF;MACI,IAAI,YAAY,CAAC;MACjB,IAAI,SAAS,CAAC;AAClB;AACA,MAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AACtC,QAAM,YAAY,EAAE;UACZ,YAAY,EAAE,IAAI;UAClB,GAAG,EAAE,YAAY;YACf,OAAO,YAAY,CAAC;WACrB;AACT,UAAQ,GAAG,EAAE,UAAU,eAAe,EAAE;YAC9B,KAAK,CAAC,mEAAmE,GAAG,mEAAmE,GAAG,uDAAuD,CAAC,CAAC;AACrN;YACU,YAAY,GAAG,eAAe,CAAC;AACzC;AACA;AACA,YAAU,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE;cAC9C,UAAU,EAAE,IAAI;AAC5B,aAAW,CAAC,CAAC;WACJ;SACF;AACP,QAAM,SAAS,EAAE;UACT,YAAY,EAAE,IAAI;UAClB,GAAG,EAAE,YAAY;YACf,OAAO,SAAS,CAAC;WAClB;AACT,UAAQ,GAAG,EAAE,UAAU,YAAY,EAAE;YAC3B,KAAK,CAAC,gEAAgE,GAAG,mEAAmE,GAAG,uDAAuD,CAAC,CAAC;AAClN;YACU,SAAS,GAAG,YAAY,CAAC;AACnC;AACA;AACA,YAAU,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE;cAC3C,UAAU,EAAE,IAAI;AAC5B,aAAW,CAAC,CAAC;WACJ;SACF;AACP,OAAK,CAAC,CAAC;KACJ;AACH;IACE,OAAO,QAAQ,CAAC;GACjB;AACD;EACA,SAAS,UAAU,CAAC,MAAM,EAAE;IAC1B;MACE,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,eAAe,EAAE;QACzD,KAAK,CAAC,8DAA8D,GAAG,mDAAmD,GAAG,wBAAwB,CAAC,CAAC;AAC7J,OAAK,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AAC7C,QAAM,KAAK,CAAC,yDAAyD,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,MAAM,CAAC,CAAC;AACjH,OAAK,MAAM;AACX,QAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACtD,UAAQ,KAAK,CAAC,8EAA8E,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,0CAA0C,GAAG,6CAA6C,CAAC,CAAC;SACzM;OACF;AACL;AACA,MAAI,IAAI,MAAM,IAAI,IAAI,EAAE;AACxB,QAAM,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE;AACnE,UAAQ,KAAK,CAAC,wEAAwE,GAAG,8CAA8C,CAAC,CAAC;SAClI;OACF;KACF;AACH;IACE,IAAI,WAAW,GAAG;MAChB,QAAQ,EAAE,sBAAsB;MAChC,MAAM,EAAE,MAAM;AAClB,KAAG,CAAC;AACJ;IACE;MACE,IAAI,OAAO,CAAC;AAChB,MAAI,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,aAAa,EAAE;QAChD,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE,YAAY;UACf,OAAO,OAAO,CAAC;SAChB;AACP,QAAM,GAAG,EAAE,UAAU,IAAI,EAAE;UACnB,OAAO,GAAG,IAAI,CAAC;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;UACQ,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACjD,YAAU,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;WAC3B;SACF;AACP,OAAK,CAAC,CAAC;KACJ;AACH;IACE,OAAO,WAAW,CAAC;GACpB;AACD;AACA,EAAA,IAAI,sBAAsB,CAAC;AAC3B;AACA,EAAA;IACE,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;GAC/D;AACD;EACA,SAAS,kBAAkB,CAAC,IAAI,EAAE;IAChC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;MAC1D,OAAO,IAAI,CAAC;KACb;AACH;AACA;AACA,IAAE,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,mBAAmB,IAAI,kBAAkB,KAAK,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,wBAAwB,IAAI,kBAAkB,KAAK,IAAI,KAAK,oBAAoB,IAAI,cAAc,KAAK,kBAAkB,KAAK,uBAAuB,GAAG;MAC7T,OAAO,IAAI,CAAC;KACb;AACH;IACE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AACjD,MAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,IAAI,IAAI,CAAC,QAAQ,KAAK,mBAAmB,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,IAAI,IAAI,CAAC,QAAQ,KAAK,sBAAsB;AAC3M;AACA;AACA;MACI,IAAI,CAAC,QAAQ,KAAK,sBAAsB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;QAC1E,OAAO,IAAI,CAAC;OACb;KACF;AACH;IACE,OAAO,KAAK,CAAC;GACd;AACD;AACA,EAAA,SAAS,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;IAC3B;AACF,MAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;AACnC,QAAM,KAAK,CAAC,wDAAwD,GAAG,cAAc,EAAE,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,IAAI,CAAC,CAAC;OACxH;KACF;AACH;IACE,IAAI,WAAW,GAAG;MAChB,QAAQ,EAAE,eAAe;MACzB,IAAI,EAAE,IAAI;MACV,OAAO,EAAE,OAAO,KAAK,SAAS,GAAG,IAAI,GAAG,OAAO;AACnD,KAAG,CAAC;AACJ;IACE;MACE,IAAI,OAAO,CAAC;AAChB,MAAI,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,aAAa,EAAE;QAChD,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE,YAAY;UACf,OAAO,OAAO,CAAC;SAChB;AACP,QAAM,GAAG,EAAE,UAAU,IAAI,EAAE;UACnB,OAAO,GAAG,IAAI,CAAC;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;UACQ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC7C,YAAU,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;WACzB;SACF;AACP,OAAK,CAAC,CAAC;KACJ;AACH;IACE,OAAO,WAAW,CAAC;GACpB;AACD;AACA,EAAA,SAAS,iBAAiB,GAAG;AAC7B,IAAE,IAAI,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC;AAClD;IACE;AACF,MAAI,IAAI,UAAU,KAAK,IAAI,EAAE;AAC7B,QAAM,KAAK,CAAC,+GAA+G,GAAG,kCAAkC,GAAG,wFAAwF,GAAG,+CAA+C,GAAG,iEAAiE,GAAG,kGAAkG,CAAC,CAAC;OACnd;KACF;AACH;AACA;AACA;AACA;IACE,OAAO,UAAU,CAAC;GACnB;EACD,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;AACvC;IACE;AACF;AACA,MAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;AACxC,QAAM,IAAI,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;AACzC;AACA;AACA,QAAM,IAAI,WAAW,CAAC,QAAQ,KAAK,OAAO,EAAE;AAC5C,UAAQ,KAAK,CAAC,qFAAqF,GAAG,sFAAsF,CAAC,CAAC;AAC9L,SAAO,MAAM,IAAI,WAAW,CAAC,QAAQ,KAAK,OAAO,EAAE;AACnD,UAAQ,KAAK,CAAC,yDAAyD,GAAG,mDAAmD,CAAC,CAAC;SACxH;OACF;KACF;AACH;AACA,IAAE,OAAO,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;GACvC;EACD,SAAS,QAAQ,CAAC,YAAY,EAAE;AAChC,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;AACvC,IAAE,OAAO,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;GAC1C;AACD,EAAA,SAAS,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;AAC/C,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACrC,OAAO,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;GACzD;EACD,SAAS,MAAM,CAAC,YAAY,EAAE;AAC9B,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;AACvC,IAAE,OAAO,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;GACxC;AACD,EAAA,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AACjC,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACrC,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;GAC3C;AACD,EAAA,SAAS,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE;AAC1C,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACrC,OAAO,UAAU,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;GACpD;AACD,EAAA,SAAS,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE;AACvC,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACrC,OAAO,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;GACjD;AACD,EAAA,SAAS,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE;AACrC,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACrC,OAAO,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;GAC/C;AACD,EAAA,SAAS,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;AAC/B,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACrC,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;GACzC;AACD,EAAA,SAAS,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;AAChD,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACrC,OAAO,UAAU,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;GAC1D;AACD,EAAA,SAAS,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE;IACzC;AACF,MAAI,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;MACrC,OAAO,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;KACrD;GACF;AACD,EAAA,SAAS,aAAa,GAAG;AACzB,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;AACvC,IAAE,OAAO,UAAU,CAAC,aAAa,EAAE,CAAC;GACnC;EACD,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACjC,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;AACvC,IAAE,OAAO,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;GAC3C;AACD,EAAA,SAAS,KAAK,GAAG;AACjB,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;AACvC,IAAE,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC;GAC3B;AACD,EAAA,SAAS,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE;AACzE,IAAE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACrC,OAAO,UAAU,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;GACnF;AACD;AACA;AACA;AACA;AACA;EACA,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,EAAA,IAAI,OAAO,CAAC;AACZ,EAAA,IAAI,QAAQ,CAAC;AACb,EAAA,IAAI,QAAQ,CAAC;AACb,EAAA,IAAI,SAAS,CAAC;AACd,EAAA,IAAI,SAAS,CAAC;AACd,EAAA,IAAI,kBAAkB,CAAC;AACvB,EAAA,IAAI,YAAY,CAAC;AACjB;EACA,SAAS,WAAW,GAAG,EAAE;AACzB;AACA,EAAA,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACtC,EAAA,SAAS,WAAW,GAAG;IACrB;AACF,MAAI,IAAI,aAAa,KAAK,CAAC,EAAE;AAC7B;AACA,QAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;AAC5B,QAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;AAC9B,QAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;AAC9B,QAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;AAChC,QAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;AAChC,QAAM,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;AAClD,QAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;AACtC;QACM,IAAI,KAAK,GAAG;UACV,YAAY,EAAE,IAAI;UAClB,UAAU,EAAE,IAAI;UAChB,KAAK,EAAE,WAAW;UAClB,QAAQ,EAAE,IAAI;AACtB,SAAO,CAAC;AACR;AACA,QAAM,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE;UAC/B,IAAI,EAAE,KAAK;UACX,GAAG,EAAE,KAAK;UACV,IAAI,EAAE,KAAK;UACX,KAAK,EAAE,KAAK;UACZ,KAAK,EAAE,KAAK;UACZ,cAAc,EAAE,KAAK;UACrB,QAAQ,EAAE,KAAK;AACvB,SAAO,CAAC,CAAC;AACT;OACK;AACL;MACI,aAAa,EAAE,CAAC;KACjB;GACF;AACD,EAAA,SAAS,YAAY,GAAG;IACtB;MACE,aAAa,EAAE,CAAC;AACpB;AACA,MAAI,IAAI,aAAa,KAAK,CAAC,EAAE;AAC7B;QACM,IAAI,KAAK,GAAG;UACV,YAAY,EAAE,IAAI;UAClB,UAAU,EAAE,IAAI;UAChB,QAAQ,EAAE,IAAI;AACtB,SAAO,CAAC;AACR;AACA,QAAM,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE;AACvC,UAAQ,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;YACrB,KAAK,EAAE,OAAO;AACxB,WAAS,CAAC;AACV,UAAQ,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;YACtB,KAAK,EAAE,QAAQ;AACzB,WAAS,CAAC;AACV,UAAQ,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;YACtB,KAAK,EAAE,QAAQ;AACzB,WAAS,CAAC;AACV,UAAQ,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;YACvB,KAAK,EAAE,SAAS;AAC1B,WAAS,CAAC;AACV,UAAQ,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;YACvB,KAAK,EAAE,SAAS;AAC1B,WAAS,CAAC;AACV,UAAQ,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;YAChC,KAAK,EAAE,kBAAkB;AACnC,WAAS,CAAC;AACV,UAAQ,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;YAC1B,KAAK,EAAE,YAAY;AAC7B,WAAS,CAAC;AACV,SAAO,CAAC,CAAC;AACT;OACK;AACL;AACA,MAAI,IAAI,aAAa,GAAG,CAAC,EAAE;AAC3B,QAAM,KAAK,CAAC,iCAAiC,GAAG,+CAA+C,CAAC,CAAC;OAC5F;KACF;GACF;AACD;AACA,EAAA,IAAI,wBAAwB,GAAG,oBAAoB,CAAC,sBAAsB,CAAC;AAC3E,EAAA,IAAI,MAAM,CAAC;AACX,EAAA,SAAS,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAC5D;AACF,MAAI,IAAI,MAAM,KAAK,SAAS,EAAE;AAC9B;AACA,QAAM,IAAI;UACF,MAAM,KAAK,EAAE,CAAC;SACf,CAAC,OAAO,CAAC,EAAE;AAClB,UAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;UACjD,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClC;OACF;AACL;AACA;AACA,MAAI,OAAO,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;KAC7B;GACF;EACD,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,EAAA,IAAI,mBAAmB,CAAC;AACxB;AACA,EAAA;IACE,IAAI,eAAe,GAAG,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,GAAG,GAAG,CAAC;AACtE,IAAE,mBAAmB,GAAG,IAAI,eAAe,EAAE,CAAC;GAC7C;AACD;AACA,EAAA,SAAS,4BAA4B,CAAC,EAAE,EAAE,SAAS,EAAE;AACrD;AACA,IAAE,KAAK,CAAC,EAAE,IAAI,OAAO,EAAE;MACnB,OAAO,EAAE,CAAC;KACX;AACH;IACE;MACE,IAAI,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5C;AACA,MAAI,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,KAAK,CAAC;OACd;KACF;AACH;IACE,IAAI,OAAO,CAAC;IACZ,OAAO,GAAG,IAAI,CAAC;AACjB,IAAE,IAAI,yBAAyB,GAAG,KAAK,CAAC,iBAAiB,CAAC;AAC1D;AACA,IAAE,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACpC,IAAI,kBAAkB,CAAC;AACzB;IACE;AACF,MAAI,kBAAkB,GAAG,wBAAwB,CAAC,OAAO,CAAC;AAC1D;AACA;AACA,MAAI,wBAAwB,CAAC,OAAO,GAAG,IAAI,CAAC;MACxC,WAAW,EAAE,CAAC;KACf;AACH;AACA,IAAE,IAAI;AACN;MACI,IAAI,SAAS,EAAE;AACnB;QACM,IAAI,IAAI,GAAG,YAAY;UACrB,MAAM,KAAK,EAAE,CAAC;AACtB,SAAO,CAAC;AACR;AACA;QACM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;UAC7C,GAAG,EAAE,YAAY;AACzB;AACA;YACU,MAAM,KAAK,EAAE,CAAC;WACf;AACT,SAAO,CAAC,CAAC;AACT;QACM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE;AAC5D;AACA;AACA,UAAQ,IAAI;YACF,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;WAC7B,CAAC,OAAO,CAAC,EAAE;YACV,OAAO,GAAG,CAAC,CAAC;WACb;AACT;UACQ,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACxC,SAAO,MAAM;AACb,UAAQ,IAAI;AACZ,YAAU,IAAI,CAAC,IAAI,EAAE,CAAC;WACb,CAAC,OAAO,CAAC,EAAE;YACV,OAAO,GAAG,CAAC,CAAC;WACb;AACT;UACQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACzB;AACP,OAAK,MAAM;AACX,QAAM,IAAI;UACF,MAAM,KAAK,EAAE,CAAC;SACf,CAAC,OAAO,CAAC,EAAE;UACV,OAAO,GAAG,CAAC,CAAC;SACb;AACP;QACM,EAAE,EAAE,CAAC;OACN;KACF,CAAC,OAAO,MAAM,EAAE;AACnB;MACI,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;AAC/D;AACA;QACM,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC;AACA,QAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;UACQ,CAAC,EAAE,CAAC;SACL;AACP;AACA,QAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;AACzC;AACA;UACQ,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE;AAChD;AACA;AACA;AACA;AACA;YACU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAClC,cAAY,GAAG;gBACD,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;AAClB;AACA;AACA,gBAAc,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE;AAC/D;AACA,kBAAgB,IAAI,MAAM,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC/E;AACA;AACA;AACA;kBACgB,IAAI,EAAE,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACtE,oBAAkB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;mBACxD;AACjB;kBACgB;AAChB,oBAAkB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;sBAC5B,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;qBACrC;mBACF;AACjB;AACA;kBACgB,OAAO,MAAM,CAAC;iBACf;eACF,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC5B;AACX;AACA,YAAU,MAAM;WACP;SACF;OACF;AACL,KAAG,SAAS;MACR,OAAO,GAAG,KAAK,CAAC;AACpB;MACI;AACJ,QAAM,wBAAwB,CAAC,OAAO,GAAG,kBAAkB,CAAC;QACtD,YAAY,EAAE,CAAC;OAChB;AACL;AACA,MAAI,KAAK,CAAC,iBAAiB,GAAG,yBAAyB,CAAC;KACrD;AACH;AACA;AACA,IAAE,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;IAC/C,IAAI,cAAc,GAAG,IAAI,GAAG,6BAA6B,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACvE;IACE;AACF,MAAI,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;QAC5B,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;OAC7C;KACF;AACH;IACE,OAAO,cAAc,CAAC;GACvB;AACD,EAAA,SAAS,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;IAC3D;AACF,MAAI,OAAO,4BAA4B,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;KAChD;GACF;AACD;EACA,SAAS,eAAe,CAAC,SAAS,EAAE;AACpC,IAAE,IAAI,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAC;GACpD;AACD;AACA,EAAA,SAAS,oCAAoC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AACrE;AACA,IAAE,IAAI,IAAI,IAAI,IAAI,EAAE;MAChB,OAAO,EAAE,CAAC;KACX;AACH;AACA,IAAE,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;MAC9B;QACE,OAAO,4BAA4B,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;OAClE;KACF;AACH;AACA,IAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAChC,MAAI,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC;KAC5C;AACH;AACA,IAAE,QAAQ,IAAI;AACd,MAAI,KAAK,mBAAmB;AAC5B,QAAM,OAAO,6BAA6B,CAAC,UAAU,CAAC,CAAC;AACvD;AACA,MAAI,KAAK,wBAAwB;AACjC,QAAM,OAAO,6BAA6B,CAAC,cAAc,CAAC,CAAC;KACxD;AACH;AACA,IAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;MAC5B,QAAQ,IAAI,CAAC,QAAQ;AACzB,QAAM,KAAK,sBAAsB;AACjC,UAAQ,OAAO,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3D;AACA,QAAM,KAAK,eAAe;AAC1B;UACQ,OAAO,oCAAoC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAChF;AACA,QAAM,KAAK,eAAe;UAClB;AACR,YAAU,IAAI,aAAa,GAAG,IAAI,CAAC;AACnC,YAAU,IAAI,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC;AAC/C,YAAU,IAAI,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC;AACzC;AACA,YAAU,IAAI;AACd;AACA,cAAY,OAAO,oCAAoC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACxF,aAAW,CAAC,OAAO,CAAC,EAAE,EAAE;WACf;OACJ;KACF;AACH;IACE,OAAO,EAAE,CAAC;GACX;AACD;EACA,IAAI,kBAAkB,GAAG,EAAE,CAAC;AAC5B,EAAA,IAAI,wBAAwB,GAAG,oBAAoB,CAAC,sBAAsB,CAAC;AAC3E;EACA,SAAS,6BAA6B,CAAC,OAAO,EAAE;IAC9C;MACE,IAAI,OAAO,EAAE;AACjB,QAAM,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,IAAI,KAAK,GAAG,oCAAoC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AACjH,QAAM,wBAAwB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACzD,OAAK,MAAM;AACX,QAAM,wBAAwB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;OACnD;KACF;GACF;AACD;EACA,SAAS,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE;IAC3E;AACF;MACI,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACjD;AACA,MAAI,KAAK,IAAI,YAAY,IAAI,SAAS,EAAE;AACxC,QAAM,IAAI,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE;AACxC,UAAQ,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;AAC7B;AACA;AACA;AACA,UAAQ,IAAI;AACZ;AACA;YACU,IAAI,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,UAAU,EAAE;AAC7D;AACA,cAAY,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,aAAa,IAAI,aAAa,IAAI,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,gBAAgB,GAAG,8EAA8E,GAAG,OAAO,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,+FAA+F,CAAC,CAAC;AACzV,cAAY,GAAG,CAAC,IAAI,GAAG,qBAAqB,CAAC;cACjC,MAAM,GAAG,CAAC;aACX;AACX;AACA,YAAU,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,8CAA8C,CAAC,CAAC;WACxI,CAAC,OAAO,EAAE,EAAE;YACX,OAAO,GAAG,EAAE,CAAC;WACd;AACT;UACQ,IAAI,OAAO,IAAI,EAAE,OAAO,YAAY,KAAK,CAAC,EAAE;AACpD,YAAU,6BAA6B,CAAC,OAAO,CAAC,CAAC;AACjD;YACU,KAAK,CAAC,8BAA8B,GAAG,qCAAqC,GAAG,+DAA+D,GAAG,iEAAiE,GAAG,gEAAgE,GAAG,iCAAiC,EAAE,aAAa,IAAI,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,CAAC;AAC7Y;AACA,YAAU,6BAA6B,CAAC,IAAI,CAAC,CAAC;WACrC;AACT;AACA,UAAQ,IAAI,OAAO,YAAY,KAAK,IAAI,EAAE,OAAO,CAAC,OAAO,IAAI,kBAAkB,CAAC,EAAE;AAClF;AACA;YACU,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AACrD,YAAU,6BAA6B,CAAC,OAAO,CAAC,CAAC;AACjD;YACU,KAAK,CAAC,oBAAoB,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACjE;AACA,YAAU,6BAA6B,CAAC,IAAI,CAAC,CAAC;WACrC;SACF;OACF;KACF;GACF;AACD;EACA,SAAS,+BAA+B,CAAC,OAAO,EAAE;IAChD;MACE,IAAI,OAAO,EAAE;AACjB,QAAM,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,IAAI,KAAK,GAAG,oCAAoC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AACjH,QAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChC,OAAK,MAAM;AACX,QAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;OAC1B;KACF;GACF;AACD;AACA,EAAA,IAAI,6BAA6B,CAAC;AAClC;AACA,EAAA;IACE,6BAA6B,GAAG,KAAK,CAAC;GACvC;AACD;AACA,EAAA,SAAS,2BAA2B,GAAG;AACvC,IAAE,IAAI,iBAAiB,CAAC,OAAO,EAAE;MAC7B,IAAI,IAAI,GAAG,wBAAwB,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxE;MACI,IAAI,IAAI,EAAE;AACd,QAAM,OAAO,kCAAkC,GAAG,IAAI,GAAG,IAAI,CAAC;OACzD;KACF;AACH;IACE,OAAO,EAAE,CAAC;GACX;AACD;EACA,SAAS,0BAA0B,CAAC,MAAM,EAAE;AAC5C,IAAE,IAAI,MAAM,KAAK,SAAS,EAAE;AAC5B,MAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC5D,MAAI,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;MACnC,OAAO,yBAAyB,GAAG,QAAQ,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC;KACtE;AACH;IACE,OAAO,EAAE,CAAC;GACX;AACD;EACA,SAAS,kCAAkC,CAAC,YAAY,EAAE;IACxD,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AAC3D,MAAI,OAAO,0BAA0B,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;KAC1D;AACH;IACE,OAAO,EAAE,CAAC;GACX;AACD;AACA;AACA;AACA;AACA;AACA;AACA;EACA,IAAI,qBAAqB,GAAG,EAAE,CAAC;AAC/B;EACA,SAAS,4BAA4B,CAAC,UAAU,EAAE;AAClD,IAAE,IAAI,IAAI,GAAG,2BAA2B,EAAE,CAAC;AAC3C;IACE,IAAI,CAAC,IAAI,EAAE;AACb,MAAI,IAAI,UAAU,GAAG,OAAO,UAAU,KAAK,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC;AAC7G;MACI,IAAI,UAAU,EAAE;AACpB,QAAM,IAAI,GAAG,6CAA6C,GAAG,UAAU,GAAG,IAAI,CAAC;OAC1E;KACF;AACH;IACE,OAAO,IAAI,CAAC;GACb;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE;AAClD,IAAE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE;AAC1E,MAAI,OAAO;KACR;AACH;AACA,IAAE,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AAClC,IAAE,IAAI,yBAAyB,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;AAC3E;AACA,IAAE,IAAI,qBAAqB,CAAC,yBAAyB,CAAC,EAAE;AACxD,MAAI,OAAO;KACR;AACH;AACA,IAAE,qBAAqB,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC;AAC1D;AACA;AACA;AACA,IAAE,IAAI,UAAU,GAAG,EAAE,CAAC;AACtB;AACA,IAAE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,iBAAiB,CAAC,OAAO,EAAE;AACjF;AACA,MAAI,UAAU,GAAG,8BAA8B,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;KACnG;AACH;IACE;AACF,MAAI,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAC7C;MACI,KAAK,CAAC,uDAAuD,GAAG,sEAAsE,EAAE,yBAAyB,EAAE,UAAU,CAAC,CAAC;AACnL;AACA,MAAI,+BAA+B,CAAC,IAAI,CAAC,CAAC;KACvC;GACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE;AAC7C,IAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAChC,MAAI,OAAO;KACR;AACH;AACA,IAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;AACrB,MAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAM,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B;AACA,QAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;AACjC,UAAQ,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;SACxC;OACF;AACL,KAAG,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;AACnC;AACA,MAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,QAAM,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;OAC9B;KACF,MAAM,IAAI,IAAI,EAAE;AACnB,MAAI,IAAI,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AACzC;AACA,MAAI,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;AAC1C;AACA;AACA,QAAM,IAAI,UAAU,KAAK,IAAI,CAAC,OAAO,EAAE;UAC/B,IAAI,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;UACrC,IAAI,IAAI,CAAC;AACjB;UACQ,OAAO,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;AAC/C,YAAU,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;cAC9B,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;aAC7C;WACF;SACF;OACF;KACF;GACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,iBAAiB,CAAC,OAAO,EAAE;IAClC;AACF,MAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5B;AACA,MAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACzE,QAAM,OAAO;OACR;AACL;MACI,IAAI,SAAS,CAAC;AAClB;AACA,MAAI,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AACpC,QAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;OAC5B,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,sBAAsB;AACpF;AACA,MAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,EAAE;AACxC,QAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACjC,OAAK,MAAM;AACX,QAAM,OAAO;OACR;AACL;MACI,IAAI,SAAS,EAAE;AACnB;AACA,QAAM,IAAI,IAAI,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAChD,QAAM,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;OACjE,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,6BAA6B,EAAE;QACzE,6BAA6B,GAAG,IAAI,CAAC;AAC3C;AACA,QAAM,IAAI,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;AACjD;QACM,KAAK,CAAC,qGAAqG,EAAE,KAAK,IAAI,SAAS,CAAC,CAAC;OAClI;AACL;AACA,MAAI,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE;AAClG,QAAM,KAAK,CAAC,4DAA4D,GAAG,kEAAkE,CAAC,CAAC;OAC1I;KACF;GACF;AACD;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,qBAAqB,CAAC,QAAQ,EAAE;IACvC;MACE,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3C;AACA,MAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAM,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB;QACM,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,KAAK,EAAE;AAC/C,UAAQ,+BAA+B,CAAC,QAAQ,CAAC,CAAC;AAClD;UACQ,KAAK,CAAC,kDAAkD,GAAG,0DAA0D,EAAE,GAAG,CAAC,CAAC;AACpI;AACA,UAAQ,+BAA+B,CAAC,IAAI,CAAC,CAAC;AAC9C,UAAQ,MAAM;SACP;OACF;AACL;AACA,MAAI,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,EAAE;AAC/B,QAAM,+BAA+B,CAAC,QAAQ,CAAC,CAAC;AAChD;AACA,QAAM,KAAK,CAAC,uDAAuD,CAAC,CAAC;AACrE;AACA,QAAM,+BAA+B,CAAC,IAAI,CAAC,CAAC;OACvC;KACF;GACF;AACD,EAAA,SAAS,2BAA2B,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC5D,IAAE,IAAI,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC3C;AACA;IACE,IAAI,CAAC,SAAS,EAAE;AAClB,MAAI,IAAI,IAAI,GAAG,EAAE,CAAC;AAClB;MACI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3G,QAAM,IAAI,IAAI,4DAA4D,GAAG,wEAAwE,CAAC;OACjJ;AACL;AACA,MAAI,IAAI,UAAU,GAAG,kCAAkC,CAAC,KAAK,CAAC,CAAC;AAC/D;MACI,IAAI,UAAU,EAAE;QACd,IAAI,IAAI,UAAU,CAAC;AACzB,OAAK,MAAM;AACX,QAAM,IAAI,IAAI,2BAA2B,EAAE,CAAC;OACvC;AACL;MACI,IAAI,UAAU,CAAC;AACnB;AACA,MAAI,IAAI,IAAI,KAAK,IAAI,EAAE;QACjB,UAAU,GAAG,MAAM,CAAC;AAC1B,OAAK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;QACxB,UAAU,GAAG,OAAO,CAAC;OACtB,MAAM,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,EAAE;AAC3E,QAAM,UAAU,GAAG,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,GAAG,KAAK,CAAC;QAC9E,IAAI,GAAG,oEAAoE,CAAC;AAClF,OAAK,MAAM;AACX,QAAM,UAAU,GAAG,OAAO,IAAI,CAAC;OAC1B;AACL;MACI;AACJ,QAAM,KAAK,CAAC,iEAAiE,GAAG,0DAA0D,GAAG,4BAA4B,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;OACxL;KACF;AACH;IACE,IAAI,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACrD;AACA;AACA,IAAE,IAAI,OAAO,IAAI,IAAI,EAAE;MACnB,OAAO,OAAO,CAAC;KAChB;AACH;AACA;AACA;AACA;AACA;AACA;IACE,IAAI,SAAS,EAAE;AACjB,MAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;OACvC;KACF;AACH;AACA,IAAE,IAAI,IAAI,KAAK,mBAAmB,EAAE;AACpC,MAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACnC,KAAG,MAAM;AACT,MAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;KAC5B;AACH;IACE,OAAO,OAAO,CAAC;GAChB;EACD,IAAI,mCAAmC,GAAG,KAAK,CAAC;EAChD,SAAS,2BAA2B,CAAC,IAAI,EAAE;IACzC,IAAI,gBAAgB,GAAG,2BAA2B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtE,IAAE,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC;AAC/B;IACE;MACE,IAAI,CAAC,mCAAmC,EAAE;QACxC,mCAAmC,GAAG,IAAI,CAAC;AACjD;QACM,IAAI,CAAC,6DAA6D,GAAG,6CAA6C,GAAG,gDAAgD,CAAC,CAAC;OACxK;AACL;AACA;AACA,MAAI,MAAM,CAAC,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE;QAC9C,UAAU,EAAE,KAAK;QACjB,GAAG,EAAE,YAAY;AACvB,UAAQ,IAAI,CAAC,wDAAwD,GAAG,qCAAqC,CAAC,CAAC;AAC/G;AACA,UAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,KAAK,EAAE,IAAI;AACrB,WAAS,CAAC,CAAC;UACH,OAAO,IAAI,CAAC;SACb;AACP,OAAK,CAAC,CAAC;KACJ;AACH;IACE,OAAO,gBAAgB,CAAC;GACzB;AACD,EAAA,SAAS,0BAA0B,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC5D,IAAI,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACvD;AACA,IAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACzC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;KAClD;AACH;AACA,IAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9B,OAAO,UAAU,CAAC;GACnB;AACD;AACA,EAAA,SAAS,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE;AACzC,IAAE,IAAI,cAAc,GAAG,uBAAuB,CAAC,UAAU,CAAC;AAC1D,IAAE,uBAAuB,CAAC,UAAU,GAAG,EAAE,CAAC;AAC1C,IAAE,IAAI,iBAAiB,GAAG,uBAAuB,CAAC,UAAU,CAAC;AAC7D;IACE;MACE,uBAAuB,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;KAC/D;AACH;AACA,IAAE,IAAI;MACF,KAAK,EAAE,CAAC;AACZ,KAAG,SAAS;AACZ,MAAI,uBAAuB,CAAC,UAAU,GAAG,cAAc,CAAC;AACxD;MACI;QACE,IAAI,cAAc,KAAK,IAAI,IAAI,iBAAiB,CAAC,cAAc,EAAE;UAC/D,IAAI,kBAAkB,GAAG,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC;AACvE;AACA,UAAQ,IAAI,kBAAkB,GAAG,EAAE,EAAE;YAC3B,IAAI,CAAC,6DAA6D,GAAG,mFAAmF,GAAG,yDAAyD,CAAC,CAAC;WACvN;AACT;AACA,UAAQ,iBAAiB,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;SAC1C;OACF;KACF;GACF;AACD;EACA,IAAI,0BAA0B,GAAG,KAAK,CAAC;EACvC,IAAI,eAAe,GAAG,IAAI,CAAC;EAC3B,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,IAAE,IAAI,eAAe,KAAK,IAAI,EAAE;AAChC,MAAI,IAAI;AACR;AACA;AACA,QAAM,IAAI,aAAa,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,WAAW,GAAG,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;AACxD;AACA;AACA,QAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,YAAY,CAAC;OACnE,CAAC,OAAO,IAAI,EAAE;AACnB;AACA;AACA;AACA,QAAM,eAAe,GAAG,UAAU,QAAQ,EAAE;UACpC;AACR,YAAU,IAAI,0BAA0B,KAAK,KAAK,EAAE;cACxC,0BAA0B,GAAG,IAAI,CAAC;AAC9C;AACA,cAAY,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;gBACzC,KAAK,CAAC,8DAA8D,GAAG,+DAA+D,GAAG,mEAAmE,GAAG,gCAAgC,CAAC,CAAC;eAClP;aACF;WACF;AACT;AACA,UAAQ,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AAC3C,UAAQ,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;UACnC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC7C,SAAO,CAAC;OACH;KACF;AACH;AACA,IAAE,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;GAC9B;AACD;EACA,IAAI,aAAa,GAAG,CAAC,CAAC;EACtB,IAAI,iBAAiB,GAAG,KAAK,CAAC;EAC9B,SAAS,GAAG,CAAC,QAAQ,EAAE;IACrB;AACF;AACA;AACA,MAAI,IAAI,iBAAiB,GAAG,aAAa,CAAC;MACtC,aAAa,EAAE,CAAC;AACpB;AACA,MAAI,IAAI,oBAAoB,CAAC,OAAO,KAAK,IAAI,EAAE;AAC/C;AACA;AACA,QAAM,oBAAoB,CAAC,OAAO,GAAG,EAAE,CAAC;OACnC;AACL;AACA,MAAI,IAAI,oBAAoB,GAAG,oBAAoB,CAAC,gBAAgB,CAAC;MACjE,IAAI,MAAM,CAAC;AACf;AACA,MAAI,IAAI;AACR;AACA;AACA;AACA;AACA,QAAM,oBAAoB,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACnD,QAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;AAC1B;AACA;AACA;AACA,QAAM,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,uBAAuB,EAAE;AACjF,UAAQ,IAAI,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC;AACjD;AACA,UAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC5B,YAAU,oBAAoB,CAAC,uBAAuB,GAAG,KAAK,CAAC;AAC/D,YAAU,aAAa,CAAC,KAAK,CAAC,CAAC;WACtB;SACF;OACF,CAAC,OAAO,KAAK,EAAE;AACpB,QAAM,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC/B,MAAM,KAAK,CAAC;AAClB,OAAK,SAAS;AACd,QAAM,oBAAoB,CAAC,gBAAgB,GAAG,oBAAoB,CAAC;OAC9D;AACL;AACA,MAAI,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;AAC5F,QAAM,IAAI,cAAc,GAAG,MAAM,CAAC;AAClC;AACA;AACA,QAAM,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,QAAQ,GAAG;AACrB,UAAQ,IAAI,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;YAC/B,UAAU,GAAG,IAAI,CAAC;AAC5B,YAAU,cAAc,CAAC,IAAI,CAAC,UAAU,WAAW,EAAE;AACrD,cAAY,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAC3C;AACA,cAAY,IAAI,aAAa,KAAK,CAAC,EAAE;AACrC;AACA;gBACc,4BAA4B,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACzE,eAAa,MAAM;AACnB,gBAAc,OAAO,CAAC,WAAW,CAAC,CAAC;eACtB;aACF,EAAE,UAAU,KAAK,EAAE;AAC9B;AACA,cAAY,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAC3C,cAAY,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAW,CAAC,CAAC;WACJ;AACT,SAAO,CAAC;AACR;QACM;UACE,IAAI,CAAC,iBAAiB,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;AAClE;AACA,YAAU,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;cACtD,IAAI,CAAC,UAAU,EAAE;gBACf,iBAAiB,GAAG,IAAI,CAAC;AACvC;AACA,gBAAc,KAAK,CAAC,iDAAiD,GAAG,mDAAmD,GAAG,mDAAmD,GAAG,UAAU,GAAG,0CAA0C,CAAC,CAAC;eAChO;AACb,aAAW,CAAC,CAAC;WACJ;SACF;AACP;QACM,OAAO,QAAQ,CAAC;AACtB,OAAK,MAAM;AACX,QAAM,IAAI,WAAW,GAAG,MAAM,CAAC;AAC/B;AACA;AACA,QAAM,WAAW,CAAC,iBAAiB,CAAC,CAAC;AACrC;AACA,QAAM,IAAI,aAAa,KAAK,CAAC,EAAE;AAC/B;AACA,UAAQ,IAAI,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC;AAClD;AACA,UAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,YAAU,aAAa,CAAC,MAAM,CAAC,CAAC;AAChC,YAAU,oBAAoB,CAAC,OAAO,GAAG,IAAI,CAAC;WACrC;AACT;AACA;AACA;UACQ,IAAI,SAAS,GAAG;AACxB,YAAU,IAAI,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC3C;AACA;AACA;AACA,cAAY,IAAI,oBAAoB,CAAC,OAAO,KAAK,IAAI,EAAE;AACvD;AACA,gBAAc,oBAAoB,CAAC,OAAO,GAAG,EAAE,CAAC;gBAClC,4BAA4B,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACzE,eAAa,MAAM;AACnB,gBAAc,OAAO,CAAC,WAAW,CAAC,CAAC;eACtB;aACF;AACX,WAAS,CAAC;UACF,OAAO,SAAS,CAAC;AACzB,SAAO,MAAM;AACb;AACA;UACQ,IAAI,UAAU,GAAG;AACzB,YAAU,IAAI,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC3C,cAAY,OAAO,CAAC,WAAW,CAAC,CAAC;aACtB;AACX,WAAS,CAAC;UACF,OAAO,UAAU,CAAC;SACnB;OACF;KACF;GACF;AACD;EACA,SAAS,WAAW,CAAC,iBAAiB,EAAE;IACtC;AACF,MAAI,IAAI,iBAAiB,KAAK,aAAa,GAAG,CAAC,EAAE;AACjD,QAAM,KAAK,CAAC,mEAAmE,GAAG,iEAAiE,CAAC,CAAC;OAChJ;AACL;MACI,aAAa,GAAG,iBAAiB,CAAC;KACnC;GACF;AACD;AACA,EAAA,SAAS,4BAA4B,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE;IAClE;AACF,MAAI,IAAI,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC;AAC7C;AACA,MAAI,IAAI,KAAK,KAAK,IAAI,EAAE;AACxB,QAAM,IAAI;AACV,UAAQ,aAAa,CAAC,KAAK,CAAC,CAAC;UACrB,WAAW,CAAC,YAAY;AAChC,YAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC;AACA,cAAY,oBAAoB,CAAC,OAAO,GAAG,IAAI,CAAC;AAChD,cAAY,OAAO,CAAC,WAAW,CAAC,CAAC;AACjC,aAAW,MAAM;AACjB;cACY,4BAA4B,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aAC5D;AACX,WAAS,CAAC,CAAC;SACJ,CAAC,OAAO,KAAK,EAAE;AACtB,UAAQ,MAAM,CAAC,KAAK,CAAC,CAAC;SACf;AACP,OAAK,MAAM;AACX,QAAM,OAAO,CAAC,WAAW,CAAC,CAAC;OACtB;KACF;GACF;AACD;EACA,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB;EACA,SAAS,aAAa,CAAC,KAAK,EAAE;IAC5B;MACE,IAAI,CAAC,UAAU,EAAE;AACrB;QACM,UAAU,GAAG,IAAI,CAAC;AACxB,QAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB;AACA,QAAM,IAAI;UACF,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAU,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC;AACA,YAAU,GAAG;AACb,cAAY,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtC,aAAW,QAAQ,QAAQ,KAAK,IAAI,EAAE;WAC7B;AACT;AACA,UAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SAClB,CAAC,OAAO,KAAK,EAAE;AACtB;UACQ,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;UAC3B,MAAM,KAAK,CAAC;AACpB,SAAO,SAAS;UACR,UAAU,GAAG,KAAK,CAAC;SACpB;OACF;KACF;GACF;AACD;EACA,IAAI,eAAe,IAAI,2BAA2B,EAAE;EACpD,IAAI,cAAc,IAAI,0BAA0B,EAAE;EAClD,IAAI,aAAa,IAAI,2BAA2B,EAAE;AAClD,EAAA,IAAI,QAAQ,GAAG;IACb,GAAG,EAAE,WAAW;IAChB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,SAAS;AACjB,GAAC,CAAC;AACF;AACA,EAAA,OAAA,CAAA,QAAA,GAAmB,QAAQ,CAAC;AAC5B,EAAA,OAAA,CAAA,SAAA,GAAoB,SAAS,CAAC;AAC9B,EAAA,OAAA,CAAA,QAAA,GAAmB,mBAAmB,CAAC;AACvC,EAAA,OAAA,CAAA,QAAA,GAAmB,mBAAmB,CAAC;AACvC,EAAA,OAAA,CAAA,aAAA,GAAwB,aAAa,CAAC;AACtC,EAAA,OAAA,CAAA,UAAA,GAAqB,sBAAsB,CAAC;AAC5C,EAAA,OAAA,CAAA,QAAA,GAAmB,mBAAmB,CAAC;AACvC,EAAA,OAAA,CAAA,kDAAA,GAA6D,oBAAoB,CAAC;AAClF,EAAA,OAAA,CAAA,GAAA,GAAc,GAAG,CAAC;AAClB,EAAA,OAAA,CAAA,YAAA,GAAuB,cAAc,CAAC;AACtC,EAAA,OAAA,CAAA,aAAA,GAAwB,aAAa,CAAC;AACtC,EAAA,OAAA,CAAA,aAAA,GAAwB,eAAe,CAAC;AACxC,EAAA,OAAA,CAAA,aAAA,GAAwB,aAAa,CAAC;AACtC,EAAA,OAAA,CAAA,SAAA,GAAoB,SAAS,CAAC;AAC9B,EAAA,OAAA,CAAA,UAAA,GAAqB,UAAU,CAAC;AAChC,EAAA,OAAA,CAAA,cAAA,GAAyB,cAAc,CAAC;AACxC,EAAA,OAAA,CAAA,IAAA,GAAe,IAAI,CAAC;AACpB,EAAA,OAAA,CAAA,IAAA,GAAe,IAAI,CAAC;AACpB,EAAA,OAAA,CAAA,eAAA,GAA0B,eAAe,CAAC;AAC1C,EAAA,OAAA,CAAA,YAAA,GAAuB,GAAG,CAAC;AAC3B,EAAA,OAAA,CAAA,WAAA,GAAsB,WAAW,CAAC;AAClC,EAAA,OAAA,CAAA,UAAA,GAAqB,UAAU,CAAC;AAChC,EAAA,OAAA,CAAA,aAAA,GAAwB,aAAa,CAAC;AACtC,EAAA,OAAA,CAAA,gBAAA,GAA2B,gBAAgB,CAAC;AAC5C,EAAA,OAAA,CAAA,SAAA,GAAoB,SAAS,CAAC;AAC9B,EAAA,OAAA,CAAA,KAAA,GAAgB,KAAK,CAAC;AACtB,EAAA,OAAA,CAAA,mBAAA,GAA8B,mBAAmB,CAAC;AAClD,EAAA,OAAA,CAAA,kBAAA,GAA6B,kBAAkB,CAAC;AAChD,EAAA,OAAA,CAAA,eAAA,GAA0B,eAAe,CAAC;AAC1C,EAAA,OAAA,CAAA,OAAA,GAAkB,OAAO,CAAC;AAC1B,EAAA,OAAA,CAAA,UAAA,GAAqB,UAAU,CAAC;AAChC,EAAA,OAAA,CAAA,MAAA,GAAiB,MAAM,CAAC;AACxB,EAAA,OAAA,CAAA,QAAA,GAAmB,QAAQ,CAAC;AAC5B,EAAA,OAAA,CAAA,oBAAA,GAA+B,oBAAoB,CAAC;AACpD,EAAA,OAAA,CAAA,aAAA,GAAwB,aAAa,CAAC;AACtC,EAAA,OAAA,CAAA,OAAA,GAAkB,YAAY,CAAC;AAC/B;AACA,EAAA;IACE,OAAO,8BAA8B,KAAK,WAAW;IACrD,OAAO,8BAA8B,CAAC,0BAA0B;AAClE,MAAI,UAAU;IACZ;IACA,8BAA8B,CAAC,0BAA0B,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;GACxE;AACD;AACA,KAAG,GAAG,CAAC;AACP,GAAA;;;;;ACjrFA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC3C,EAAEA,KAAA,CAAA,OAAc,GAAGC,2BAAA,EAAwC,CAAC;AAC5D,CAAC,MAAM;AACP,EAAED,KAAA,CAAA,OAAc,GAAGE,wBAAA,EAAqC,CAAC;AACzD,CAAA;;;;;ACAM,IAAA,MAAM,GAAG,UAAC,KAAkB,EAAA;AAC9B,IAAA,OAAO,KAAS,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,KAAK,CAAC,KAAK,CAAU,CAAC;AAC1C;;;;","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/dist/esm/types/components/Button/Button.d.ts b/dist/esm/types/components/Button/Button.d.ts new file mode 100644 index 0000000..a84ea65 --- /dev/null +++ b/dist/esm/types/components/Button/Button.d.ts @@ -0,0 +1,6 @@ +import React from "react"; +export interface ButtonProps { + label: string; +} +declare const Button: (props: ButtonProps) => React.JSX.Element; +export default Button; diff --git a/dist/esm/types/components/Button/index.d.ts b/dist/esm/types/components/Button/index.d.ts new file mode 100644 index 0000000..c4719be --- /dev/null +++ b/dist/esm/types/components/Button/index.d.ts @@ -0,0 +1 @@ +export { default } from "./Button"; diff --git a/dist/esm/types/components/index.d.ts b/dist/esm/types/components/index.d.ts new file mode 100644 index 0000000..1fdf438 --- /dev/null +++ b/dist/esm/types/components/index.d.ts @@ -0,0 +1 @@ +export { default as Button } from "./Button"; diff --git a/dist/esm/types/index.d.ts b/dist/esm/types/index.d.ts new file mode 100644 index 0000000..40b494c --- /dev/null +++ b/dist/esm/types/index.d.ts @@ -0,0 +1 @@ +export * from "./components"; diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 0000000..03dcebc --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1,8 @@ +import React from 'react'; + +interface ButtonProps { + label: string; +} +declare const Button: (props: ButtonProps) => React.JSX.Element; + +export { Button }; diff --git a/node_modules/.bin/glob b/node_modules/.bin/glob new file mode 120000 index 0000000..85c9c1d --- /dev/null +++ b/node_modules/.bin/glob @@ -0,0 +1 @@ +../glob/dist/esm/bin.mjs \ No newline at end of file diff --git a/node_modules/.bin/loose-envify b/node_modules/.bin/loose-envify new file mode 120000 index 0000000..ed9009c --- /dev/null +++ b/node_modules/.bin/loose-envify @@ -0,0 +1 @@ +../loose-envify/cli.js \ No newline at end of file diff --git a/node_modules/.bin/node-which b/node_modules/.bin/node-which new file mode 120000 index 0000000..6f8415e --- /dev/null +++ b/node_modules/.bin/node-which @@ -0,0 +1 @@ +../which/bin/node-which \ No newline at end of file diff --git a/node_modules/.bin/resolve b/node_modules/.bin/resolve new file mode 120000 index 0000000..b6afda6 --- /dev/null +++ b/node_modules/.bin/resolve @@ -0,0 +1 @@ +../resolve/bin/resolve \ No newline at end of file diff --git a/node_modules/.bin/rollup b/node_modules/.bin/rollup new file mode 120000 index 0000000..5939621 --- /dev/null +++ b/node_modules/.bin/rollup @@ -0,0 +1 @@ +../rollup/dist/bin/rollup \ No newline at end of file diff --git a/node_modules/.bin/tsc b/node_modules/.bin/tsc new file mode 120000 index 0000000..0863208 --- /dev/null +++ b/node_modules/.bin/tsc @@ -0,0 +1 @@ +../typescript/bin/tsc \ No newline at end of file diff --git a/node_modules/.bin/tsserver b/node_modules/.bin/tsserver new file mode 120000 index 0000000..f8f8f1a --- /dev/null +++ b/node_modules/.bin/tsserver @@ -0,0 +1 @@ +../typescript/bin/tsserver \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..dfbbf94 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,1025 @@ +{ + "name": "sample-component-library", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "optional": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "optional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz", + "integrity": "sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^10.4.1", + "is-reference": "1.2.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=16.0.0 || 14 >= 14.17" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-typescript": { + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz", + "integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0||^4.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.0.tgz", + "integrity": "sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.4.tgz", + "integrity": "sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "optional": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "optional": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "optional": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true, + "optional": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz", + "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.21.0", + "@rollup/rollup-android-arm64": "4.21.0", + "@rollup/rollup-darwin-arm64": "4.21.0", + "@rollup/rollup-darwin-x64": "4.21.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.0", + "@rollup/rollup-linux-arm-musleabihf": "4.21.0", + "@rollup/rollup-linux-arm64-gnu": "4.21.0", + "@rollup/rollup-linux-arm64-musl": "4.21.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.0", + "@rollup/rollup-linux-riscv64-gnu": "4.21.0", + "@rollup/rollup-linux-s390x-gnu": "4.21.0", + "@rollup/rollup-linux-x64-gnu": "4.21.0", + "@rollup/rollup-linux-x64-musl": "4.21.0", + "@rollup/rollup-win32-arm64-msvc": "4.21.0", + "@rollup/rollup-win32-ia32-msvc": "4.21.0", + "@rollup/rollup-win32-x64-msvc": "4.21.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-dts": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.1.1.tgz", + "integrity": "sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.10" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/Swatinem" + }, + "optionalDependencies": { + "@babel/code-frame": "^7.24.2" + }, + "peerDependencies": { + "rollup": "^3.29.4 || ^4", + "typescript": "^4.5 || ^5.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "optional": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + } + } +} diff --git a/node_modules/@babel/code-frame/LICENSE b/node_modules/@babel/code-frame/LICENSE new file mode 100644 index 0000000..f31575e --- /dev/null +++ b/node_modules/@babel/code-frame/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@babel/code-frame/README.md b/node_modules/@babel/code-frame/README.md new file mode 100644 index 0000000..7160755 --- /dev/null +++ b/node_modules/@babel/code-frame/README.md @@ -0,0 +1,19 @@ +# @babel/code-frame + +> Generate errors that contain a code frame that point to source locations. + +See our website [@babel/code-frame](https://babeljs.io/docs/babel-code-frame) for more information. + +## Install + +Using npm: + +```sh +npm install --save-dev @babel/code-frame +``` + +or using yarn: + +```sh +yarn add @babel/code-frame --dev +``` diff --git a/node_modules/@babel/code-frame/lib/index.js b/node_modules/@babel/code-frame/lib/index.js new file mode 100644 index 0000000..53461aa --- /dev/null +++ b/node_modules/@babel/code-frame/lib/index.js @@ -0,0 +1,156 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.codeFrameColumns = codeFrameColumns; +exports.default = _default; +var _highlight = require("@babel/highlight"); +var _picocolors = _interopRequireWildcard(require("picocolors"), true); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +const colors = typeof process === "object" && (process.env.FORCE_COLOR === "0" || process.env.FORCE_COLOR === "false") ? (0, _picocolors.createColors)(false) : _picocolors.default; +const compose = (f, g) => v => f(g(v)); +let pcWithForcedColor = undefined; +function getColors(forceColor) { + if (forceColor) { + var _pcWithForcedColor; + (_pcWithForcedColor = pcWithForcedColor) != null ? _pcWithForcedColor : pcWithForcedColor = (0, _picocolors.createColors)(true); + return pcWithForcedColor; + } + return colors; +} +let deprecationWarningShown = false; +function getDefs(colors) { + return { + gutter: colors.gray, + marker: compose(colors.red, colors.bold), + message: compose(colors.red, colors.bold) + }; +} +const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; +function getMarkerLines(loc, source, opts) { + const startLoc = Object.assign({ + column: 0, + line: -1 + }, loc.start); + const endLoc = Object.assign({}, startLoc, loc.end); + const { + linesAbove = 2, + linesBelow = 3 + } = opts || {}; + const startLine = startLoc.line; + const startColumn = startLoc.column; + const endLine = endLoc.line; + const endColumn = endLoc.column; + let start = Math.max(startLine - (linesAbove + 1), 0); + let end = Math.min(source.length, endLine + linesBelow); + if (startLine === -1) { + start = 0; + } + if (endLine === -1) { + end = source.length; + } + const lineDiff = endLine - startLine; + const markerLines = {}; + if (lineDiff) { + for (let i = 0; i <= lineDiff; i++) { + const lineNumber = i + startLine; + if (!startColumn) { + markerLines[lineNumber] = true; + } else if (i === 0) { + const sourceLength = source[lineNumber - 1].length; + markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1]; + } else if (i === lineDiff) { + markerLines[lineNumber] = [0, endColumn]; + } else { + const sourceLength = source[lineNumber - i].length; + markerLines[lineNumber] = [0, sourceLength]; + } + } + } else { + if (startColumn === endColumn) { + if (startColumn) { + markerLines[startLine] = [startColumn, 0]; + } else { + markerLines[startLine] = true; + } + } else { + markerLines[startLine] = [startColumn, endColumn - startColumn]; + } + } + return { + start, + end, + markerLines + }; +} +function codeFrameColumns(rawLines, loc, opts = {}) { + const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts); + const colors = getColors(opts.forceColor); + const defs = getDefs(colors); + const maybeHighlight = (fmt, string) => { + return highlighted ? fmt(string) : string; + }; + const lines = rawLines.split(NEWLINE); + const { + start, + end, + markerLines + } = getMarkerLines(loc, lines, opts); + const hasColumns = loc.start && typeof loc.start.column === "number"; + const numberMaxWidth = String(end).length; + const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines; + let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => { + const number = start + 1 + index; + const paddedNumber = ` ${number}`.slice(-numberMaxWidth); + const gutter = ` ${paddedNumber} |`; + const hasMarker = markerLines[number]; + const lastMarkerLine = !markerLines[number + 1]; + if (hasMarker) { + let markerLine = ""; + if (Array.isArray(hasMarker)) { + const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " "); + const numberOfMarkers = hasMarker[1] || 1; + markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join(""); + if (lastMarkerLine && opts.message) { + markerLine += " " + maybeHighlight(defs.message, opts.message); + } + } + return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join(""); + } else { + return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`; + } + }).join("\n"); + if (opts.message && !hasColumns) { + frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`; + } + if (highlighted) { + return colors.reset(frame); + } else { + return frame; + } +} +function _default(rawLines, lineNumber, colNumber, opts = {}) { + if (!deprecationWarningShown) { + deprecationWarningShown = true; + const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."; + if (process.emitWarning) { + process.emitWarning(message, "DeprecationWarning"); + } else { + const deprecationError = new Error(message); + deprecationError.name = "DeprecationWarning"; + console.warn(new Error(message)); + } + } + colNumber = Math.max(colNumber, 0); + const location = { + start: { + column: colNumber, + line: lineNumber + } + }; + return codeFrameColumns(rawLines, location, opts); +} + +//# sourceMappingURL=index.js.map diff --git a/node_modules/@babel/code-frame/lib/index.js.map b/node_modules/@babel/code-frame/lib/index.js.map new file mode 100644 index 0000000..268f2c5 --- /dev/null +++ b/node_modules/@babel/code-frame/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_highlight","require","_picocolors","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","colors","process","env","FORCE_COLOR","createColors","_colors","compose","f","g","v","pcWithForcedColor","undefined","getColors","forceColor","_pcWithForcedColor","deprecationWarningShown","getDefs","gutter","gray","marker","red","bold","message","NEWLINE","getMarkerLines","loc","source","opts","startLoc","assign","column","line","start","endLoc","end","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","Math","max","min","length","lineDiff","markerLines","lineNumber","sourceLength","codeFrameColumns","rawLines","highlighted","highlightCode","shouldHighlight","defs","maybeHighlight","fmt","string","lines","split","hasColumns","numberMaxWidth","String","highlightedLines","highlight","frame","slice","map","index","number","paddedNumber","hasMarker","lastMarkerLine","markerLine","Array","isArray","markerSpacing","replace","numberOfMarkers","repeat","join","reset","_default","colNumber","emitWarning","deprecationError","Error","name","console","warn","location"],"sources":["../src/index.ts"],"sourcesContent":["import highlight, { shouldHighlight } from \"@babel/highlight\";\n\nimport _colors, { createColors } from \"picocolors\";\nimport type { Colors, Formatter } from \"picocolors/types\";\n// See https://github.com/alexeyraspopov/picocolors/issues/62\nconst colors =\n typeof process === \"object\" &&\n (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\")\n ? createColors(false)\n : _colors;\n\nconst compose: (f: (gv: U) => V, g: (v: T) => U) => (v: T) => V =\n (f, g) => v =>\n f(g(v));\n\nlet pcWithForcedColor: Colors = undefined;\nfunction getColors(forceColor: boolean) {\n if (forceColor) {\n pcWithForcedColor ??= createColors(true);\n return pcWithForcedColor;\n }\n return colors;\n}\n\nlet deprecationWarningShown = false;\n\ntype Location = {\n column: number;\n line: number;\n};\n\ntype NodeLocation = {\n end?: Location;\n start: Location;\n};\n\nexport interface Options {\n /** Syntax highlight the code as JavaScript for terminals. default: false */\n highlightCode?: boolean;\n /** The number of lines to show above the error. default: 2 */\n linesAbove?: number;\n /** The number of lines to show below the error. default: 3 */\n linesBelow?: number;\n /**\n * Forcibly syntax highlight the code as JavaScript (for non-terminals);\n * overrides highlightCode.\n * default: false\n */\n forceColor?: boolean;\n /**\n * Pass in a string to be displayed inline (if possible) next to the\n * highlighted location in the code. If it can't be positioned inline,\n * it will be placed above the code frame.\n * default: nothing\n */\n message?: string;\n}\n\n/**\n * Styles for code frame token types.\n */\nfunction getDefs(colors: Colors) {\n return {\n gutter: colors.gray,\n marker: compose(colors.red, colors.bold),\n message: compose(colors.red, colors.bold),\n };\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * Extract what lines should be marked and highlighted.\n */\n\ntype MarkerLines = Record;\n\nfunction getMarkerLines(\n loc: NodeLocation,\n source: Array,\n opts: Options,\n): {\n start: number;\n end: number;\n markerLines: MarkerLines;\n} {\n const startLoc: Location = {\n column: 0,\n line: -1,\n ...loc.start,\n };\n const endLoc: Location = {\n ...startLoc,\n ...loc.end,\n };\n const { linesAbove = 2, linesBelow = 3 } = opts || {};\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n\n return { start, end, markerLines };\n}\n\nexport function codeFrameColumns(\n rawLines: string,\n loc: NodeLocation,\n opts: Options = {},\n): string {\n const highlighted =\n (opts.highlightCode || opts.forceColor) && shouldHighlight(opts);\n const colors = getColors(opts.forceColor);\n const defs = getDefs(colors);\n const maybeHighlight = (fmt: Formatter, string: string) => {\n return highlighted ? fmt(string) : string;\n };\n const lines = rawLines.split(NEWLINE);\n const { start, end, markerLines } = getMarkerLines(loc, lines, opts);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n const numberMaxWidth = String(end).length;\n\n const highlightedLines = highlighted ? highlight(rawLines, opts) : rawLines;\n\n let frame = highlightedLines\n .split(NEWLINE, end)\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line\n .slice(0, Math.max(hasMarker[0] - 1, 0))\n .replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\n \"\\n \",\n maybeHighlight(defs.gutter, gutter.replace(/\\d/g, \" \")),\n \" \",\n markerSpacing,\n maybeHighlight(defs.marker, \"^\").repeat(numberOfMarkers),\n ].join(\"\");\n\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + maybeHighlight(defs.message, opts.message);\n }\n }\n return [\n maybeHighlight(defs.marker, \">\"),\n maybeHighlight(defs.gutter, gutter),\n line.length > 0 ? ` ${line}` : \"\",\n markerLine,\n ].join(\"\");\n } else {\n return ` ${maybeHighlight(defs.gutter, gutter)}${\n line.length > 0 ? ` ${line}` : \"\"\n }`;\n }\n })\n .join(\"\\n\");\n\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n\n if (highlighted) {\n return colors.reset(frame);\n } else {\n return frame;\n }\n}\n\n/**\n * Create a code frame, adding line numbers, code highlighting, and pointing to a given position.\n */\n\nexport default function (\n rawLines: string,\n lineNumber: number,\n colNumber?: number | null,\n opts: Options = {},\n): string {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n\n const message =\n \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n if (process.emitWarning) {\n // A string is directly supplied to emitWarning, because when supplying an\n // Error object node throws in the tests because of different contexts\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n\n colNumber = Math.max(colNumber, 0);\n\n const location: NodeLocation = {\n start: { column: colNumber, line: lineNumber },\n };\n\n return codeFrameColumns(rawLines, location, opts);\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/code-frame/package.json b/node_modules/@babel/code-frame/package.json new file mode 100644 index 0000000..9e672b7 --- /dev/null +++ b/node_modules/@babel/code-frame/package.json @@ -0,0 +1,30 @@ +{ + "name": "@babel/code-frame", + "version": "7.24.7", + "description": "Generate errors that contain a code frame that point to source locations.", + "author": "The Babel Team (https://babel.dev/team)", + "homepage": "https://babel.dev/docs/en/next/babel-code-frame", + "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-code-frame" + }, + "main": "./lib/index.js", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "devDependencies": { + "import-meta-resolve": "^4.1.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "type": "commonjs" +} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/LICENSE b/node_modules/@babel/helper-validator-identifier/LICENSE new file mode 100644 index 0000000..f31575e --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@babel/helper-validator-identifier/README.md b/node_modules/@babel/helper-validator-identifier/README.md new file mode 100644 index 0000000..05c19e6 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/README.md @@ -0,0 +1,19 @@ +# @babel/helper-validator-identifier + +> Validate identifier/keywords name + +See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/babel-helper-validator-identifier) for more information. + +## Install + +Using npm: + +```sh +npm install --save @babel/helper-validator-identifier +``` + +or using yarn: + +```sh +yarn add @babel/helper-validator-identifier +``` diff --git a/node_modules/@babel/helper-validator-identifier/lib/identifier.js b/node_modules/@babel/helper-validator-identifier/lib/identifier.js new file mode 100644 index 0000000..8ef8303 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/identifier.js @@ -0,0 +1,70 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isIdentifierChar = isIdentifierChar; +exports.isIdentifierName = isIdentifierName; +exports.isIdentifierStart = isIdentifierStart; +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +function isInAstralSet(code, set) { + let pos = 0x10000; + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + return false; +} +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} +function isIdentifierName(name) { + let isFirst = true; + for (let i = 0; i < name.length; i++) { + let cp = name.charCodeAt(i); + if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) { + const trail = name.charCodeAt(++i); + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + if (isFirst) { + isFirst = false; + if (!isIdentifierStart(cp)) { + return false; + } + } else if (!isIdentifierChar(cp)) { + return false; + } + } + return !isFirst; +} + +//# sourceMappingURL=identifier.js.map diff --git a/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map b/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map new file mode 100644 index 0000000..e2a9c30 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map @@ -0,0 +1 @@ +{"version":3,"names":["nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","set","pos","i","length","isIdentifierStart","test","String","fromCharCode","isIdentifierChar","isIdentifierName","name","isFirst","cp","charCodeAt","trail"],"sources":["../src/identifier.ts"],"sourcesContent":["// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.js`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.js`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,4026,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,757,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,81,2,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,9,5351,0,7,14,13835,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,983,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n"],"mappings":";;;;;;;;AAaA,IAAIA,4BAA4B,GAAG,8qIAA8qI;AAEjtI,IAAIC,uBAAuB,GAAG,2lFAA2lF;AAEznF,MAAMC,uBAAuB,GAAG,IAAIC,MAAM,CACxC,GAAG,GAAGH,4BAA4B,GAAG,GACvC,CAAC;AACD,MAAMI,kBAAkB,GAAG,IAAID,MAAM,CACnC,GAAG,GAAGH,4BAA4B,GAAGC,uBAAuB,GAAG,GACjE,CAAC;AAEDD,4BAA4B,GAAGC,uBAAuB,GAAG,IAAI;AAQ7D,MAAMI,0BAA0B,GAAG,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,CAAC;AAEx+C,MAAMC,qBAAqB,GAAG,CAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAA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","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/lib/index.js b/node_modules/@babel/helper-validator-identifier/lib/index.js new file mode 100644 index 0000000..76b2282 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/index.js @@ -0,0 +1,57 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "isIdentifierChar", { + enumerable: true, + get: function () { + return _identifier.isIdentifierChar; + } +}); +Object.defineProperty(exports, "isIdentifierName", { + enumerable: true, + get: function () { + return _identifier.isIdentifierName; + } +}); +Object.defineProperty(exports, "isIdentifierStart", { + enumerable: true, + get: function () { + return _identifier.isIdentifierStart; + } +}); +Object.defineProperty(exports, "isKeyword", { + enumerable: true, + get: function () { + return _keyword.isKeyword; + } +}); +Object.defineProperty(exports, "isReservedWord", { + enumerable: true, + get: function () { + return _keyword.isReservedWord; + } +}); +Object.defineProperty(exports, "isStrictBindOnlyReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictBindOnlyReservedWord; + } +}); +Object.defineProperty(exports, "isStrictBindReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictBindReservedWord; + } +}); +Object.defineProperty(exports, "isStrictReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictReservedWord; + } +}); +var _identifier = require("./identifier.js"); +var _keyword = require("./keyword.js"); + +//# sourceMappingURL=index.js.map diff --git a/node_modules/@babel/helper-validator-identifier/lib/index.js.map b/node_modules/@babel/helper-validator-identifier/lib/index.js.map new file mode 100644 index 0000000..d985f3b --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_identifier","require","_keyword"],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/lib/keyword.js b/node_modules/@babel/helper-validator-identifier/lib/keyword.js new file mode 100644 index 0000000..054cf84 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/keyword.js @@ -0,0 +1,35 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isKeyword = isKeyword; +exports.isReservedWord = isReservedWord; +exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord; +exports.isStrictBindReservedWord = isStrictBindReservedWord; +exports.isStrictReservedWord = isStrictReservedWord; +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} +function isKeyword(word) { + return keywords.has(word); +} + +//# sourceMappingURL=keyword.js.map diff --git a/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map b/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map new file mode 100644 index 0000000..3471f78 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map @@ -0,0 +1 @@ +{"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,CACT;EACDC,MAAM,EAAE,CACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,CACR;EACDC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW;AAClC,CAAC;AACD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAACL,aAAa,CAACC,OAAO,CAAC;AAC/C,MAAMK,sBAAsB,GAAG,IAAID,GAAG,CAACL,aAAa,CAACE,MAAM,CAAC;AAC5D,MAAMK,0BAA0B,GAAG,IAAIF,GAAG,CAACL,aAAa,CAACG,UAAU,CAAC;AAK7D,SAASK,cAAcA,CAACC,IAAY,EAAEC,QAAiB,EAAW;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAO,IAAKA,IAAI,KAAK,MAAM;AAC1D;AAOO,SAASE,oBAAoBA,CAACF,IAAY,EAAEC,QAAiB,EAAW;EAC7E,OAAOF,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC,IAAIJ,sBAAsB,CAACM,GAAG,CAACH,IAAI,CAAC;AAC3E;AAMO,SAASI,4BAA4BA,CAACJ,IAAY,EAAW;EAClE,OAAOF,0BAA0B,CAACK,GAAG,CAACH,IAAI,CAAC;AAC7C;AAOO,SAASK,wBAAwBA,CACtCL,IAAY,EACZC,QAAiB,EACR;EACT,OACEC,oBAAoB,CAACF,IAAI,EAAEC,QAAQ,CAAC,IAAIG,4BAA4B,CAACJ,IAAI,CAAC;AAE9E;AAEO,SAASM,SAASA,CAACN,IAAY,EAAW;EAC/C,OAAOL,QAAQ,CAACQ,GAAG,CAACH,IAAI,CAAC;AAC3B","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/package.json b/node_modules/@babel/helper-validator-identifier/package.json new file mode 100644 index 0000000..0e2e01b --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/package.json @@ -0,0 +1,31 @@ +{ + "name": "@babel/helper-validator-identifier", + "version": "7.24.7", + "description": "Validate identifier/keywords name", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-helper-validator-identifier" + }, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "exports": { + ".": { + "types": "./lib/index.d.ts", + "default": "./lib/index.js" + }, + "./package.json": "./package.json" + }, + "devDependencies": { + "@unicode/unicode-15.1.0": "^1.5.2", + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" +} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js b/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js new file mode 100644 index 0000000..f3fd9e9 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js @@ -0,0 +1,73 @@ +"use strict"; + +// Always use the latest available version of Unicode! +// https://tc39.github.io/ecma262/#sec-conformance +const version = "15.1.0"; + +const start = require( + "@unicode/unicode-" + version + "/Binary_Property/ID_Start/code-points.js" +).filter(function (ch) { + return ch > 0x7f; +}); +let last = -1; +const cont = require( + "@unicode/unicode-" + version + "/Binary_Property/ID_Continue/code-points.js" +).filter(function (ch) { + return ch > 0x7f && search(start, ch, last + 1) === -1; +}); + +function search(arr, ch, starting) { + for (let i = starting; arr[i] <= ch && i < arr.length; last = i++) { + if (arr[i] === ch) return i; + } + return -1; +} + +function pad(str, width) { + while (str.length < width) str = "0" + str; + return str; +} + +function esc(code) { + const hex = code.toString(16); + if (hex.length <= 2) return "\\x" + pad(hex, 2); + else return "\\u" + pad(hex, 4); +} + +function generate(chars) { + const astral = []; + let re = ""; + for (let i = 0, at = 0x10000; i < chars.length; i++) { + const from = chars[i]; + let to = from; + while (i < chars.length - 1 && chars[i + 1] === to + 1) { + i++; + to++; + } + if (to <= 0xffff) { + if (from === to) re += esc(from); + else if (from + 1 === to) re += esc(from) + esc(to); + else re += esc(from) + "-" + esc(to); + } else { + astral.push(from - at, to - from); + at = to; + } + } + return { nonASCII: re, astral: astral }; +} + +const startData = generate(start); +const contData = generate(cont); + +console.log("/* prettier-ignore */"); +console.log('let nonASCIIidentifierStartChars = "' + startData.nonASCII + '";'); +console.log("/* prettier-ignore */"); +console.log('let nonASCIIidentifierChars = "' + contData.nonASCII + '";'); +console.log("/* prettier-ignore */"); +console.log( + "const astralIdentifierStartCodes = " + JSON.stringify(startData.astral) + ";" +); +console.log("/* prettier-ignore */"); +console.log( + "const astralIdentifierCodes = " + JSON.stringify(contData.astral) + ";" +); diff --git a/node_modules/@babel/highlight/LICENSE b/node_modules/@babel/highlight/LICENSE new file mode 100644 index 0000000..f31575e --- /dev/null +++ b/node_modules/@babel/highlight/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@babel/highlight/README.md b/node_modules/@babel/highlight/README.md new file mode 100644 index 0000000..4c2ec87 --- /dev/null +++ b/node_modules/@babel/highlight/README.md @@ -0,0 +1,19 @@ +# @babel/highlight + +> Syntax highlight JavaScript strings for output in terminals. + +See our website [@babel/highlight](https://babeljs.io/docs/babel-highlight) for more information. + +## Install + +Using npm: + +```sh +npm install --save-dev @babel/highlight +``` + +or using yarn: + +```sh +yarn add @babel/highlight --dev +``` diff --git a/node_modules/@babel/highlight/lib/index.js b/node_modules/@babel/highlight/lib/index.js new file mode 100644 index 0000000..944a043 --- /dev/null +++ b/node_modules/@babel/highlight/lib/index.js @@ -0,0 +1,119 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = highlight; +exports.shouldHighlight = shouldHighlight; +var _jsTokens = require("js-tokens"); +var _helperValidatorIdentifier = require("@babel/helper-validator-identifier"); +var _picocolors = _interopRequireWildcard(require("picocolors"), true); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +const colors = typeof process === "object" && (process.env.FORCE_COLOR === "0" || process.env.FORCE_COLOR === "false") ? (0, _picocolors.createColors)(false) : _picocolors.default; +const compose = (f, g) => v => f(g(v)); +const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]); +function getDefs(colors) { + return { + keyword: colors.cyan, + capitalized: colors.yellow, + jsxIdentifier: colors.yellow, + punctuator: colors.yellow, + number: colors.magenta, + string: colors.green, + regex: colors.magenta, + comment: colors.gray, + invalid: compose(compose(colors.white, colors.bgRed), colors.bold) + }; +} +const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; +const BRACKET = /^[()[\]{}]$/; +let tokenize; +{ + const JSX_TAG = /^[a-z][\w-]*$/i; + const getTokenType = function (token, offset, text) { + if (token.type === "name") { + if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) { + return "keyword"; + } + if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) === " colorize(str)).join("\n"); + } else { + highlighted += value; + } + } + return highlighted; +} +function shouldHighlight(options) { + return colors.isColorSupported || options.forceColor; +} +let pcWithForcedColor = undefined; +function getColors(forceColor) { + if (forceColor) { + var _pcWithForcedColor; + (_pcWithForcedColor = pcWithForcedColor) != null ? _pcWithForcedColor : pcWithForcedColor = (0, _picocolors.createColors)(true); + return pcWithForcedColor; + } + return colors; +} +function highlight(code, options = {}) { + if (code !== "" && shouldHighlight(options)) { + const defs = getDefs(getColors(options.forceColor)); + return highlightTokens(defs, code); + } else { + return code; + } +} +{ + let chalk, chalkWithForcedColor; + exports.getChalk = ({ + forceColor + }) => { + var _chalk; + (_chalk = chalk) != null ? _chalk : chalk = require("chalk"); + if (forceColor) { + var _chalkWithForcedColor; + (_chalkWithForcedColor = chalkWithForcedColor) != null ? _chalkWithForcedColor : chalkWithForcedColor = new chalk.constructor({ + enabled: true, + level: 1 + }); + return chalkWithForcedColor; + } + return chalk; + }; +} + +//# sourceMappingURL=index.js.map diff --git a/node_modules/@babel/highlight/lib/index.js.map b/node_modules/@babel/highlight/lib/index.js.map new file mode 100644 index 0000000..1672cd5 --- /dev/null +++ b/node_modules/@babel/highlight/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_jsTokens","require","_helperValidatorIdentifier","_picocolors","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","colors","process","env","FORCE_COLOR","createColors","_colors","compose","f","g","v","sometimesKeywords","Set","getDefs","keyword","cyan","capitalized","yellow","jsxIdentifier","punctuator","number","magenta","string","green","regex","comment","gray","invalid","white","bgRed","bold","NEWLINE","BRACKET","tokenize","JSX_TAG","getTokenType","token","offset","text","type","isKeyword","value","isStrictReservedWord","test","slice","toLowerCase","match","jsTokens","exec","matchToToken","index","highlightTokens","defs","highlighted","colorize","split","map","str","join","shouldHighlight","options","isColorSupported","forceColor","pcWithForcedColor","undefined","getColors","_pcWithForcedColor","highlight","code","chalk","chalkWithForcedColor","exports","getChalk","_chalk","_chalkWithForcedColor","constructor","enabled","level"],"sources":["../src/index.ts"],"sourcesContent":["import type { Token as JSToken, JSXToken } from \"js-tokens\";\nimport jsTokens from \"js-tokens\";\n\nimport {\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nimport _colors, { createColors } from \"picocolors\";\nimport type { Colors, Formatter } from \"picocolors/types\";\n// See https://github.com/alexeyraspopov/picocolors/issues/62\nconst colors =\n typeof process === \"object\" &&\n (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\")\n ? createColors(false)\n : _colors;\n\nconst compose: (f: (gv: U) => V, g: (v: T) => U) => (v: T) => V =\n (f, g) => v =>\n f(g(v));\n\n/**\n * Names that are always allowed as identifiers, but also appear as keywords\n * within certain syntactic productions.\n *\n * https://tc39.es/ecma262/#sec-keywords-and-reserved-words\n *\n * `target` has been omitted since it is very likely going to be a false\n * positive.\n */\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\ntype InternalTokenType =\n | \"keyword\"\n | \"capitalized\"\n | \"jsxIdentifier\"\n | \"punctuator\"\n | \"number\"\n | \"string\"\n | \"regex\"\n | \"comment\"\n | \"invalid\";\n\ntype Token = {\n type: InternalTokenType | \"uncolored\";\n value: string;\n};\n/**\n * Styles for token types.\n */\nfunction getDefs(colors: Colors): Record {\n return {\n keyword: colors.cyan,\n capitalized: colors.yellow,\n jsxIdentifier: colors.yellow,\n punctuator: colors.yellow,\n number: colors.magenta,\n string: colors.green,\n regex: colors.magenta,\n comment: colors.gray,\n invalid: compose(compose(colors.white, colors.bgRed), colors.bold),\n };\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * RegExp to test for the three types of brackets.\n */\nconst BRACKET = /^[()[\\]{}]$/;\n\nlet tokenize: (\n text: string,\n) => Generator<{ type: InternalTokenType | \"uncolored\"; value: string }>;\n\nif (process.env.BABEL_8_BREAKING) {\n /**\n * Get the type of token, specifying punctuator type.\n */\n const getTokenType = function (\n token: JSToken | JSXToken,\n ): InternalTokenType | \"uncolored\" {\n if (token.type === \"IdentifierName\") {\n if (\n isKeyword(token.value) ||\n isStrictReservedWord(token.value, true) ||\n sometimesKeywords.has(token.value)\n ) {\n return \"keyword\";\n }\n\n if (token.value[0] !== token.value[0].toLowerCase()) {\n return \"capitalized\";\n }\n }\n\n if (token.type === \"Punctuator\" && BRACKET.test(token.value)) {\n return \"uncolored\";\n }\n\n if (token.type === \"Invalid\" && token.value === \"@\") {\n return \"punctuator\";\n }\n\n switch (token.type) {\n case \"NumericLiteral\":\n return \"number\";\n\n case \"StringLiteral\":\n case \"JSXString\":\n case \"NoSubstitutionTemplate\":\n return \"string\";\n\n case \"RegularExpressionLiteral\":\n return \"regex\";\n\n case \"Punctuator\":\n case \"JSXPunctuator\":\n return \"punctuator\";\n\n case \"MultiLineComment\":\n case \"SingleLineComment\":\n return \"comment\";\n\n case \"Invalid\":\n case \"JSXInvalid\":\n return \"invalid\";\n\n case \"JSXIdentifier\":\n return \"jsxIdentifier\";\n\n default:\n return \"uncolored\";\n }\n };\n\n /**\n * Turn a string of JS into an array of objects.\n */\n tokenize = function* (text: string): Generator {\n for (const token of jsTokens(text, { jsx: true })) {\n switch (token.type) {\n case \"TemplateHead\":\n yield { type: \"string\", value: token.value.slice(0, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateMiddle\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateTail\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1) };\n break;\n\n default:\n yield {\n type: getTokenType(token),\n value: token.value,\n };\n }\n }\n };\n} else {\n /**\n * RegExp to test for what seems to be a JSX tag name.\n */\n const JSX_TAG = /^[a-z][\\w-]*$/i;\n\n // The token here is defined in js-tokens@4. However we don't bother\n // typing it since the whole block will be removed in Babel 8\n const getTokenType = function (token: any, offset: number, text: string) {\n if (token.type === \"name\") {\n if (\n isKeyword(token.value) ||\n isStrictReservedWord(token.value, true) ||\n sometimesKeywords.has(token.value)\n ) {\n return \"keyword\";\n }\n\n if (\n JSX_TAG.test(token.value) &&\n (text[offset - 1] === \"<\" || text.slice(offset - 2, offset) === \", text: string) {\n let highlighted = \"\";\n\n for (const { type, value } of tokenize(text)) {\n const colorize = defs[type];\n if (colorize) {\n highlighted += value\n .split(NEWLINE)\n .map(str => colorize(str))\n .join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n\n return highlighted;\n}\n\n/**\n * Highlight `text` using the token definitions in `defs`.\n */\n\ntype Options = {\n forceColor?: boolean;\n};\n\n/**\n * Whether the code should be highlighted given the passed options.\n */\nexport function shouldHighlight(options: Options): boolean {\n return colors.isColorSupported || options.forceColor;\n}\n\nlet pcWithForcedColor: Colors = undefined;\nfunction getColors(forceColor: boolean) {\n if (forceColor) {\n pcWithForcedColor ??= createColors(true);\n return pcWithForcedColor;\n }\n return colors;\n}\n\n/**\n * Highlight `code`.\n */\nexport default function highlight(code: string, options: Options = {}): string {\n if (code !== \"\" && shouldHighlight(options)) {\n const defs = getDefs(getColors(options.forceColor));\n return highlightTokens(defs, code);\n } else {\n return code;\n }\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n let chalk: any, chalkWithForcedColor: any;\n // eslint-disable-next-line no-restricted-globals\n exports.getChalk = ({ forceColor }: Options) => {\n // eslint-disable-next-line no-restricted-globals\n chalk ??= require(\"chalk\");\n if (forceColor) {\n chalkWithForcedColor ??= new chalk.constructor({\n enabled: true,\n level: 1,\n });\n return chalkWithForcedColor;\n }\n return chalk;\n };\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/highlight/package.json b/node_modules/@babel/highlight/package.json new file mode 100644 index 0000000..935bfb5 --- /dev/null +++ b/node_modules/@babel/highlight/package.json @@ -0,0 +1,30 @@ +{ + "name": "@babel/highlight", + "version": "7.24.7", + "description": "Syntax highlight JavaScript strings for output in terminals.", + "author": "The Babel Team (https://babel.dev/team)", + "homepage": "https://babel.dev/docs/en/next/babel-highlight", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-highlight" + }, + "main": "./lib/index.js", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "devDependencies": { + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "type": "commonjs" +} \ No newline at end of file diff --git a/node_modules/@isaacs/cliui/LICENSE.txt b/node_modules/@isaacs/cliui/LICENSE.txt new file mode 100644 index 0000000..c7e2747 --- /dev/null +++ b/node_modules/@isaacs/cliui/LICENSE.txt @@ -0,0 +1,14 @@ +Copyright (c) 2015, Contributors + +Permission to use, copy, modify, and/or distribute this software +for any purpose with or without fee is hereby granted, provided +that the above copyright notice and this permission notice +appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE +LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/@isaacs/cliui/README.md b/node_modules/@isaacs/cliui/README.md new file mode 100644 index 0000000..4880642 --- /dev/null +++ b/node_modules/@isaacs/cliui/README.md @@ -0,0 +1,143 @@ +# @isaacs/cliui + +Temporary fork of [cliui](http://npm.im/cliui). + +![ci](https://github.com/yargs/cliui/workflows/ci/badge.svg) +[![NPM version](https://img.shields.io/npm/v/cliui.svg)](https://www.npmjs.com/package/cliui) +[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) +![nycrc config on GitHub](https://img.shields.io/nycrc/yargs/cliui) + +easily create complex multi-column command-line-interfaces. + +## Example + +```js +const ui = require('cliui')() + +ui.div('Usage: $0 [command] [options]') + +ui.div({ + text: 'Options:', + padding: [2, 0, 1, 0] +}) + +ui.div( + { + text: "-f, --file", + width: 20, + padding: [0, 4, 0, 4] + }, + { + text: "the file to load." + + chalk.green("(if this description is long it wraps).") + , + width: 20 + }, + { + text: chalk.red("[required]"), + align: 'right' + } +) + +console.log(ui.toString()) +``` + +## Deno/ESM Support + +As of `v7` `cliui` supports [Deno](https://github.com/denoland/deno) and +[ESM](https://nodejs.org/api/esm.html#esm_ecmascript_modules): + +```typescript +import cliui from "https://deno.land/x/cliui/deno.ts"; + +const ui = cliui({}) + +ui.div('Usage: $0 [command] [options]') + +ui.div({ + text: 'Options:', + padding: [2, 0, 1, 0] +}) + +ui.div({ + text: "-f, --file", + width: 20, + padding: [0, 4, 0, 4] +}) + +console.log(ui.toString()) +``` + + + +## Layout DSL + +cliui exposes a simple layout DSL: + +If you create a single `ui.div`, passing a string rather than an +object: + +* `\n`: characters will be interpreted as new rows. +* `\t`: characters will be interpreted as new columns. +* `\s`: characters will be interpreted as padding. + +**as an example...** + +```js +var ui = require('./')({ + width: 60 +}) + +ui.div( + 'Usage: node ./bin/foo.js\n' + + ' \t provide a regex\n' + + ' \t provide a glob\t [required]' +) + +console.log(ui.toString()) +``` + +**will output:** + +```shell +Usage: node ./bin/foo.js + provide a regex + provide a glob [required] +``` + +## Methods + +```js +cliui = require('cliui') +``` + +### cliui({width: integer}) + +Specify the maximum width of the UI being generated. +If no width is provided, cliui will try to get the current window's width and use it, and if that doesn't work, width will be set to `80`. + +### cliui({wrap: boolean}) + +Enable or disable the wrapping of text in a column. + +### cliui.div(column, column, column) + +Create a row with any number of columns, a column +can either be a string, or an object with the following +options: + +* **text:** some text to place in the column. +* **width:** the width of a column. +* **align:** alignment, `right` or `center`. +* **padding:** `[top, right, bottom, left]`. +* **border:** should a border be placed around the div? + +### cliui.span(column, column, column) + +Similar to `div`, except the next row will be appended without +a new line being created. + +### cliui.resetOutput() + +Resets the UI elements of the current cliui instance, maintaining the values +set for `width` and `wrap`. diff --git a/node_modules/@isaacs/cliui/build/index.cjs b/node_modules/@isaacs/cliui/build/index.cjs new file mode 100644 index 0000000..aca2b85 --- /dev/null +++ b/node_modules/@isaacs/cliui/build/index.cjs @@ -0,0 +1,317 @@ +'use strict'; + +const align = { + right: alignRight, + center: alignCenter +}; +const top = 0; +const right = 1; +const bottom = 2; +const left = 3; +class UI { + constructor(opts) { + var _a; + this.width = opts.width; + /* c8 ignore start */ + this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true; + /* c8 ignore stop */ + this.rows = []; + } + span(...args) { + const cols = this.div(...args); + cols.span = true; + } + resetOutput() { + this.rows = []; + } + div(...args) { + if (args.length === 0) { + this.div(''); + } + if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === 'string') { + return this.applyLayoutDSL(args[0]); + } + const cols = args.map(arg => { + if (typeof arg === 'string') { + return this.colFromString(arg); + } + return arg; + }); + this.rows.push(cols); + return cols; + } + shouldApplyLayoutDSL(...args) { + return args.length === 1 && typeof args[0] === 'string' && + /[\t\n]/.test(args[0]); + } + applyLayoutDSL(str) { + const rows = str.split('\n').map(row => row.split('\t')); + let leftColumnWidth = 0; + // simple heuristic for layout, make sure the + // second column lines up along the left-hand. + // don't allow the first column to take up more + // than 50% of the screen. + rows.forEach(columns => { + if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { + leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); + } + }); + // generate a table: + // replacing ' ' with padding calculations. + // using the algorithmically generated width. + rows.forEach(columns => { + this.div(...columns.map((r, i) => { + return { + text: r.trim(), + padding: this.measurePadding(r), + width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined + }; + })); + }); + return this.rows[this.rows.length - 1]; + } + colFromString(text) { + return { + text, + padding: this.measurePadding(text) + }; + } + measurePadding(str) { + // measure padding without ansi escape codes + const noAnsi = mixin.stripAnsi(str); + return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; + } + toString() { + const lines = []; + this.rows.forEach(row => { + this.rowToString(row, lines); + }); + // don't display any lines with the + // hidden flag set. + return lines + .filter(line => !line.hidden) + .map(line => line.text) + .join('\n'); + } + rowToString(row, lines) { + this.rasterize(row).forEach((rrow, r) => { + let str = ''; + rrow.forEach((col, c) => { + const { width } = row[c]; // the width with padding. + const wrapWidth = this.negatePadding(row[c]); // the width without padding. + let ts = col; // temporary string used during alignment/padding. + if (wrapWidth > mixin.stringWidth(col)) { + ts += ' '.repeat(wrapWidth - mixin.stringWidth(col)); + } + // align the string within its column. + if (row[c].align && row[c].align !== 'left' && this.wrap) { + const fn = align[row[c].align]; + ts = fn(ts, wrapWidth); + if (mixin.stringWidth(ts) < wrapWidth) { + /* c8 ignore start */ + const w = width || 0; + /* c8 ignore stop */ + ts += ' '.repeat(w - mixin.stringWidth(ts) - 1); + } + } + // apply border and padding to string. + const padding = row[c].padding || [0, 0, 0, 0]; + if (padding[left]) { + str += ' '.repeat(padding[left]); + } + str += addBorder(row[c], ts, '| '); + str += ts; + str += addBorder(row[c], ts, ' |'); + if (padding[right]) { + str += ' '.repeat(padding[right]); + } + // if prior row is span, try to render the + // current row on the prior line. + if (r === 0 && lines.length > 0) { + str = this.renderInline(str, lines[lines.length - 1]); + } + }); + // remove trailing whitespace. + lines.push({ + text: str.replace(/ +$/, ''), + span: row.span + }); + }); + return lines; + } + // if the full 'source' can render in + // the target line, do so. + renderInline(source, previousLine) { + const match = source.match(/^ */); + /* c8 ignore start */ + const leadingWhitespace = match ? match[0].length : 0; + /* c8 ignore stop */ + const target = previousLine.text; + const targetTextWidth = mixin.stringWidth(target.trimEnd()); + if (!previousLine.span) { + return source; + } + // if we're not applying wrapping logic, + // just always append to the span. + if (!this.wrap) { + previousLine.hidden = true; + return target + source; + } + if (leadingWhitespace < targetTextWidth) { + return source; + } + previousLine.hidden = true; + return target.trimEnd() + ' '.repeat(leadingWhitespace - targetTextWidth) + source.trimStart(); + } + rasterize(row) { + const rrows = []; + const widths = this.columnWidths(row); + let wrapped; + // word wrap all columns, and create + // a data-structure that is easy to rasterize. + row.forEach((col, c) => { + // leave room for left and right padding. + col.width = widths[c]; + if (this.wrap) { + wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split('\n'); + } + else { + wrapped = col.text.split('\n'); + } + if (col.border) { + wrapped.unshift('.' + '-'.repeat(this.negatePadding(col) + 2) + '.'); + wrapped.push("'" + '-'.repeat(this.negatePadding(col) + 2) + "'"); + } + // add top and bottom padding. + if (col.padding) { + wrapped.unshift(...new Array(col.padding[top] || 0).fill('')); + wrapped.push(...new Array(col.padding[bottom] || 0).fill('')); + } + wrapped.forEach((str, r) => { + if (!rrows[r]) { + rrows.push([]); + } + const rrow = rrows[r]; + for (let i = 0; i < c; i++) { + if (rrow[i] === undefined) { + rrow.push(''); + } + } + rrow.push(str); + }); + }); + return rrows; + } + negatePadding(col) { + /* c8 ignore start */ + let wrapWidth = col.width || 0; + /* c8 ignore stop */ + if (col.padding) { + wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); + } + if (col.border) { + wrapWidth -= 4; + } + return wrapWidth; + } + columnWidths(row) { + if (!this.wrap) { + return row.map(col => { + return col.width || mixin.stringWidth(col.text); + }); + } + let unset = row.length; + let remainingWidth = this.width; + // column widths can be set in config. + const widths = row.map(col => { + if (col.width) { + unset--; + remainingWidth -= col.width; + return col.width; + } + return undefined; + }); + // any unset widths should be calculated. + /* c8 ignore start */ + const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; + /* c8 ignore stop */ + return widths.map((w, i) => { + if (w === undefined) { + return Math.max(unsetWidth, _minWidth(row[i])); + } + return w; + }); + } +} +function addBorder(col, ts, style) { + if (col.border) { + if (/[.']-+[.']/.test(ts)) { + return ''; + } + if (ts.trim().length !== 0) { + return style; + } + return ' '; + } + return ''; +} +// calculates the minimum width of +// a column, based on padding preferences. +function _minWidth(col) { + const padding = col.padding || []; + const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); + if (col.border) { + return minWidth + 4; + } + return minWidth; +} +function getWindowWidth() { + /* c8 ignore start */ + if (typeof process === 'object' && process.stdout && process.stdout.columns) { + return process.stdout.columns; + } + return 80; +} +/* c8 ignore stop */ +function alignRight(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + if (strWidth < width) { + return ' '.repeat(width - strWidth) + str; + } + return str; +} +function alignCenter(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + /* c8 ignore start */ + if (strWidth >= width) { + return str; + } + /* c8 ignore stop */ + return ' '.repeat((width - strWidth) >> 1) + str; +} +let mixin; +function cliui(opts, _mixin) { + mixin = _mixin; + return new UI({ + /* c8 ignore start */ + width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(), + wrap: opts === null || opts === void 0 ? void 0 : opts.wrap + /* c8 ignore stop */ + }); +} + +// Bootstrap cliui with CommonJS dependencies: +const stringWidth = require('string-width-cjs'); +const stripAnsi = require('strip-ansi-cjs'); +const wrap = require('wrap-ansi-cjs'); +function ui(opts) { + return cliui(opts, { + stringWidth, + stripAnsi, + wrap + }); +} + +module.exports = ui; diff --git a/node_modules/@isaacs/cliui/build/index.d.cts b/node_modules/@isaacs/cliui/build/index.d.cts new file mode 100644 index 0000000..4567f94 --- /dev/null +++ b/node_modules/@isaacs/cliui/build/index.d.cts @@ -0,0 +1,43 @@ +interface UIOptions { + width: number; + wrap?: boolean; + rows?: string[]; +} +interface Column { + text: string; + width?: number; + align?: "right" | "left" | "center"; + padding: number[]; + border?: boolean; +} +interface ColumnArray extends Array { + span: boolean; +} +interface Line { + hidden?: boolean; + text: string; + span?: boolean; +} +declare class UI { + width: number; + wrap: boolean; + rows: ColumnArray[]; + constructor(opts: UIOptions); + span(...args: ColumnArray): void; + resetOutput(): void; + div(...args: (Column | string)[]): ColumnArray; + private shouldApplyLayoutDSL; + private applyLayoutDSL; + private colFromString; + private measurePadding; + toString(): string; + rowToString(row: ColumnArray, lines: Line[]): Line[]; + // if the full 'source' can render in + // the target line, do so. + private renderInline; + private rasterize; + private negatePadding; + private columnWidths; +} +declare function ui(opts: UIOptions): UI; +export { ui as default }; diff --git a/node_modules/@isaacs/cliui/build/lib/index.js b/node_modules/@isaacs/cliui/build/lib/index.js new file mode 100644 index 0000000..587b5ec --- /dev/null +++ b/node_modules/@isaacs/cliui/build/lib/index.js @@ -0,0 +1,302 @@ +'use strict'; +const align = { + right: alignRight, + center: alignCenter +}; +const top = 0; +const right = 1; +const bottom = 2; +const left = 3; +export class UI { + constructor(opts) { + var _a; + this.width = opts.width; + /* c8 ignore start */ + this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true; + /* c8 ignore stop */ + this.rows = []; + } + span(...args) { + const cols = this.div(...args); + cols.span = true; + } + resetOutput() { + this.rows = []; + } + div(...args) { + if (args.length === 0) { + this.div(''); + } + if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === 'string') { + return this.applyLayoutDSL(args[0]); + } + const cols = args.map(arg => { + if (typeof arg === 'string') { + return this.colFromString(arg); + } + return arg; + }); + this.rows.push(cols); + return cols; + } + shouldApplyLayoutDSL(...args) { + return args.length === 1 && typeof args[0] === 'string' && + /[\t\n]/.test(args[0]); + } + applyLayoutDSL(str) { + const rows = str.split('\n').map(row => row.split('\t')); + let leftColumnWidth = 0; + // simple heuristic for layout, make sure the + // second column lines up along the left-hand. + // don't allow the first column to take up more + // than 50% of the screen. + rows.forEach(columns => { + if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { + leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); + } + }); + // generate a table: + // replacing ' ' with padding calculations. + // using the algorithmically generated width. + rows.forEach(columns => { + this.div(...columns.map((r, i) => { + return { + text: r.trim(), + padding: this.measurePadding(r), + width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined + }; + })); + }); + return this.rows[this.rows.length - 1]; + } + colFromString(text) { + return { + text, + padding: this.measurePadding(text) + }; + } + measurePadding(str) { + // measure padding without ansi escape codes + const noAnsi = mixin.stripAnsi(str); + return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; + } + toString() { + const lines = []; + this.rows.forEach(row => { + this.rowToString(row, lines); + }); + // don't display any lines with the + // hidden flag set. + return lines + .filter(line => !line.hidden) + .map(line => line.text) + .join('\n'); + } + rowToString(row, lines) { + this.rasterize(row).forEach((rrow, r) => { + let str = ''; + rrow.forEach((col, c) => { + const { width } = row[c]; // the width with padding. + const wrapWidth = this.negatePadding(row[c]); // the width without padding. + let ts = col; // temporary string used during alignment/padding. + if (wrapWidth > mixin.stringWidth(col)) { + ts += ' '.repeat(wrapWidth - mixin.stringWidth(col)); + } + // align the string within its column. + if (row[c].align && row[c].align !== 'left' && this.wrap) { + const fn = align[row[c].align]; + ts = fn(ts, wrapWidth); + if (mixin.stringWidth(ts) < wrapWidth) { + /* c8 ignore start */ + const w = width || 0; + /* c8 ignore stop */ + ts += ' '.repeat(w - mixin.stringWidth(ts) - 1); + } + } + // apply border and padding to string. + const padding = row[c].padding || [0, 0, 0, 0]; + if (padding[left]) { + str += ' '.repeat(padding[left]); + } + str += addBorder(row[c], ts, '| '); + str += ts; + str += addBorder(row[c], ts, ' |'); + if (padding[right]) { + str += ' '.repeat(padding[right]); + } + // if prior row is span, try to render the + // current row on the prior line. + if (r === 0 && lines.length > 0) { + str = this.renderInline(str, lines[lines.length - 1]); + } + }); + // remove trailing whitespace. + lines.push({ + text: str.replace(/ +$/, ''), + span: row.span + }); + }); + return lines; + } + // if the full 'source' can render in + // the target line, do so. + renderInline(source, previousLine) { + const match = source.match(/^ */); + /* c8 ignore start */ + const leadingWhitespace = match ? match[0].length : 0; + /* c8 ignore stop */ + const target = previousLine.text; + const targetTextWidth = mixin.stringWidth(target.trimEnd()); + if (!previousLine.span) { + return source; + } + // if we're not applying wrapping logic, + // just always append to the span. + if (!this.wrap) { + previousLine.hidden = true; + return target + source; + } + if (leadingWhitespace < targetTextWidth) { + return source; + } + previousLine.hidden = true; + return target.trimEnd() + ' '.repeat(leadingWhitespace - targetTextWidth) + source.trimStart(); + } + rasterize(row) { + const rrows = []; + const widths = this.columnWidths(row); + let wrapped; + // word wrap all columns, and create + // a data-structure that is easy to rasterize. + row.forEach((col, c) => { + // leave room for left and right padding. + col.width = widths[c]; + if (this.wrap) { + wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split('\n'); + } + else { + wrapped = col.text.split('\n'); + } + if (col.border) { + wrapped.unshift('.' + '-'.repeat(this.negatePadding(col) + 2) + '.'); + wrapped.push("'" + '-'.repeat(this.negatePadding(col) + 2) + "'"); + } + // add top and bottom padding. + if (col.padding) { + wrapped.unshift(...new Array(col.padding[top] || 0).fill('')); + wrapped.push(...new Array(col.padding[bottom] || 0).fill('')); + } + wrapped.forEach((str, r) => { + if (!rrows[r]) { + rrows.push([]); + } + const rrow = rrows[r]; + for (let i = 0; i < c; i++) { + if (rrow[i] === undefined) { + rrow.push(''); + } + } + rrow.push(str); + }); + }); + return rrows; + } + negatePadding(col) { + /* c8 ignore start */ + let wrapWidth = col.width || 0; + /* c8 ignore stop */ + if (col.padding) { + wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); + } + if (col.border) { + wrapWidth -= 4; + } + return wrapWidth; + } + columnWidths(row) { + if (!this.wrap) { + return row.map(col => { + return col.width || mixin.stringWidth(col.text); + }); + } + let unset = row.length; + let remainingWidth = this.width; + // column widths can be set in config. + const widths = row.map(col => { + if (col.width) { + unset--; + remainingWidth -= col.width; + return col.width; + } + return undefined; + }); + // any unset widths should be calculated. + /* c8 ignore start */ + const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; + /* c8 ignore stop */ + return widths.map((w, i) => { + if (w === undefined) { + return Math.max(unsetWidth, _minWidth(row[i])); + } + return w; + }); + } +} +function addBorder(col, ts, style) { + if (col.border) { + if (/[.']-+[.']/.test(ts)) { + return ''; + } + if (ts.trim().length !== 0) { + return style; + } + return ' '; + } + return ''; +} +// calculates the minimum width of +// a column, based on padding preferences. +function _minWidth(col) { + const padding = col.padding || []; + const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); + if (col.border) { + return minWidth + 4; + } + return minWidth; +} +function getWindowWidth() { + /* c8 ignore start */ + if (typeof process === 'object' && process.stdout && process.stdout.columns) { + return process.stdout.columns; + } + return 80; +} +/* c8 ignore stop */ +function alignRight(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + if (strWidth < width) { + return ' '.repeat(width - strWidth) + str; + } + return str; +} +function alignCenter(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + /* c8 ignore start */ + if (strWidth >= width) { + return str; + } + /* c8 ignore stop */ + return ' '.repeat((width - strWidth) >> 1) + str; +} +let mixin; +export function cliui(opts, _mixin) { + mixin = _mixin; + return new UI({ + /* c8 ignore start */ + width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(), + wrap: opts === null || opts === void 0 ? void 0 : opts.wrap + /* c8 ignore stop */ + }); +} diff --git a/node_modules/@isaacs/cliui/index.mjs b/node_modules/@isaacs/cliui/index.mjs new file mode 100644 index 0000000..5177519 --- /dev/null +++ b/node_modules/@isaacs/cliui/index.mjs @@ -0,0 +1,14 @@ +// Bootstrap cliui with ESM dependencies: +import { cliui } from './build/lib/index.js' + +import stringWidth from 'string-width' +import stripAnsi from 'strip-ansi' +import wrap from 'wrap-ansi' + +export default function ui (opts) { + return cliui(opts, { + stringWidth, + stripAnsi, + wrap + }) +} diff --git a/node_modules/@isaacs/cliui/package.json b/node_modules/@isaacs/cliui/package.json new file mode 100644 index 0000000..7a95253 --- /dev/null +++ b/node_modules/@isaacs/cliui/package.json @@ -0,0 +1,86 @@ +{ + "name": "@isaacs/cliui", + "version": "8.0.2", + "description": "easily create complex multi-column command-line-interfaces", + "main": "build/index.cjs", + "exports": { + ".": [ + { + "import": "./index.mjs", + "require": "./build/index.cjs" + }, + "./build/index.cjs" + ] + }, + "type": "module", + "module": "./index.mjs", + "scripts": { + "check": "standardx '**/*.ts' && standardx '**/*.js' && standardx '**/*.cjs'", + "fix": "standardx --fix '**/*.ts' && standardx --fix '**/*.js' && standardx --fix '**/*.cjs'", + "pretest": "rimraf build && tsc -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs", + "test": "c8 mocha ./test/*.cjs", + "test:esm": "c8 mocha ./test/**/*.mjs", + "postest": "check", + "coverage": "c8 report --check-coverage", + "precompile": "rimraf build", + "compile": "tsc", + "postcompile": "npm run build:cjs", + "build:cjs": "rollup -c", + "prepare": "npm run compile" + }, + "repository": "yargs/cliui", + "standard": { + "ignore": [ + "**/example/**" + ], + "globals": [ + "it" + ] + }, + "keywords": [ + "cli", + "command-line", + "layout", + "design", + "console", + "wrap", + "table" + ], + "author": "Ben Coe ", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "devDependencies": { + "@types/node": "^14.0.27", + "@typescript-eslint/eslint-plugin": "^4.0.0", + "@typescript-eslint/parser": "^4.0.0", + "c8": "^7.3.0", + "chai": "^4.2.0", + "chalk": "^4.1.0", + "cross-env": "^7.0.2", + "eslint": "^7.6.0", + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-node": "^11.1.0", + "gts": "^3.0.0", + "mocha": "^10.0.0", + "rimraf": "^3.0.2", + "rollup": "^2.23.1", + "rollup-plugin-ts": "^3.0.2", + "standardx": "^7.0.0", + "typescript": "^4.0.0" + }, + "files": [ + "build", + "index.mjs", + "!*.d.ts" + ], + "engines": { + "node": ">=12" + } +} diff --git a/node_modules/@jridgewell/sourcemap-codec/LICENSE b/node_modules/@jridgewell/sourcemap-codec/LICENSE new file mode 100644 index 0000000..a331065 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2015 Rich Harris + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@jridgewell/sourcemap-codec/README.md b/node_modules/@jridgewell/sourcemap-codec/README.md new file mode 100644 index 0000000..b3e0708 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/README.md @@ -0,0 +1,264 @@ +# @jridgewell/sourcemap-codec + +Encode/decode the `mappings` property of a [sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit). + + +## Why? + +Sourcemaps are difficult to generate and manipulate, because the `mappings` property – the part that actually links the generated code back to the original source – is encoded using an obscure method called [Variable-length quantity](https://en.wikipedia.org/wiki/Variable-length_quantity). On top of that, each segment in the mapping contains offsets rather than absolute indices, which means that you can't look at a segment in isolation – you have to understand the whole sourcemap. + +This package makes the process slightly easier. + + +## Installation + +```bash +npm install @jridgewell/sourcemap-codec +``` + + +## Usage + +```js +import { encode, decode } from '@jridgewell/sourcemap-codec'; + +var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' ); + +assert.deepEqual( decoded, [ + // the first line (of the generated code) has no mappings, + // as shown by the starting semi-colon (which separates lines) + [], + + // the second line contains four (comma-separated) segments + [ + // segments are encoded as you'd expect: + // [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ] + + // i.e. the first segment begins at column 2, and maps back to the second column + // of the second line (both zero-based) of the 0th source, and uses the 0th + // name in the `map.names` array + [ 2, 0, 2, 2, 0 ], + + // the remaining segments are 4-length rather than 5-length, + // because they don't map a name + [ 4, 0, 2, 4 ], + [ 6, 0, 2, 5 ], + [ 7, 0, 2, 7 ] + ], + + // the final line contains two segments + [ + [ 2, 1, 10, 19 ], + [ 12, 1, 11, 20 ] + ] +]); + +var encoded = encode( decoded ); +assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' ); +``` + +## Benchmarks + +``` +node v20.10.0 + +amp.js.map - 45120 segments + +Decode Memory Usage: +local code 5815135 bytes +@jridgewell/sourcemap-codec 1.4.15 5868160 bytes +sourcemap-codec 5492584 bytes +source-map-0.6.1 13569984 bytes +source-map-0.8.0 6390584 bytes +chrome dev tools 8011136 bytes +Smallest memory usage is sourcemap-codec + +Decode speed: +decode: local code x 492 ops/sec ±1.22% (90 runs sampled) +decode: @jridgewell/sourcemap-codec 1.4.15 x 499 ops/sec ±1.16% (89 runs sampled) +decode: sourcemap-codec x 376 ops/sec ±1.66% (89 runs sampled) +decode: source-map-0.6.1 x 34.99 ops/sec ±0.94% (48 runs sampled) +decode: source-map-0.8.0 x 351 ops/sec ±0.07% (95 runs sampled) +chrome dev tools x 165 ops/sec ±0.91% (86 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec 1.4.15 + +Encode Memory Usage: +local code 444248 bytes +@jridgewell/sourcemap-codec 1.4.15 623024 bytes +sourcemap-codec 8696280 bytes +source-map-0.6.1 8745176 bytes +source-map-0.8.0 8736624 bytes +Smallest memory usage is local code + +Encode speed: +encode: local code x 796 ops/sec ±0.11% (97 runs sampled) +encode: @jridgewell/sourcemap-codec 1.4.15 x 795 ops/sec ±0.25% (98 runs sampled) +encode: sourcemap-codec x 231 ops/sec ±0.83% (86 runs sampled) +encode: source-map-0.6.1 x 166 ops/sec ±0.57% (86 runs sampled) +encode: source-map-0.8.0 x 203 ops/sec ±0.45% (88 runs sampled) +Fastest is encode: local code,encode: @jridgewell/sourcemap-codec 1.4.15 + + +*** + + +babel.min.js.map - 347793 segments + +Decode Memory Usage: +local code 35424960 bytes +@jridgewell/sourcemap-codec 1.4.15 35424696 bytes +sourcemap-codec 36033464 bytes +source-map-0.6.1 62253704 bytes +source-map-0.8.0 43843920 bytes +chrome dev tools 45111400 bytes +Smallest memory usage is @jridgewell/sourcemap-codec 1.4.15 + +Decode speed: +decode: local code x 38.18 ops/sec ±5.44% (52 runs sampled) +decode: @jridgewell/sourcemap-codec 1.4.15 x 38.36 ops/sec ±5.02% (52 runs sampled) +decode: sourcemap-codec x 34.05 ops/sec ±4.45% (47 runs sampled) +decode: source-map-0.6.1 x 4.31 ops/sec ±2.76% (15 runs sampled) +decode: source-map-0.8.0 x 55.60 ops/sec ±0.13% (73 runs sampled) +chrome dev tools x 16.94 ops/sec ±3.78% (46 runs sampled) +Fastest is decode: source-map-0.8.0 + +Encode Memory Usage: +local code 2606016 bytes +@jridgewell/sourcemap-codec 1.4.15 2626440 bytes +sourcemap-codec 21152576 bytes +source-map-0.6.1 25023928 bytes +source-map-0.8.0 25256448 bytes +Smallest memory usage is local code + +Encode speed: +encode: local code x 127 ops/sec ±0.18% (83 runs sampled) +encode: @jridgewell/sourcemap-codec 1.4.15 x 128 ops/sec ±0.26% (83 runs sampled) +encode: sourcemap-codec x 29.31 ops/sec ±2.55% (53 runs sampled) +encode: source-map-0.6.1 x 18.85 ops/sec ±3.19% (36 runs sampled) +encode: source-map-0.8.0 x 19.34 ops/sec ±1.97% (36 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec 1.4.15 + + +*** + + +preact.js.map - 1992 segments + +Decode Memory Usage: +local code 261696 bytes +@jridgewell/sourcemap-codec 1.4.15 244296 bytes +sourcemap-codec 302816 bytes +source-map-0.6.1 939176 bytes +source-map-0.8.0 336 bytes +chrome dev tools 587368 bytes +Smallest memory usage is source-map-0.8.0 + +Decode speed: +decode: local code x 17,782 ops/sec ±0.32% (97 runs sampled) +decode: @jridgewell/sourcemap-codec 1.4.15 x 17,863 ops/sec ±0.40% (100 runs sampled) +decode: sourcemap-codec x 12,453 ops/sec ±0.27% (101 runs sampled) +decode: source-map-0.6.1 x 1,288 ops/sec ±1.05% (96 runs sampled) +decode: source-map-0.8.0 x 9,289 ops/sec ±0.27% (101 runs sampled) +chrome dev tools x 4,769 ops/sec ±0.18% (100 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec 1.4.15 + +Encode Memory Usage: +local code 262944 bytes +@jridgewell/sourcemap-codec 1.4.15 25544 bytes +sourcemap-codec 323048 bytes +source-map-0.6.1 507808 bytes +source-map-0.8.0 507480 bytes +Smallest memory usage is @jridgewell/sourcemap-codec 1.4.15 + +Encode speed: +encode: local code x 24,207 ops/sec ±0.79% (95 runs sampled) +encode: @jridgewell/sourcemap-codec 1.4.15 x 24,288 ops/sec ±0.48% (96 runs sampled) +encode: sourcemap-codec x 6,761 ops/sec ±0.21% (100 runs sampled) +encode: source-map-0.6.1 x 5,374 ops/sec ±0.17% (99 runs sampled) +encode: source-map-0.8.0 x 5,633 ops/sec ±0.32% (99 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec 1.4.15,encode: local code + + +*** + + +react.js.map - 5726 segments + +Decode Memory Usage: +local code 678816 bytes +@jridgewell/sourcemap-codec 1.4.15 678816 bytes +sourcemap-codec 816400 bytes +source-map-0.6.1 2288864 bytes +source-map-0.8.0 721360 bytes +chrome dev tools 1012512 bytes +Smallest memory usage is local code + +Decode speed: +decode: local code x 6,178 ops/sec ±0.19% (98 runs sampled) +decode: @jridgewell/sourcemap-codec 1.4.15 x 6,261 ops/sec ±0.22% (100 runs sampled) +decode: sourcemap-codec x 4,472 ops/sec ±0.90% (99 runs sampled) +decode: source-map-0.6.1 x 449 ops/sec ±0.31% (95 runs sampled) +decode: source-map-0.8.0 x 3,219 ops/sec ±0.13% (100 runs sampled) +chrome dev tools x 1,743 ops/sec ±0.20% (99 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec 1.4.15 + +Encode Memory Usage: +local code 140960 bytes +@jridgewell/sourcemap-codec 1.4.15 159808 bytes +sourcemap-codec 969304 bytes +source-map-0.6.1 930520 bytes +source-map-0.8.0 930248 bytes +Smallest memory usage is local code + +Encode speed: +encode: local code x 8,013 ops/sec ±0.19% (100 runs sampled) +encode: @jridgewell/sourcemap-codec 1.4.15 x 7,989 ops/sec ±0.20% (101 runs sampled) +encode: sourcemap-codec x 2,472 ops/sec ±0.21% (99 runs sampled) +encode: source-map-0.6.1 x 2,200 ops/sec ±0.17% (99 runs sampled) +encode: source-map-0.8.0 x 2,220 ops/sec ±0.37% (99 runs sampled) +Fastest is encode: local code + + +*** + + +vscode.map - 2141001 segments + +Decode Memory Usage: +local code 198955264 bytes +@jridgewell/sourcemap-codec 1.4.15 199175352 bytes +sourcemap-codec 199102688 bytes +source-map-0.6.1 386323432 bytes +source-map-0.8.0 244116432 bytes +chrome dev tools 293734280 bytes +Smallest memory usage is local code + +Decode speed: +decode: local code x 3.90 ops/sec ±22.21% (15 runs sampled) +decode: @jridgewell/sourcemap-codec 1.4.15 x 3.95 ops/sec ±23.53% (15 runs sampled) +decode: sourcemap-codec x 3.82 ops/sec ±17.94% (14 runs sampled) +decode: source-map-0.6.1 x 0.61 ops/sec ±7.81% (6 runs sampled) +decode: source-map-0.8.0 x 9.54 ops/sec ±0.28% (28 runs sampled) +chrome dev tools x 2.18 ops/sec ±10.58% (10 runs sampled) +Fastest is decode: source-map-0.8.0 + +Encode Memory Usage: +local code 13509880 bytes +@jridgewell/sourcemap-codec 1.4.15 13537648 bytes +sourcemap-codec 32540104 bytes +source-map-0.6.1 127531040 bytes +source-map-0.8.0 127535312 bytes +Smallest memory usage is local code + +Encode speed: +encode: local code x 20.10 ops/sec ±0.19% (38 runs sampled) +encode: @jridgewell/sourcemap-codec 1.4.15 x 20.26 ops/sec ±0.32% (38 runs sampled) +encode: sourcemap-codec x 5.44 ops/sec ±1.64% (18 runs sampled) +encode: source-map-0.6.1 x 2.30 ops/sec ±4.79% (10 runs sampled) +encode: source-map-0.8.0 x 2.46 ops/sec ±6.53% (10 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec 1.4.15 +``` + +# License + +MIT diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs new file mode 100644 index 0000000..60e17b3 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs @@ -0,0 +1,424 @@ +const comma = ','.charCodeAt(0); +const semicolon = ';'.charCodeAt(0); +const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; +const intToChar = new Uint8Array(64); // 64 possible chars. +const charToInt = new Uint8Array(128); // z is 122 in ASCII +for (let i = 0; i < chars.length; i++) { + const c = chars.charCodeAt(i); + intToChar[i] = c; + charToInt[c] = i; +} +function decodeInteger(reader, relative) { + let value = 0; + let shift = 0; + let integer = 0; + do { + const c = reader.next(); + integer = charToInt[c]; + value |= (integer & 31) << shift; + shift += 5; + } while (integer & 32); + const shouldNegate = value & 1; + value >>>= 1; + if (shouldNegate) { + value = -0x80000000 | -value; + } + return relative + value; +} +function encodeInteger(builder, num, relative) { + let delta = num - relative; + delta = delta < 0 ? (-delta << 1) | 1 : delta << 1; + do { + let clamped = delta & 0b011111; + delta >>>= 5; + if (delta > 0) + clamped |= 0b100000; + builder.write(intToChar[clamped]); + } while (delta > 0); + return num; +} +function hasMoreVlq(reader, max) { + if (reader.pos >= max) + return false; + return reader.peek() !== comma; +} + +const bufLength = 1024 * 16; +// Provide a fallback for older environments. +const td = typeof TextDecoder !== 'undefined' + ? /* #__PURE__ */ new TextDecoder() + : typeof Buffer !== 'undefined' + ? { + decode(buf) { + const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); + return out.toString(); + }, + } + : { + decode(buf) { + let out = ''; + for (let i = 0; i < buf.length; i++) { + out += String.fromCharCode(buf[i]); + } + return out; + }, + }; +class StringWriter { + constructor() { + this.pos = 0; + this.out = ''; + this.buffer = new Uint8Array(bufLength); + } + write(v) { + const { buffer } = this; + buffer[this.pos++] = v; + if (this.pos === bufLength) { + this.out += td.decode(buffer); + this.pos = 0; + } + } + flush() { + const { buffer, out, pos } = this; + return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; + } +} +class StringReader { + constructor(buffer) { + this.pos = 0; + this.buffer = buffer; + } + next() { + return this.buffer.charCodeAt(this.pos++); + } + peek() { + return this.buffer.charCodeAt(this.pos); + } + indexOf(char) { + const { buffer, pos } = this; + const idx = buffer.indexOf(char, pos); + return idx === -1 ? buffer.length : idx; + } +} + +const EMPTY = []; +function decodeOriginalScopes(input) { + const { length } = input; + const reader = new StringReader(input); + const scopes = []; + const stack = []; + let line = 0; + for (; reader.pos < length; reader.pos++) { + line = decodeInteger(reader, line); + const column = decodeInteger(reader, 0); + if (!hasMoreVlq(reader, length)) { + const last = stack.pop(); + last[2] = line; + last[3] = column; + continue; + } + const kind = decodeInteger(reader, 0); + const fields = decodeInteger(reader, 0); + const hasName = fields & 0b0001; + const scope = (hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]); + let vars = EMPTY; + if (hasMoreVlq(reader, length)) { + vars = []; + do { + const varsIndex = decodeInteger(reader, 0); + vars.push(varsIndex); + } while (hasMoreVlq(reader, length)); + } + scope.vars = vars; + scopes.push(scope); + stack.push(scope); + } + return scopes; +} +function encodeOriginalScopes(scopes) { + const writer = new StringWriter(); + for (let i = 0; i < scopes.length;) { + i = _encodeOriginalScopes(scopes, i, writer, [0]); + } + return writer.flush(); +} +function _encodeOriginalScopes(scopes, index, writer, state) { + const scope = scopes[index]; + const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope; + if (index > 0) + writer.write(comma); + state[0] = encodeInteger(writer, startLine, state[0]); + encodeInteger(writer, startColumn, 0); + encodeInteger(writer, kind, 0); + const fields = scope.length === 6 ? 0b0001 : 0; + encodeInteger(writer, fields, 0); + if (scope.length === 6) + encodeInteger(writer, scope[5], 0); + for (const v of vars) { + encodeInteger(writer, v, 0); + } + for (index++; index < scopes.length;) { + const next = scopes[index]; + const { 0: l, 1: c } = next; + if (l > endLine || (l === endLine && c >= endColumn)) { + break; + } + index = _encodeOriginalScopes(scopes, index, writer, state); + } + writer.write(comma); + state[0] = encodeInteger(writer, endLine, state[0]); + encodeInteger(writer, endColumn, 0); + return index; +} +function decodeGeneratedRanges(input) { + const { length } = input; + const reader = new StringReader(input); + const ranges = []; + const stack = []; + let genLine = 0; + let definitionSourcesIndex = 0; + let definitionScopeIndex = 0; + let callsiteSourcesIndex = 0; + let callsiteLine = 0; + let callsiteColumn = 0; + let bindingLine = 0; + let bindingColumn = 0; + do { + const semi = reader.indexOf(';'); + let genColumn = 0; + for (; reader.pos < semi; reader.pos++) { + genColumn = decodeInteger(reader, genColumn); + if (!hasMoreVlq(reader, semi)) { + const last = stack.pop(); + last[2] = genLine; + last[3] = genColumn; + continue; + } + const fields = decodeInteger(reader, 0); + const hasDefinition = fields & 0b0001; + const hasCallsite = fields & 0b0010; + const hasScope = fields & 0b0100; + let callsite = null; + let bindings = EMPTY; + let range; + if (hasDefinition) { + const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex); + definitionScopeIndex = decodeInteger(reader, definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0); + definitionSourcesIndex = defSourcesIndex; + range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex]; + } + else { + range = [genLine, genColumn, 0, 0]; + } + range.isScope = !!hasScope; + if (hasCallsite) { + const prevCsi = callsiteSourcesIndex; + const prevLine = callsiteLine; + callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex); + const sameSource = prevCsi === callsiteSourcesIndex; + callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0); + callsiteColumn = decodeInteger(reader, sameSource && prevLine === callsiteLine ? callsiteColumn : 0); + callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn]; + } + range.callsite = callsite; + if (hasMoreVlq(reader, semi)) { + bindings = []; + do { + bindingLine = genLine; + bindingColumn = genColumn; + const expressionsCount = decodeInteger(reader, 0); + let expressionRanges; + if (expressionsCount < -1) { + expressionRanges = [[decodeInteger(reader, 0)]]; + for (let i = -1; i > expressionsCount; i--) { + const prevBl = bindingLine; + bindingLine = decodeInteger(reader, bindingLine); + bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0); + const expression = decodeInteger(reader, 0); + expressionRanges.push([expression, bindingLine, bindingColumn]); + } + } + else { + expressionRanges = [[expressionsCount]]; + } + bindings.push(expressionRanges); + } while (hasMoreVlq(reader, semi)); + } + range.bindings = bindings; + ranges.push(range); + stack.push(range); + } + genLine++; + reader.pos = semi + 1; + } while (reader.pos < length); + return ranges; +} +function encodeGeneratedRanges(ranges) { + if (ranges.length === 0) + return ''; + const writer = new StringWriter(); + for (let i = 0; i < ranges.length;) { + i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]); + } + return writer.flush(); +} +function _encodeGeneratedRanges(ranges, index, writer, state) { + const range = ranges[index]; + const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, isScope, callsite, bindings, } = range; + if (state[0] < startLine) { + catchupLine(writer, state[0], startLine); + state[0] = startLine; + state[1] = 0; + } + else if (index > 0) { + writer.write(comma); + } + state[1] = encodeInteger(writer, range[1], state[1]); + const fields = (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0); + encodeInteger(writer, fields, 0); + if (range.length === 6) { + const { 4: sourcesIndex, 5: scopesIndex } = range; + if (sourcesIndex !== state[2]) { + state[3] = 0; + } + state[2] = encodeInteger(writer, sourcesIndex, state[2]); + state[3] = encodeInteger(writer, scopesIndex, state[3]); + } + if (callsite) { + const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite; + if (sourcesIndex !== state[4]) { + state[5] = 0; + state[6] = 0; + } + else if (callLine !== state[5]) { + state[6] = 0; + } + state[4] = encodeInteger(writer, sourcesIndex, state[4]); + state[5] = encodeInteger(writer, callLine, state[5]); + state[6] = encodeInteger(writer, callColumn, state[6]); + } + if (bindings) { + for (const binding of bindings) { + if (binding.length > 1) + encodeInteger(writer, -binding.length, 0); + const expression = binding[0][0]; + encodeInteger(writer, expression, 0); + let bindingStartLine = startLine; + let bindingStartColumn = startColumn; + for (let i = 1; i < binding.length; i++) { + const expRange = binding[i]; + bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine); + bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn); + encodeInteger(writer, expRange[0], 0); + } + } + } + for (index++; index < ranges.length;) { + const next = ranges[index]; + const { 0: l, 1: c } = next; + if (l > endLine || (l === endLine && c >= endColumn)) { + break; + } + index = _encodeGeneratedRanges(ranges, index, writer, state); + } + if (state[0] < endLine) { + catchupLine(writer, state[0], endLine); + state[0] = endLine; + state[1] = 0; + } + else { + writer.write(comma); + } + state[1] = encodeInteger(writer, endColumn, state[1]); + return index; +} +function catchupLine(writer, lastLine, line) { + do { + writer.write(semicolon); + } while (++lastLine < line); +} + +function decode(mappings) { + const { length } = mappings; + const reader = new StringReader(mappings); + const decoded = []; + let genColumn = 0; + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + do { + const semi = reader.indexOf(';'); + const line = []; + let sorted = true; + let lastCol = 0; + genColumn = 0; + while (reader.pos < semi) { + let seg; + genColumn = decodeInteger(reader, genColumn); + if (genColumn < lastCol) + sorted = false; + lastCol = genColumn; + if (hasMoreVlq(reader, semi)) { + sourcesIndex = decodeInteger(reader, sourcesIndex); + sourceLine = decodeInteger(reader, sourceLine); + sourceColumn = decodeInteger(reader, sourceColumn); + if (hasMoreVlq(reader, semi)) { + namesIndex = decodeInteger(reader, namesIndex); + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]; + } + else { + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn]; + } + } + else { + seg = [genColumn]; + } + line.push(seg); + reader.pos++; + } + if (!sorted) + sort(line); + decoded.push(line); + reader.pos = semi + 1; + } while (reader.pos <= length); + return decoded; +} +function sort(line) { + line.sort(sortComparator); +} +function sortComparator(a, b) { + return a[0] - b[0]; +} +function encode(decoded) { + const writer = new StringWriter(); + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + if (i > 0) + writer.write(semicolon); + if (line.length === 0) + continue; + let genColumn = 0; + for (let j = 0; j < line.length; j++) { + const segment = line[j]; + if (j > 0) + writer.write(comma); + genColumn = encodeInteger(writer, segment[0], genColumn); + if (segment.length === 1) + continue; + sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); + sourceLine = encodeInteger(writer, segment[2], sourceLine); + sourceColumn = encodeInteger(writer, segment[3], sourceColumn); + if (segment.length === 4) + continue; + namesIndex = encodeInteger(writer, segment[4], namesIndex); + } + } + return writer.flush(); +} + +export { decode, decodeGeneratedRanges, decodeOriginalScopes, encode, encodeGeneratedRanges, encodeOriginalScopes }; +//# sourceMappingURL=sourcemap-codec.mjs.map diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map new file mode 100644 index 0000000..7388228 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"sourcemap-codec.mjs","sources":["../src/vlq.ts","../src/strings.ts","../src/scopes.ts","../src/sourcemap-codec.ts"],"sourcesContent":["import type { StringReader, StringWriter } from './strings';\n\nexport const comma = ','.charCodeAt(0);\nexport const semicolon = ';'.charCodeAt(0);\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\n\nexport function decodeInteger(reader: StringReader, relative: number): number {\n let value = 0;\n let shift = 0;\n let integer = 0;\n\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n\n const shouldNegate = value & 1;\n value >>>= 1;\n\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n\n return relative + value;\n}\n\nexport function encodeInteger(builder: StringWriter, num: number, relative: number): number {\n let delta = num - relative;\n\n delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;\n do {\n let clamped = delta & 0b011111;\n delta >>>= 5;\n if (delta > 0) clamped |= 0b100000;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n\n return num;\n}\n\nexport function hasMoreVlq(reader: StringReader, max: number) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n","const bufLength = 1024 * 16;\n\n// Provide a fallback for older environments.\nconst td =\n typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf: Uint8Array): string {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf: Uint8Array): string {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n\nexport class StringWriter {\n pos = 0;\n private out = '';\n private buffer = new Uint8Array(bufLength);\n\n write(v: number): void {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n\n flush(): string {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n}\n\nexport class StringReader {\n pos = 0;\n private declare buffer: string;\n\n constructor(buffer: string) {\n this.buffer = buffer;\n }\n\n next(): number {\n return this.buffer.charCodeAt(this.pos++);\n }\n\n peek(): number {\n return this.buffer.charCodeAt(this.pos);\n }\n\n indexOf(char: string): number {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n}\n","import { StringReader, StringWriter } from './strings';\nimport { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\n\nconst EMPTY: any[] = [];\n\ntype Line = number;\ntype Column = number;\ntype Kind = number;\ntype Name = number;\ntype Var = number;\ntype SourcesIndex = number;\ntype ScopesIndex = number;\n\ntype Mix = (A & O) | (B & O);\n\nexport type OriginalScope = Mix<\n [Line, Column, Line, Column, Kind],\n [Line, Column, Line, Column, Kind, Name],\n { vars: Var[] }\n>;\n\nexport type GeneratedRange = Mix<\n [Line, Column, Line, Column],\n [Line, Column, Line, Column, SourcesIndex, ScopesIndex],\n {\n callsite: CallSite | null;\n bindings: Binding[];\n isScope: boolean;\n }\n>;\nexport type CallSite = [SourcesIndex, Line, Column];\ntype Binding = BindingExpressionRange[];\nexport type BindingExpressionRange = [Name] | [Name, Line, Column];\n\nexport function decodeOriginalScopes(input: string): OriginalScope[] {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes: OriginalScope[] = [];\n const stack: OriginalScope[] = [];\n let line = 0;\n\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop()!;\n last[2] = line;\n last[3] = column;\n continue;\n }\n\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 0b0001;\n\n const scope: OriginalScope = (\n hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]\n ) as OriginalScope;\n\n let vars: Var[] = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n\n scopes.push(scope);\n stack.push(scope);\n }\n\n return scopes;\n}\n\nexport function encodeOriginalScopes(scopes: OriginalScope[]): string {\n const writer = new StringWriter();\n\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeOriginalScopes(\n scopes: OriginalScope[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenColumn\n ],\n): number {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n\n if (index > 0) writer.write(comma);\n\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n\n const fields = scope.length === 6 ? 0b0001 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6) encodeInteger(writer, scope[5], 0);\n\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n\n return index;\n}\n\nexport function decodeGeneratedRanges(input: string): GeneratedRange[] {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges: GeneratedRange[] = [];\n const stack: GeneratedRange[] = [];\n\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n\n do {\n const semi = reader.indexOf(';');\n let genColumn = 0;\n\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop()!;\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 0b0001;\n const hasCallsite = fields & 0b0010;\n const hasScope = fields & 0b0100;\n\n let callsite: CallSite | null = null;\n let bindings: Binding[] = EMPTY;\n let range: GeneratedRange;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(\n reader,\n definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0,\n );\n\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex] as GeneratedRange;\n } else {\n range = [genLine, genColumn, 0, 0] as GeneratedRange;\n }\n\n range.isScope = !!hasScope;\n\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(\n reader,\n sameSource && prevLine === callsiteLine ? callsiteColumn : 0,\n );\n\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges: BindingExpressionRange[];\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n\n ranges.push(range);\n stack.push(range);\n }\n\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n\n return ranges;\n}\n\nexport function encodeGeneratedRanges(ranges: GeneratedRange[]): string {\n if (ranges.length === 0) return '';\n\n const writer = new StringWriter();\n\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeGeneratedRanges(\n ranges: GeneratedRange[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenLine\n number, // GenColumn\n number, // DefSourcesIndex\n number, // DefScopesIndex\n number, // CallSourcesIndex\n number, // CallLine\n number, // CallColumn\n ],\n): number {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings,\n } = range;\n\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n\n state[1] = encodeInteger(writer, range[1], state[1]);\n\n const fields =\n (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0);\n encodeInteger(writer, fields, 0);\n\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite!;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1]!, bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2]!, bindingStartColumn);\n encodeInteger(writer, expRange[0]!, 0);\n }\n }\n }\n\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n\n return index;\n}\n\nfunction catchupLine(writer: StringWriter, lastLine: number, line: number) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n","import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\nimport { StringWriter, StringReader } from './strings';\n\nexport {\n decodeOriginalScopes,\n encodeOriginalScopes,\n decodeGeneratedRanges,\n encodeGeneratedRanges,\n} from './scopes';\nexport type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes';\n\nexport type SourceMapSegment =\n | [number]\n | [number, number, number, number]\n | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nexport function decode(mappings: string): SourceMapMappings {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded: SourceMapMappings = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n do {\n const semi = reader.indexOf(';');\n const line: SourceMapLine = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n\n while (reader.pos < semi) {\n let seg: SourceMapSegment;\n\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n\n line.push(seg);\n reader.pos++;\n }\n\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n\n return decoded;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly): string;\nexport function encode(decoded: Readonly): string {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n\n let genColumn = 0;\n\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n\n genColumn = encodeInteger(writer, segment[0], genColumn);\n\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n\n return writer.flush();\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js new file mode 100644 index 0000000..93caf17 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js @@ -0,0 +1,439 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.sourcemapCodec = {})); +})(this, (function (exports) { 'use strict'; + + const comma = ','.charCodeAt(0); + const semicolon = ';'.charCodeAt(0); + const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + const intToChar = new Uint8Array(64); // 64 possible chars. + const charToInt = new Uint8Array(128); // z is 122 in ASCII + for (let i = 0; i < chars.length; i++) { + const c = chars.charCodeAt(i); + intToChar[i] = c; + charToInt[c] = i; + } + function decodeInteger(reader, relative) { + let value = 0; + let shift = 0; + let integer = 0; + do { + const c = reader.next(); + integer = charToInt[c]; + value |= (integer & 31) << shift; + shift += 5; + } while (integer & 32); + const shouldNegate = value & 1; + value >>>= 1; + if (shouldNegate) { + value = -0x80000000 | -value; + } + return relative + value; + } + function encodeInteger(builder, num, relative) { + let delta = num - relative; + delta = delta < 0 ? (-delta << 1) | 1 : delta << 1; + do { + let clamped = delta & 0b011111; + delta >>>= 5; + if (delta > 0) + clamped |= 0b100000; + builder.write(intToChar[clamped]); + } while (delta > 0); + return num; + } + function hasMoreVlq(reader, max) { + if (reader.pos >= max) + return false; + return reader.peek() !== comma; + } + + const bufLength = 1024 * 16; + // Provide a fallback for older environments. + const td = typeof TextDecoder !== 'undefined' + ? /* #__PURE__ */ new TextDecoder() + : typeof Buffer !== 'undefined' + ? { + decode(buf) { + const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); + return out.toString(); + }, + } + : { + decode(buf) { + let out = ''; + for (let i = 0; i < buf.length; i++) { + out += String.fromCharCode(buf[i]); + } + return out; + }, + }; + class StringWriter { + constructor() { + this.pos = 0; + this.out = ''; + this.buffer = new Uint8Array(bufLength); + } + write(v) { + const { buffer } = this; + buffer[this.pos++] = v; + if (this.pos === bufLength) { + this.out += td.decode(buffer); + this.pos = 0; + } + } + flush() { + const { buffer, out, pos } = this; + return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; + } + } + class StringReader { + constructor(buffer) { + this.pos = 0; + this.buffer = buffer; + } + next() { + return this.buffer.charCodeAt(this.pos++); + } + peek() { + return this.buffer.charCodeAt(this.pos); + } + indexOf(char) { + const { buffer, pos } = this; + const idx = buffer.indexOf(char, pos); + return idx === -1 ? buffer.length : idx; + } + } + + const EMPTY = []; + function decodeOriginalScopes(input) { + const { length } = input; + const reader = new StringReader(input); + const scopes = []; + const stack = []; + let line = 0; + for (; reader.pos < length; reader.pos++) { + line = decodeInteger(reader, line); + const column = decodeInteger(reader, 0); + if (!hasMoreVlq(reader, length)) { + const last = stack.pop(); + last[2] = line; + last[3] = column; + continue; + } + const kind = decodeInteger(reader, 0); + const fields = decodeInteger(reader, 0); + const hasName = fields & 0b0001; + const scope = (hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]); + let vars = EMPTY; + if (hasMoreVlq(reader, length)) { + vars = []; + do { + const varsIndex = decodeInteger(reader, 0); + vars.push(varsIndex); + } while (hasMoreVlq(reader, length)); + } + scope.vars = vars; + scopes.push(scope); + stack.push(scope); + } + return scopes; + } + function encodeOriginalScopes(scopes) { + const writer = new StringWriter(); + for (let i = 0; i < scopes.length;) { + i = _encodeOriginalScopes(scopes, i, writer, [0]); + } + return writer.flush(); + } + function _encodeOriginalScopes(scopes, index, writer, state) { + const scope = scopes[index]; + const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope; + if (index > 0) + writer.write(comma); + state[0] = encodeInteger(writer, startLine, state[0]); + encodeInteger(writer, startColumn, 0); + encodeInteger(writer, kind, 0); + const fields = scope.length === 6 ? 0b0001 : 0; + encodeInteger(writer, fields, 0); + if (scope.length === 6) + encodeInteger(writer, scope[5], 0); + for (const v of vars) { + encodeInteger(writer, v, 0); + } + for (index++; index < scopes.length;) { + const next = scopes[index]; + const { 0: l, 1: c } = next; + if (l > endLine || (l === endLine && c >= endColumn)) { + break; + } + index = _encodeOriginalScopes(scopes, index, writer, state); + } + writer.write(comma); + state[0] = encodeInteger(writer, endLine, state[0]); + encodeInteger(writer, endColumn, 0); + return index; + } + function decodeGeneratedRanges(input) { + const { length } = input; + const reader = new StringReader(input); + const ranges = []; + const stack = []; + let genLine = 0; + let definitionSourcesIndex = 0; + let definitionScopeIndex = 0; + let callsiteSourcesIndex = 0; + let callsiteLine = 0; + let callsiteColumn = 0; + let bindingLine = 0; + let bindingColumn = 0; + do { + const semi = reader.indexOf(';'); + let genColumn = 0; + for (; reader.pos < semi; reader.pos++) { + genColumn = decodeInteger(reader, genColumn); + if (!hasMoreVlq(reader, semi)) { + const last = stack.pop(); + last[2] = genLine; + last[3] = genColumn; + continue; + } + const fields = decodeInteger(reader, 0); + const hasDefinition = fields & 0b0001; + const hasCallsite = fields & 0b0010; + const hasScope = fields & 0b0100; + let callsite = null; + let bindings = EMPTY; + let range; + if (hasDefinition) { + const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex); + definitionScopeIndex = decodeInteger(reader, definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0); + definitionSourcesIndex = defSourcesIndex; + range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex]; + } + else { + range = [genLine, genColumn, 0, 0]; + } + range.isScope = !!hasScope; + if (hasCallsite) { + const prevCsi = callsiteSourcesIndex; + const prevLine = callsiteLine; + callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex); + const sameSource = prevCsi === callsiteSourcesIndex; + callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0); + callsiteColumn = decodeInteger(reader, sameSource && prevLine === callsiteLine ? callsiteColumn : 0); + callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn]; + } + range.callsite = callsite; + if (hasMoreVlq(reader, semi)) { + bindings = []; + do { + bindingLine = genLine; + bindingColumn = genColumn; + const expressionsCount = decodeInteger(reader, 0); + let expressionRanges; + if (expressionsCount < -1) { + expressionRanges = [[decodeInteger(reader, 0)]]; + for (let i = -1; i > expressionsCount; i--) { + const prevBl = bindingLine; + bindingLine = decodeInteger(reader, bindingLine); + bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0); + const expression = decodeInteger(reader, 0); + expressionRanges.push([expression, bindingLine, bindingColumn]); + } + } + else { + expressionRanges = [[expressionsCount]]; + } + bindings.push(expressionRanges); + } while (hasMoreVlq(reader, semi)); + } + range.bindings = bindings; + ranges.push(range); + stack.push(range); + } + genLine++; + reader.pos = semi + 1; + } while (reader.pos < length); + return ranges; + } + function encodeGeneratedRanges(ranges) { + if (ranges.length === 0) + return ''; + const writer = new StringWriter(); + for (let i = 0; i < ranges.length;) { + i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]); + } + return writer.flush(); + } + function _encodeGeneratedRanges(ranges, index, writer, state) { + const range = ranges[index]; + const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, isScope, callsite, bindings, } = range; + if (state[0] < startLine) { + catchupLine(writer, state[0], startLine); + state[0] = startLine; + state[1] = 0; + } + else if (index > 0) { + writer.write(comma); + } + state[1] = encodeInteger(writer, range[1], state[1]); + const fields = (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0); + encodeInteger(writer, fields, 0); + if (range.length === 6) { + const { 4: sourcesIndex, 5: scopesIndex } = range; + if (sourcesIndex !== state[2]) { + state[3] = 0; + } + state[2] = encodeInteger(writer, sourcesIndex, state[2]); + state[3] = encodeInteger(writer, scopesIndex, state[3]); + } + if (callsite) { + const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite; + if (sourcesIndex !== state[4]) { + state[5] = 0; + state[6] = 0; + } + else if (callLine !== state[5]) { + state[6] = 0; + } + state[4] = encodeInteger(writer, sourcesIndex, state[4]); + state[5] = encodeInteger(writer, callLine, state[5]); + state[6] = encodeInteger(writer, callColumn, state[6]); + } + if (bindings) { + for (const binding of bindings) { + if (binding.length > 1) + encodeInteger(writer, -binding.length, 0); + const expression = binding[0][0]; + encodeInteger(writer, expression, 0); + let bindingStartLine = startLine; + let bindingStartColumn = startColumn; + for (let i = 1; i < binding.length; i++) { + const expRange = binding[i]; + bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine); + bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn); + encodeInteger(writer, expRange[0], 0); + } + } + } + for (index++; index < ranges.length;) { + const next = ranges[index]; + const { 0: l, 1: c } = next; + if (l > endLine || (l === endLine && c >= endColumn)) { + break; + } + index = _encodeGeneratedRanges(ranges, index, writer, state); + } + if (state[0] < endLine) { + catchupLine(writer, state[0], endLine); + state[0] = endLine; + state[1] = 0; + } + else { + writer.write(comma); + } + state[1] = encodeInteger(writer, endColumn, state[1]); + return index; + } + function catchupLine(writer, lastLine, line) { + do { + writer.write(semicolon); + } while (++lastLine < line); + } + + function decode(mappings) { + const { length } = mappings; + const reader = new StringReader(mappings); + const decoded = []; + let genColumn = 0; + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + do { + const semi = reader.indexOf(';'); + const line = []; + let sorted = true; + let lastCol = 0; + genColumn = 0; + while (reader.pos < semi) { + let seg; + genColumn = decodeInteger(reader, genColumn); + if (genColumn < lastCol) + sorted = false; + lastCol = genColumn; + if (hasMoreVlq(reader, semi)) { + sourcesIndex = decodeInteger(reader, sourcesIndex); + sourceLine = decodeInteger(reader, sourceLine); + sourceColumn = decodeInteger(reader, sourceColumn); + if (hasMoreVlq(reader, semi)) { + namesIndex = decodeInteger(reader, namesIndex); + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]; + } + else { + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn]; + } + } + else { + seg = [genColumn]; + } + line.push(seg); + reader.pos++; + } + if (!sorted) + sort(line); + decoded.push(line); + reader.pos = semi + 1; + } while (reader.pos <= length); + return decoded; + } + function sort(line) { + line.sort(sortComparator); + } + function sortComparator(a, b) { + return a[0] - b[0]; + } + function encode(decoded) { + const writer = new StringWriter(); + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + if (i > 0) + writer.write(semicolon); + if (line.length === 0) + continue; + let genColumn = 0; + for (let j = 0; j < line.length; j++) { + const segment = line[j]; + if (j > 0) + writer.write(comma); + genColumn = encodeInteger(writer, segment[0], genColumn); + if (segment.length === 1) + continue; + sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); + sourceLine = encodeInteger(writer, segment[2], sourceLine); + sourceColumn = encodeInteger(writer, segment[3], sourceColumn); + if (segment.length === 4) + continue; + namesIndex = encodeInteger(writer, segment[4], namesIndex); + } + } + return writer.flush(); + } + + exports.decode = decode; + exports.decodeGeneratedRanges = decodeGeneratedRanges; + exports.decodeOriginalScopes = decodeOriginalScopes; + exports.encode = encode; + exports.encodeGeneratedRanges = encodeGeneratedRanges; + exports.encodeOriginalScopes = encodeOriginalScopes; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=sourcemap-codec.umd.js.map diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map new file mode 100644 index 0000000..65b3674 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sourcemap-codec.umd.js","sources":["../src/vlq.ts","../src/strings.ts","../src/scopes.ts","../src/sourcemap-codec.ts"],"sourcesContent":["import type { StringReader, StringWriter } from './strings';\n\nexport const comma = ','.charCodeAt(0);\nexport const semicolon = ';'.charCodeAt(0);\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\n\nexport function decodeInteger(reader: StringReader, relative: number): number {\n let value = 0;\n let shift = 0;\n let integer = 0;\n\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n\n const shouldNegate = value & 1;\n value >>>= 1;\n\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n\n return relative + value;\n}\n\nexport function encodeInteger(builder: StringWriter, num: number, relative: number): number {\n let delta = num - relative;\n\n delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;\n do {\n let clamped = delta & 0b011111;\n delta >>>= 5;\n if (delta > 0) clamped |= 0b100000;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n\n return num;\n}\n\nexport function hasMoreVlq(reader: StringReader, max: number) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n","const bufLength = 1024 * 16;\n\n// Provide a fallback for older environments.\nconst td =\n typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf: Uint8Array): string {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf: Uint8Array): string {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n\nexport class StringWriter {\n pos = 0;\n private out = '';\n private buffer = new Uint8Array(bufLength);\n\n write(v: number): void {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n\n flush(): string {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n}\n\nexport class StringReader {\n pos = 0;\n private declare buffer: string;\n\n constructor(buffer: string) {\n this.buffer = buffer;\n }\n\n next(): number {\n return this.buffer.charCodeAt(this.pos++);\n }\n\n peek(): number {\n return this.buffer.charCodeAt(this.pos);\n }\n\n indexOf(char: string): number {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n}\n","import { StringReader, StringWriter } from './strings';\nimport { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\n\nconst EMPTY: any[] = [];\n\ntype Line = number;\ntype Column = number;\ntype Kind = number;\ntype Name = number;\ntype Var = number;\ntype SourcesIndex = number;\ntype ScopesIndex = number;\n\ntype Mix = (A & O) | (B & O);\n\nexport type OriginalScope = Mix<\n [Line, Column, Line, Column, Kind],\n [Line, Column, Line, Column, Kind, Name],\n { vars: Var[] }\n>;\n\nexport type GeneratedRange = Mix<\n [Line, Column, Line, Column],\n [Line, Column, Line, Column, SourcesIndex, ScopesIndex],\n {\n callsite: CallSite | null;\n bindings: Binding[];\n isScope: boolean;\n }\n>;\nexport type CallSite = [SourcesIndex, Line, Column];\ntype Binding = BindingExpressionRange[];\nexport type BindingExpressionRange = [Name] | [Name, Line, Column];\n\nexport function decodeOriginalScopes(input: string): OriginalScope[] {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes: OriginalScope[] = [];\n const stack: OriginalScope[] = [];\n let line = 0;\n\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop()!;\n last[2] = line;\n last[3] = column;\n continue;\n }\n\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 0b0001;\n\n const scope: OriginalScope = (\n hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]\n ) as OriginalScope;\n\n let vars: Var[] = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n\n scopes.push(scope);\n stack.push(scope);\n }\n\n return scopes;\n}\n\nexport function encodeOriginalScopes(scopes: OriginalScope[]): string {\n const writer = new StringWriter();\n\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeOriginalScopes(\n scopes: OriginalScope[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenColumn\n ],\n): number {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n\n if (index > 0) writer.write(comma);\n\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n\n const fields = scope.length === 6 ? 0b0001 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6) encodeInteger(writer, scope[5], 0);\n\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n\n return index;\n}\n\nexport function decodeGeneratedRanges(input: string): GeneratedRange[] {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges: GeneratedRange[] = [];\n const stack: GeneratedRange[] = [];\n\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n\n do {\n const semi = reader.indexOf(';');\n let genColumn = 0;\n\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop()!;\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 0b0001;\n const hasCallsite = fields & 0b0010;\n const hasScope = fields & 0b0100;\n\n let callsite: CallSite | null = null;\n let bindings: Binding[] = EMPTY;\n let range: GeneratedRange;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(\n reader,\n definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0,\n );\n\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex] as GeneratedRange;\n } else {\n range = [genLine, genColumn, 0, 0] as GeneratedRange;\n }\n\n range.isScope = !!hasScope;\n\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(\n reader,\n sameSource && prevLine === callsiteLine ? callsiteColumn : 0,\n );\n\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges: BindingExpressionRange[];\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n\n ranges.push(range);\n stack.push(range);\n }\n\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n\n return ranges;\n}\n\nexport function encodeGeneratedRanges(ranges: GeneratedRange[]): string {\n if (ranges.length === 0) return '';\n\n const writer = new StringWriter();\n\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeGeneratedRanges(\n ranges: GeneratedRange[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenLine\n number, // GenColumn\n number, // DefSourcesIndex\n number, // DefScopesIndex\n number, // CallSourcesIndex\n number, // CallLine\n number, // CallColumn\n ],\n): number {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings,\n } = range;\n\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n\n state[1] = encodeInteger(writer, range[1], state[1]);\n\n const fields =\n (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0);\n encodeInteger(writer, fields, 0);\n\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite!;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1]!, bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2]!, bindingStartColumn);\n encodeInteger(writer, expRange[0]!, 0);\n }\n }\n }\n\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n\n return index;\n}\n\nfunction catchupLine(writer: StringWriter, lastLine: number, line: number) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n","import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\nimport { StringWriter, StringReader } from './strings';\n\nexport {\n decodeOriginalScopes,\n encodeOriginalScopes,\n decodeGeneratedRanges,\n encodeGeneratedRanges,\n} from './scopes';\nexport type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes';\n\nexport type SourceMapSegment =\n | [number]\n | [number, number, number, number]\n | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nexport function decode(mappings: string): SourceMapMappings {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded: SourceMapMappings = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n do {\n const semi = reader.indexOf(';');\n const line: SourceMapLine = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n\n while (reader.pos < semi) {\n let seg: SourceMapSegment;\n\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n\n line.push(seg);\n reader.pos++;\n }\n\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n\n return decoded;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly): string;\nexport function encode(decoded: Readonly): string {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n\n let genColumn = 0;\n\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n\n genColumn = encodeInteger(writer, segment[0], genColumn);\n\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n\n return writer.flush();\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/types/scopes.d.ts b/node_modules/@jridgewell/sourcemap-codec/dist/types/scopes.d.ts new file mode 100644 index 0000000..d156fab --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/types/scopes.d.ts @@ -0,0 +1,49 @@ +declare type Line = number; +declare type Column = number; +declare type Kind = number; +declare type Name = number; +declare type Var = number; +declare type SourcesIndex = number; +declare type ScopesIndex = number; +declare type Mix = (A & O) | (B & O); +export declare type OriginalScope = Mix<[ + Line, + Column, + Line, + Column, + Kind +], [ + Line, + Column, + Line, + Column, + Kind, + Name +], { + vars: Var[]; +}>; +export declare type GeneratedRange = Mix<[ + Line, + Column, + Line, + Column +], [ + Line, + Column, + Line, + Column, + SourcesIndex, + ScopesIndex +], { + callsite: CallSite | null; + bindings: Binding[]; + isScope: boolean; +}>; +export declare type CallSite = [SourcesIndex, Line, Column]; +declare type Binding = BindingExpressionRange[]; +export declare type BindingExpressionRange = [Name] | [Name, Line, Column]; +export declare function decodeOriginalScopes(input: string): OriginalScope[]; +export declare function encodeOriginalScopes(scopes: OriginalScope[]): string; +export declare function decodeGeneratedRanges(input: string): GeneratedRange[]; +export declare function encodeGeneratedRanges(ranges: GeneratedRange[]): string; +export {}; diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts b/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts new file mode 100644 index 0000000..336e658 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts @@ -0,0 +1,8 @@ +export { decodeOriginalScopes, encodeOriginalScopes, decodeGeneratedRanges, encodeGeneratedRanges, } from './scopes'; +export type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes'; +export declare type SourceMapSegment = [number] | [number, number, number, number] | [number, number, number, number, number]; +export declare type SourceMapLine = SourceMapSegment[]; +export declare type SourceMapMappings = SourceMapLine[]; +export declare function decode(mappings: string): SourceMapMappings; +export declare function encode(decoded: SourceMapMappings): string; +export declare function encode(decoded: Readonly): string; diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/types/strings.d.ts b/node_modules/@jridgewell/sourcemap-codec/dist/types/strings.d.ts new file mode 100644 index 0000000..78bd88e --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/types/strings.d.ts @@ -0,0 +1,15 @@ +export declare class StringWriter { + pos: number; + private out; + private buffer; + write(v: number): void; + flush(): string; +} +export declare class StringReader { + pos: number; + private buffer; + constructor(buffer: string); + next(): number; + peek(): number; + indexOf(char: string): number; +} diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/types/vlq.d.ts b/node_modules/@jridgewell/sourcemap-codec/dist/types/vlq.d.ts new file mode 100644 index 0000000..450ee57 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/types/vlq.d.ts @@ -0,0 +1,6 @@ +import type { StringReader, StringWriter } from './strings'; +export declare const comma: number; +export declare const semicolon: number; +export declare function decodeInteger(reader: StringReader, relative: number): number; +export declare function encodeInteger(builder: StringWriter, num: number, relative: number): number; +export declare function hasMoreVlq(reader: StringReader, max: number): boolean; diff --git a/node_modules/@jridgewell/sourcemap-codec/package.json b/node_modules/@jridgewell/sourcemap-codec/package.json new file mode 100644 index 0000000..7168efc --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/package.json @@ -0,0 +1,75 @@ +{ + "name": "@jridgewell/sourcemap-codec", + "version": "1.5.0", + "description": "Encode/decode sourcemap mappings", + "keywords": [ + "sourcemap", + "vlq" + ], + "main": "dist/sourcemap-codec.umd.js", + "module": "dist/sourcemap-codec.mjs", + "types": "dist/types/sourcemap-codec.d.ts", + "files": [ + "dist" + ], + "exports": { + ".": [ + { + "types": "./dist/types/sourcemap-codec.d.ts", + "browser": "./dist/sourcemap-codec.umd.js", + "require": "./dist/sourcemap-codec.umd.js", + "import": "./dist/sourcemap-codec.mjs" + }, + "./dist/sourcemap-codec.umd.js" + ], + "./package.json": "./package.json" + }, + "scripts": { + "benchmark": "run-s build:rollup benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node --expose-gc benchmark/index.js", + "build": "run-s -n build:*", + "build:rollup": "rollup -c rollup.config.js", + "build:ts": "tsc --project tsconfig.build.json", + "lint": "run-s -n lint:*", + "lint:prettier": "npm run test:lint:prettier -- --write", + "lint:ts": "npm run test:lint:ts -- --fix", + "prebuild": "rm -rf dist", + "prepublishOnly": "npm run preversion", + "preversion": "run-s test build", + "test": "run-s -n test:lint test:only", + "test:debug": "mocha --inspect-brk", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:coverage": "c8 mocha", + "test:watch": "mocha --watch" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jridgewell/sourcemap-codec.git" + }, + "author": "Rich Harris", + "license": "MIT", + "devDependencies": { + "@rollup/plugin-typescript": "8.3.0", + "@types/mocha": "10.0.6", + "@types/node": "17.0.15", + "@typescript-eslint/eslint-plugin": "5.10.0", + "@typescript-eslint/parser": "5.10.0", + "benchmark": "2.1.4", + "c8": "7.11.2", + "eslint": "8.7.0", + "eslint-config-prettier": "8.3.0", + "mocha": "9.2.0", + "npm-run-all": "4.1.5", + "prettier": "2.5.1", + "rollup": "2.64.0", + "source-map": "0.6.1", + "source-map-js": "1.0.2", + "sourcemap-codec": "1.4.8", + "tsx": "4.7.1", + "typescript": "4.5.4" + } +} diff --git a/node_modules/@pkgjs/parseargs/.editorconfig b/node_modules/@pkgjs/parseargs/.editorconfig new file mode 100644 index 0000000..b140163 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/.editorconfig @@ -0,0 +1,14 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Copied from Node.js to ease compatibility in PR. +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true +quote_type = single diff --git a/node_modules/@pkgjs/parseargs/CHANGELOG.md b/node_modules/@pkgjs/parseargs/CHANGELOG.md new file mode 100644 index 0000000..2adc7d3 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/CHANGELOG.md @@ -0,0 +1,147 @@ +# Changelog + +## [0.11.0](https://github.com/pkgjs/parseargs/compare/v0.10.0...v0.11.0) (2022-10-08) + + +### Features + +* add `default` option parameter ([#142](https://github.com/pkgjs/parseargs/issues/142)) ([cd20847](https://github.com/pkgjs/parseargs/commit/cd20847a00b2f556aa9c085ac83b942c60868ec1)) + +## [0.10.0](https://github.com/pkgjs/parseargs/compare/v0.9.1...v0.10.0) (2022-07-21) + + +### Features + +* add parsed meta-data to returned properties ([#129](https://github.com/pkgjs/parseargs/issues/129)) ([91bfb4d](https://github.com/pkgjs/parseargs/commit/91bfb4d3f7b6937efab1b27c91c45d1205f1497e)) + +## [0.9.1](https://github.com/pkgjs/parseargs/compare/v0.9.0...v0.9.1) (2022-06-20) + + +### Bug Fixes + +* **runtime:** support node 14+ ([#135](https://github.com/pkgjs/parseargs/issues/135)) ([6a1c5a6](https://github.com/pkgjs/parseargs/commit/6a1c5a6f7cadf2f035e004027e2742e3c4ce554b)) + +## [0.9.0](https://github.com/pkgjs/parseargs/compare/v0.8.0...v0.9.0) (2022-05-23) + + +### ⚠ BREAKING CHANGES + +* drop handling of electron arguments (#121) + +### Code Refactoring + +* drop handling of electron arguments ([#121](https://github.com/pkgjs/parseargs/issues/121)) ([a2ffd53](https://github.com/pkgjs/parseargs/commit/a2ffd537c244a062371522b955acb45a404fc9f2)) + +## [0.8.0](https://github.com/pkgjs/parseargs/compare/v0.7.1...v0.8.0) (2022-05-16) + + +### ⚠ BREAKING CHANGES + +* switch type:string option arguments to greedy, but with error for suspect cases in strict mode (#88) +* positionals now opt-in when strict:true (#116) +* create result.values with null prototype (#111) + +### Features + +* create result.values with null prototype ([#111](https://github.com/pkgjs/parseargs/issues/111)) ([9d539c3](https://github.com/pkgjs/parseargs/commit/9d539c3d57f269c160e74e0656ad4fa84ff92ec2)) +* positionals now opt-in when strict:true ([#116](https://github.com/pkgjs/parseargs/issues/116)) ([3643338](https://github.com/pkgjs/parseargs/commit/364333826b746e8a7dc5505b4b22fd19ac51df3b)) +* switch type:string option arguments to greedy, but with error for suspect cases in strict mode ([#88](https://github.com/pkgjs/parseargs/issues/88)) ([c2b5e72](https://github.com/pkgjs/parseargs/commit/c2b5e72161991dfdc535909f1327cc9b970fe7e8)) + +### [0.7.1](https://github.com/pkgjs/parseargs/compare/v0.7.0...v0.7.1) (2022-04-15) + + +### Bug Fixes + +* resist pollution ([#106](https://github.com/pkgjs/parseargs/issues/106)) ([ecf2dec](https://github.com/pkgjs/parseargs/commit/ecf2dece0a9f2a76d789384d5d71c68ffe64022a)) + +## [0.7.0](https://github.com/pkgjs/parseargs/compare/v0.6.0...v0.7.0) (2022-04-13) + + +### Features + +* Add strict mode to parser ([#74](https://github.com/pkgjs/parseargs/issues/74)) ([8267d02](https://github.com/pkgjs/parseargs/commit/8267d02083a87b8b8a71fcce08348d1e031ea91c)) + +## [0.6.0](https://github.com/pkgjs/parseargs/compare/v0.5.0...v0.6.0) (2022-04-11) + + +### ⚠ BREAKING CHANGES + +* rework results to remove redundant `flags` property and store value true for boolean options (#83) +* switch to existing ERR_INVALID_ARG_VALUE (#97) + +### Code Refactoring + +* rework results to remove redundant `flags` property and store value true for boolean options ([#83](https://github.com/pkgjs/parseargs/issues/83)) ([be153db](https://github.com/pkgjs/parseargs/commit/be153dbed1d488cb7b6e27df92f601ba7337713d)) +* switch to existing ERR_INVALID_ARG_VALUE ([#97](https://github.com/pkgjs/parseargs/issues/97)) ([084a23f](https://github.com/pkgjs/parseargs/commit/084a23f9fde2da030b159edb1c2385f24579ce40)) + +## [0.5.0](https://github.com/pkgjs/parseargs/compare/v0.4.0...v0.5.0) (2022-04-10) + + +### ⚠ BREAKING CHANGES + +* Require type to be specified for each supplied option (#95) + +### Features + +* Require type to be specified for each supplied option ([#95](https://github.com/pkgjs/parseargs/issues/95)) ([02cd018](https://github.com/pkgjs/parseargs/commit/02cd01885b8aaa59f2db8308f2d4479e64340068)) + +## [0.4.0](https://github.com/pkgjs/parseargs/compare/v0.3.0...v0.4.0) (2022-03-12) + + +### ⚠ BREAKING CHANGES + +* parsing, revisit short option groups, add support for combined short and value (#75) +* restructure configuration to take options bag (#63) + +### Code Refactoring + +* parsing, revisit short option groups, add support for combined short and value ([#75](https://github.com/pkgjs/parseargs/issues/75)) ([a92600f](https://github.com/pkgjs/parseargs/commit/a92600fa6c214508ab1e016fa55879a314f541af)) +* restructure configuration to take options bag ([#63](https://github.com/pkgjs/parseargs/issues/63)) ([b412095](https://github.com/pkgjs/parseargs/commit/b4120957d90e809ee8b607b06e747d3e6a6b213e)) + +## [0.3.0](https://github.com/pkgjs/parseargs/compare/v0.2.0...v0.3.0) (2022-02-06) + + +### Features + +* **parser:** support short-option groups ([#59](https://github.com/pkgjs/parseargs/issues/59)) ([882067b](https://github.com/pkgjs/parseargs/commit/882067bc2d7cbc6b796f8e5a079a99bc99d4e6ba)) + +## [0.2.0](https://github.com/pkgjs/parseargs/compare/v0.1.1...v0.2.0) (2022-02-05) + + +### Features + +* basic support for shorts ([#50](https://github.com/pkgjs/parseargs/issues/50)) ([a2f36d7](https://github.com/pkgjs/parseargs/commit/a2f36d7da4145af1c92f76806b7fe2baf6beeceb)) + + +### Bug Fixes + +* always store value for a=b ([#43](https://github.com/pkgjs/parseargs/issues/43)) ([a85e8dc](https://github.com/pkgjs/parseargs/commit/a85e8dc06379fd2696ee195cc625de8fac6aee42)) +* support single dash as positional ([#49](https://github.com/pkgjs/parseargs/issues/49)) ([d795bf8](https://github.com/pkgjs/parseargs/commit/d795bf877d068fd67aec381f30b30b63f97109ad)) + +### [0.1.1](https://github.com/pkgjs/parseargs/compare/v0.1.0...v0.1.1) (2022-01-25) + + +### Bug Fixes + +* only use arrays in results for multiples ([#42](https://github.com/pkgjs/parseargs/issues/42)) ([c357584](https://github.com/pkgjs/parseargs/commit/c357584847912506319ed34a0840080116f4fd65)) + +## 0.1.0 (2022-01-22) + + +### Features + +* expand scenarios covered by default arguments for environments ([#20](https://github.com/pkgjs/parseargs/issues/20)) ([582ada7](https://github.com/pkgjs/parseargs/commit/582ada7be0eca3a73d6e0bd016e7ace43449fa4c)) +* update readme and include contributing guidelines ([8edd6fc](https://github.com/pkgjs/parseargs/commit/8edd6fc863cd705f6fac732724159ebe8065a2b0)) + + +### Bug Fixes + +* do not strip excess leading dashes on long option names ([#21](https://github.com/pkgjs/parseargs/issues/21)) ([f848590](https://github.com/pkgjs/parseargs/commit/f848590ebf3249ed5979ff47e003fa6e1a8ec5c0)) +* name & readme ([3f057c1](https://github.com/pkgjs/parseargs/commit/3f057c1b158a1bdbe878c64b57460c58e56e465f)) +* package.json values ([9bac300](https://github.com/pkgjs/parseargs/commit/9bac300e00cd76c77076bf9e75e44f8929512da9)) +* update readme name ([957d8d9](https://github.com/pkgjs/parseargs/commit/957d8d96e1dcb48297c0a14345d44c0123b2883e)) + + +### Build System + +* first release as minor ([421c6e2](https://github.com/pkgjs/parseargs/commit/421c6e2569a8668ad14fac5a5af5be60479a7571)) diff --git a/node_modules/@pkgjs/parseargs/LICENSE b/node_modules/@pkgjs/parseargs/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/@pkgjs/parseargs/README.md b/node_modules/@pkgjs/parseargs/README.md new file mode 100644 index 0000000..0a04192 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/README.md @@ -0,0 +1,413 @@ + +# parseArgs + +[![Coverage][coverage-image]][coverage-url] + +Polyfill of `util.parseArgs()` + +## `util.parseArgs([config])` + + + +> Stability: 1 - Experimental + +* `config` {Object} Used to provide arguments for parsing and to configure + the parser. `config` supports the following properties: + * `args` {string\[]} array of argument strings. **Default:** `process.argv` + with `execPath` and `filename` removed. + * `options` {Object} Used to describe arguments known to the parser. + Keys of `options` are the long names of options and values are an + {Object} accepting the following properties: + * `type` {string} Type of argument, which must be either `boolean` or `string`. + * `multiple` {boolean} Whether this option can be provided multiple + times. If `true`, all values will be collected in an array. If + `false`, values for the option are last-wins. **Default:** `false`. + * `short` {string} A single character alias for the option. + * `default` {string | boolean | string\[] | boolean\[]} The default option + value when it is not set by args. It must be of the same type as the + the `type` property. When `multiple` is `true`, it must be an array. + * `strict` {boolean} Should an error be thrown when unknown arguments + are encountered, or when arguments are passed that do not match the + `type` configured in `options`. + **Default:** `true`. + * `allowPositionals` {boolean} Whether this command accepts positional + arguments. + **Default:** `false` if `strict` is `true`, otherwise `true`. + * `tokens` {boolean} Return the parsed tokens. This is useful for extending + the built-in behavior, from adding additional checks through to reprocessing + the tokens in different ways. + **Default:** `false`. + +* Returns: {Object} The parsed command line arguments: + * `values` {Object} A mapping of parsed option names with their {string} + or {boolean} values. + * `positionals` {string\[]} Positional arguments. + * `tokens` {Object\[] | undefined} See [parseArgs tokens](#parseargs-tokens) + section. Only returned if `config` includes `tokens: true`. + +Provides a higher level API for command-line argument parsing than interacting +with `process.argv` directly. Takes a specification for the expected arguments +and returns a structured object with the parsed options and positionals. + +```mjs +import { parseArgs } from 'node:util'; +const args = ['-f', '--bar', 'b']; +const options = { + foo: { + type: 'boolean', + short: 'f' + }, + bar: { + type: 'string' + } +}; +const { + values, + positionals +} = parseArgs({ args, options }); +console.log(values, positionals); +// Prints: [Object: null prototype] { foo: true, bar: 'b' } [] +``` + +```cjs +const { parseArgs } = require('node:util'); +const args = ['-f', '--bar', 'b']; +const options = { + foo: { + type: 'boolean', + short: 'f' + }, + bar: { + type: 'string' + } +}; +const { + values, + positionals +} = parseArgs({ args, options }); +console.log(values, positionals); +// Prints: [Object: null prototype] { foo: true, bar: 'b' } [] +``` + +`util.parseArgs` is experimental and behavior may change. Join the +conversation in [pkgjs/parseargs][] to contribute to the design. + +### `parseArgs` `tokens` + +Detailed parse information is available for adding custom behaviours by +specifying `tokens: true` in the configuration. +The returned tokens have properties describing: + +* all tokens + * `kind` {string} One of 'option', 'positional', or 'option-terminator'. + * `index` {number} Index of element in `args` containing token. So the + source argument for a token is `args[token.index]`. +* option tokens + * `name` {string} Long name of option. + * `rawName` {string} How option used in args, like `-f` of `--foo`. + * `value` {string | undefined} Option value specified in args. + Undefined for boolean options. + * `inlineValue` {boolean | undefined} Whether option value specified inline, + like `--foo=bar`. +* positional tokens + * `value` {string} The value of the positional argument in args (i.e. `args[index]`). +* option-terminator token + +The returned tokens are in the order encountered in the input args. Options +that appear more than once in args produce a token for each use. Short option +groups like `-xy` expand to a token for each option. So `-xxx` produces +three tokens. + +For example to use the returned tokens to add support for a negated option +like `--no-color`, the tokens can be reprocessed to change the value stored +for the negated option. + +```mjs +import { parseArgs } from 'node:util'; + +const options = { + 'color': { type: 'boolean' }, + 'no-color': { type: 'boolean' }, + 'logfile': { type: 'string' }, + 'no-logfile': { type: 'boolean' }, +}; +const { values, tokens } = parseArgs({ options, tokens: true }); + +// Reprocess the option tokens and overwrite the returned values. +tokens + .filter((token) => token.kind === 'option') + .forEach((token) => { + if (token.name.startsWith('no-')) { + // Store foo:false for --no-foo + const positiveName = token.name.slice(3); + values[positiveName] = false; + delete values[token.name]; + } else { + // Resave value so last one wins if both --foo and --no-foo. + values[token.name] = token.value ?? true; + } + }); + +const color = values.color; +const logfile = values.logfile ?? 'default.log'; + +console.log({ logfile, color }); +``` + +```cjs +const { parseArgs } = require('node:util'); + +const options = { + 'color': { type: 'boolean' }, + 'no-color': { type: 'boolean' }, + 'logfile': { type: 'string' }, + 'no-logfile': { type: 'boolean' }, +}; +const { values, tokens } = parseArgs({ options, tokens: true }); + +// Reprocess the option tokens and overwrite the returned values. +tokens + .filter((token) => token.kind === 'option') + .forEach((token) => { + if (token.name.startsWith('no-')) { + // Store foo:false for --no-foo + const positiveName = token.name.slice(3); + values[positiveName] = false; + delete values[token.name]; + } else { + // Resave value so last one wins if both --foo and --no-foo. + values[token.name] = token.value ?? true; + } + }); + +const color = values.color; +const logfile = values.logfile ?? 'default.log'; + +console.log({ logfile, color }); +``` + +Example usage showing negated options, and when an option is used +multiple ways then last one wins. + +```console +$ node negate.js +{ logfile: 'default.log', color: undefined } +$ node negate.js --no-logfile --no-color +{ logfile: false, color: false } +$ node negate.js --logfile=test.log --color +{ logfile: 'test.log', color: true } +$ node negate.js --no-logfile --logfile=test.log --color --no-color +{ logfile: 'test.log', color: false } +``` + +----- + + +## Table of Contents +- [`util.parseArgs([config])`](#utilparseargsconfig) +- [Scope](#scope) +- [Version Matchups](#version-matchups) +- [🚀 Getting Started](#-getting-started) +- [🙌 Contributing](#-contributing) +- [💡 `process.mainArgs` Proposal](#-processmainargs-proposal) + - [Implementation:](#implementation) +- [📃 Examples](#-examples) +- [F.A.Qs](#faqs) +- [Links & Resources](#links--resources) + +----- + +## Scope + +It is already possible to build great arg parsing modules on top of what Node.js provides; the prickly API is abstracted away by these modules. Thus, process.parseArgs() is not necessarily intended for library authors; it is intended for developers of simple CLI tools, ad-hoc scripts, deployed Node.js applications, and learning materials. + +It is exceedingly difficult to provide an API which would both be friendly to these Node.js users while being extensible enough for libraries to build upon. We chose to prioritize these use cases because these are currently not well-served by Node.js' API. + +---- + +## Version Matchups + +| Node.js | @pkgjs/parseArgs | +| -- | -- | +| [v18.3.0](https://nodejs.org/docs/latest-v18.x/api/util.html#utilparseargsconfig) | [v0.9.1](https://github.com/pkgjs/parseargs/tree/v0.9.1#utilparseargsconfig) | +| [v16.17.0](https://nodejs.org/dist/latest-v16.x/docs/api/util.html#utilparseargsconfig), [v18.7.0](https://nodejs.org/docs/latest-v18.x/api/util.html#utilparseargsconfig) | [0.10.0](https://github.com/pkgjs/parseargs/tree/v0.10.0#utilparseargsconfig) | + +---- + +## 🚀 Getting Started + +1. **Install dependencies.** + + ```bash + npm install + ``` + +2. **Open the index.js file and start editing!** + +3. **Test your code by calling parseArgs through our test file** + + ```bash + npm test + ``` + +---- + +## 🙌 Contributing + +Any person who wants to contribute to the initiative is welcome! Please first read the [Contributing Guide](CONTRIBUTING.md) + +Additionally, reading the [`Examples w/ Output`](#-examples-w-output) section of this document will be the best way to familiarize yourself with the target expected behavior for parseArgs() once it is fully implemented. + +This package was implemented using [tape](https://www.npmjs.com/package/tape) as its test harness. + +---- + +## 💡 `process.mainArgs` Proposal + +> Note: This can be moved forward independently of the `util.parseArgs()` proposal/work. + +### Implementation: + +```javascript +process.mainArgs = process.argv.slice(process._exec ? 1 : 2) +``` + +---- + +## 📃 Examples + +```js +const { parseArgs } = require('@pkgjs/parseargs'); +``` + +```js +const { parseArgs } = require('@pkgjs/parseargs'); +// specify the options that may be used +const options = { + foo: { type: 'string'}, + bar: { type: 'boolean' }, +}; +const args = ['--foo=a', '--bar']; +const { values, positionals } = parseArgs({ args, options }); +// values = { foo: 'a', bar: true } +// positionals = [] +``` + +```js +const { parseArgs } = require('@pkgjs/parseargs'); +// type:string & multiple +const options = { + foo: { + type: 'string', + multiple: true, + }, +}; +const args = ['--foo=a', '--foo', 'b']; +const { values, positionals } = parseArgs({ args, options }); +// values = { foo: [ 'a', 'b' ] } +// positionals = [] +``` + +```js +const { parseArgs } = require('@pkgjs/parseargs'); +// shorts +const options = { + foo: { + short: 'f', + type: 'boolean' + }, +}; +const args = ['-f', 'b']; +const { values, positionals } = parseArgs({ args, options, allowPositionals: true }); +// values = { foo: true } +// positionals = ['b'] +``` + +```js +const { parseArgs } = require('@pkgjs/parseargs'); +// unconfigured +const options = {}; +const args = ['-f', '--foo=a', '--bar', 'b']; +const { values, positionals } = parseArgs({ strict: false, args, options, allowPositionals: true }); +// values = { f: true, foo: 'a', bar: true } +// positionals = ['b'] +``` + +---- + +## F.A.Qs + +- Is `cmd --foo=bar baz` the same as `cmd baz --foo=bar`? + - yes +- Does the parser execute a function? + - no +- Does the parser execute one of several functions, depending on input? + - no +- Can subcommands take options that are distinct from the main command? + - no +- Does it output generated help when no options match? + - no +- Does it generated short usage? Like: `usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]` + - no (no usage/help at all) +- Does the user provide the long usage text? For each option? For the whole command? + - no +- Do subcommands (if implemented) have their own usage output? + - no +- Does usage print if the user runs `cmd --help`? + - no +- Does it set `process.exitCode`? + - no +- Does usage print to stderr or stdout? + - N/A +- Does it check types? (Say, specify that an option is a boolean, number, etc.) + - no +- Can an option have more than one type? (string or false, for example) + - no +- Can the user define a type? (Say, `type: path` to call `path.resolve()` on the argument.) + - no +- Does a `--foo=0o22` mean 0, 22, 18, or "0o22"? + - `"0o22"` +- Does it coerce types? + - no +- Does `--no-foo` coerce to `--foo=false`? For all options? Only boolean options? + - no, it sets `{values:{'no-foo': true}}` +- Is `--foo` the same as `--foo=true`? Only for known booleans? Only at the end? + - no, they are not the same. There is no special handling of `true` as a value so it is just another string. +- Does it read environment variables? Ie, is `FOO=1 cmd` the same as `cmd --foo=1`? + - no +- Do unknown arguments raise an error? Are they parsed? Are they treated as positional arguments? + - no, they are parsed, not treated as positionals +- Does `--` signal the end of options? + - yes +- Is `--` included as a positional? + - no +- Is `program -- foo` the same as `program foo`? + - yes, both store `{positionals:['foo']}` +- Does the API specify whether a `--` was present/relevant? + - no +- Is `-bar` the same as `--bar`? + - no, `-bar` is a short option or options, with expansion logic that follows the + [Utility Syntax Guidelines in POSIX.1-2017](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html). `-bar` expands to `-b`, `-a`, `-r`. +- Is `---foo` the same as `--foo`? + - no + - the first is a long option named `'-foo'` + - the second is a long option named `'foo'` +- Is `-` a positional? ie, `bash some-test.sh | tap -` + - yes + +## Links & Resources + +* [Initial Tooling Issue](https://github.com/nodejs/tooling/issues/19) +* [Initial Proposal](https://github.com/nodejs/node/pull/35015) +* [parseArgs Proposal](https://github.com/nodejs/node/pull/42675) + +[coverage-image]: https://img.shields.io/nycrc/pkgjs/parseargs +[coverage-url]: https://github.com/pkgjs/parseargs/blob/main/.nycrc +[pkgjs/parseargs]: https://github.com/pkgjs/parseargs diff --git a/node_modules/@pkgjs/parseargs/examples/is-default-value.js b/node_modules/@pkgjs/parseargs/examples/is-default-value.js new file mode 100644 index 0000000..0a67972 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/examples/is-default-value.js @@ -0,0 +1,25 @@ +'use strict'; + +// This example shows how to understand if a default value is used or not. + +// 1. const { parseArgs } = require('node:util'); // from node +// 2. const { parseArgs } = require('@pkgjs/parseargs'); // from package +const { parseArgs } = require('..'); // in repo + +const options = { + file: { short: 'f', type: 'string', default: 'FOO' }, +}; + +const { values, tokens } = parseArgs({ options, tokens: true }); + +const isFileDefault = !tokens.some((token) => token.kind === 'option' && + token.name === 'file' +); + +console.log(values); +console.log(`Is the file option [${values.file}] the default value? ${isFileDefault}`); + +// Try the following: +// node is-default-value.js +// node is-default-value.js -f FILE +// node is-default-value.js --file FILE diff --git a/node_modules/@pkgjs/parseargs/examples/limit-long-syntax.js b/node_modules/@pkgjs/parseargs/examples/limit-long-syntax.js new file mode 100644 index 0000000..943e643 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/examples/limit-long-syntax.js @@ -0,0 +1,35 @@ +'use strict'; + +// This is an example of using tokens to add a custom behaviour. +// +// Require the use of `=` for long options and values by blocking +// the use of space separated values. +// So allow `--foo=bar`, and not allow `--foo bar`. +// +// Note: this is not a common behaviour, most CLIs allow both forms. + +// 1. const { parseArgs } = require('node:util'); // from node +// 2. const { parseArgs } = require('@pkgjs/parseargs'); // from package +const { parseArgs } = require('..'); // in repo + +const options = { + file: { short: 'f', type: 'string' }, + log: { type: 'string' }, +}; + +const { values, tokens } = parseArgs({ options, tokens: true }); + +const badToken = tokens.find((token) => token.kind === 'option' && + token.value != null && + token.rawName.startsWith('--') && + !token.inlineValue +); +if (badToken) { + throw new Error(`Option value for '${badToken.rawName}' must be inline, like '${badToken.rawName}=VALUE'`); +} + +console.log(values); + +// Try the following: +// node limit-long-syntax.js -f FILE --log=LOG +// node limit-long-syntax.js --file FILE diff --git a/node_modules/@pkgjs/parseargs/examples/negate.js b/node_modules/@pkgjs/parseargs/examples/negate.js new file mode 100644 index 0000000..b663469 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/examples/negate.js @@ -0,0 +1,43 @@ +'use strict'; + +// This example is used in the documentation. + +// How might I add my own support for --no-foo? + +// 1. const { parseArgs } = require('node:util'); // from node +// 2. const { parseArgs } = require('@pkgjs/parseargs'); // from package +const { parseArgs } = require('..'); // in repo + +const options = { + 'color': { type: 'boolean' }, + 'no-color': { type: 'boolean' }, + 'logfile': { type: 'string' }, + 'no-logfile': { type: 'boolean' }, +}; +const { values, tokens } = parseArgs({ options, tokens: true }); + +// Reprocess the option tokens and overwrite the returned values. +tokens + .filter((token) => token.kind === 'option') + .forEach((token) => { + if (token.name.startsWith('no-')) { + // Store foo:false for --no-foo + const positiveName = token.name.slice(3); + values[positiveName] = false; + delete values[token.name]; + } else { + // Resave value so last one wins if both --foo and --no-foo. + values[token.name] = token.value ?? true; + } + }); + +const color = values.color; +const logfile = values.logfile ?? 'default.log'; + +console.log({ logfile, color }); + +// Try the following: +// node negate.js +// node negate.js --no-logfile --no-color +// negate.js --logfile=test.log --color +// node negate.js --no-logfile --logfile=test.log --color --no-color diff --git a/node_modules/@pkgjs/parseargs/examples/no-repeated-options.js b/node_modules/@pkgjs/parseargs/examples/no-repeated-options.js new file mode 100644 index 0000000..0c32468 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/examples/no-repeated-options.js @@ -0,0 +1,31 @@ +'use strict'; + +// This is an example of using tokens to add a custom behaviour. +// +// Throw an error if an option is used more than once. + +// 1. const { parseArgs } = require('node:util'); // from node +// 2. const { parseArgs } = require('@pkgjs/parseargs'); // from package +const { parseArgs } = require('..'); // in repo + +const options = { + ding: { type: 'boolean', short: 'd' }, + beep: { type: 'boolean', short: 'b' } +}; +const { values, tokens } = parseArgs({ options, tokens: true }); + +const seenBefore = new Set(); +tokens.forEach((token) => { + if (token.kind !== 'option') return; + if (seenBefore.has(token.name)) { + throw new Error(`option '${token.name}' used multiple times`); + } + seenBefore.add(token.name); +}); + +console.log(values); + +// Try the following: +// node no-repeated-options --ding --beep +// node no-repeated-options --beep -b +// node no-repeated-options -ddd diff --git a/node_modules/@pkgjs/parseargs/examples/ordered-options.mjs b/node_modules/@pkgjs/parseargs/examples/ordered-options.mjs new file mode 100644 index 0000000..8ab7367 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/examples/ordered-options.mjs @@ -0,0 +1,41 @@ +// This is an example of using tokens to add a custom behaviour. +// +// This adds a option order check so that --some-unstable-option +// may only be used after --enable-experimental-options +// +// Note: this is not a common behaviour, the order of different options +// does not usually matter. + +import { parseArgs } from '../index.js'; + +function findTokenIndex(tokens, target) { + return tokens.findIndex((token) => token.kind === 'option' && + token.name === target + ); +} + +const experimentalName = 'enable-experimental-options'; +const unstableName = 'some-unstable-option'; + +const options = { + [experimentalName]: { type: 'boolean' }, + [unstableName]: { type: 'boolean' }, +}; + +const { values, tokens } = parseArgs({ options, tokens: true }); + +const experimentalIndex = findTokenIndex(tokens, experimentalName); +const unstableIndex = findTokenIndex(tokens, unstableName); +if (unstableIndex !== -1 && + ((experimentalIndex === -1) || (unstableIndex < experimentalIndex))) { + throw new Error(`'--${experimentalName}' must be specified before '--${unstableName}'`); +} + +console.log(values); + +/* eslint-disable max-len */ +// Try the following: +// node ordered-options.mjs +// node ordered-options.mjs --some-unstable-option +// node ordered-options.mjs --some-unstable-option --enable-experimental-options +// node ordered-options.mjs --enable-experimental-options --some-unstable-option diff --git a/node_modules/@pkgjs/parseargs/examples/simple-hard-coded.js b/node_modules/@pkgjs/parseargs/examples/simple-hard-coded.js new file mode 100644 index 0000000..eff04c2 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/examples/simple-hard-coded.js @@ -0,0 +1,26 @@ +'use strict'; + +// This example is used in the documentation. + +// 1. const { parseArgs } = require('node:util'); // from node +// 2. const { parseArgs } = require('@pkgjs/parseargs'); // from package +const { parseArgs } = require('..'); // in repo + +const args = ['-f', '--bar', 'b']; +const options = { + foo: { + type: 'boolean', + short: 'f' + }, + bar: { + type: 'string' + } +}; +const { + values, + positionals +} = parseArgs({ args, options }); +console.log(values, positionals); + +// Try the following: +// node simple-hard-coded.js diff --git a/node_modules/@pkgjs/parseargs/index.js b/node_modules/@pkgjs/parseargs/index.js new file mode 100644 index 0000000..b1004c7 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/index.js @@ -0,0 +1,396 @@ +'use strict'; + +const { + ArrayPrototypeForEach, + ArrayPrototypeIncludes, + ArrayPrototypeMap, + ArrayPrototypePush, + ArrayPrototypePushApply, + ArrayPrototypeShift, + ArrayPrototypeSlice, + ArrayPrototypeUnshiftApply, + ObjectEntries, + ObjectPrototypeHasOwnProperty: ObjectHasOwn, + StringPrototypeCharAt, + StringPrototypeIndexOf, + StringPrototypeSlice, + StringPrototypeStartsWith, +} = require('./internal/primordials'); + +const { + validateArray, + validateBoolean, + validateBooleanArray, + validateObject, + validateString, + validateStringArray, + validateUnion, +} = require('./internal/validators'); + +const { + kEmptyObject, +} = require('./internal/util'); + +const { + findLongOptionForShort, + isLoneLongOption, + isLoneShortOption, + isLongOptionAndValue, + isOptionValue, + isOptionLikeValue, + isShortOptionAndValue, + isShortOptionGroup, + useDefaultValueOption, + objectGetOwn, + optionsGetOwn, +} = require('./utils'); + +const { + codes: { + ERR_INVALID_ARG_VALUE, + ERR_PARSE_ARGS_INVALID_OPTION_VALUE, + ERR_PARSE_ARGS_UNKNOWN_OPTION, + ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL, + }, +} = require('./internal/errors'); + +function getMainArgs() { + // Work out where to slice process.argv for user supplied arguments. + + // Check node options for scenarios where user CLI args follow executable. + const execArgv = process.execArgv; + if (ArrayPrototypeIncludes(execArgv, '-e') || + ArrayPrototypeIncludes(execArgv, '--eval') || + ArrayPrototypeIncludes(execArgv, '-p') || + ArrayPrototypeIncludes(execArgv, '--print')) { + return ArrayPrototypeSlice(process.argv, 1); + } + + // Normally first two arguments are executable and script, then CLI arguments + return ArrayPrototypeSlice(process.argv, 2); +} + +/** + * In strict mode, throw for possible usage errors like --foo --bar + * + * @param {object} token - from tokens as available from parseArgs + */ +function checkOptionLikeValue(token) { + if (!token.inlineValue && isOptionLikeValue(token.value)) { + // Only show short example if user used short option. + const example = StringPrototypeStartsWith(token.rawName, '--') ? + `'${token.rawName}=-XYZ'` : + `'--${token.name}=-XYZ' or '${token.rawName}-XYZ'`; + const errorMessage = `Option '${token.rawName}' argument is ambiguous. +Did you forget to specify the option argument for '${token.rawName}'? +To specify an option argument starting with a dash use ${example}.`; + throw new ERR_PARSE_ARGS_INVALID_OPTION_VALUE(errorMessage); + } +} + +/** + * In strict mode, throw for usage errors. + * + * @param {object} config - from config passed to parseArgs + * @param {object} token - from tokens as available from parseArgs + */ +function checkOptionUsage(config, token) { + if (!ObjectHasOwn(config.options, token.name)) { + throw new ERR_PARSE_ARGS_UNKNOWN_OPTION( + token.rawName, config.allowPositionals); + } + + const short = optionsGetOwn(config.options, token.name, 'short'); + const shortAndLong = `${short ? `-${short}, ` : ''}--${token.name}`; + const type = optionsGetOwn(config.options, token.name, 'type'); + if (type === 'string' && typeof token.value !== 'string') { + throw new ERR_PARSE_ARGS_INVALID_OPTION_VALUE(`Option '${shortAndLong} ' argument missing`); + } + // (Idiomatic test for undefined||null, expecting undefined.) + if (type === 'boolean' && token.value != null) { + throw new ERR_PARSE_ARGS_INVALID_OPTION_VALUE(`Option '${shortAndLong}' does not take an argument`); + } +} + + +/** + * Store the option value in `values`. + * + * @param {string} longOption - long option name e.g. 'foo' + * @param {string|undefined} optionValue - value from user args + * @param {object} options - option configs, from parseArgs({ options }) + * @param {object} values - option values returned in `values` by parseArgs + */ +function storeOption(longOption, optionValue, options, values) { + if (longOption === '__proto__') { + return; // No. Just no. + } + + // We store based on the option value rather than option type, + // preserving the users intent for author to deal with. + const newValue = optionValue ?? true; + if (optionsGetOwn(options, longOption, 'multiple')) { + // Always store value in array, including for boolean. + // values[longOption] starts out not present, + // first value is added as new array [newValue], + // subsequent values are pushed to existing array. + // (note: values has null prototype, so simpler usage) + if (values[longOption]) { + ArrayPrototypePush(values[longOption], newValue); + } else { + values[longOption] = [newValue]; + } + } else { + values[longOption] = newValue; + } +} + +/** + * Store the default option value in `values`. + * + * @param {string} longOption - long option name e.g. 'foo' + * @param {string + * | boolean + * | string[] + * | boolean[]} optionValue - default value from option config + * @param {object} values - option values returned in `values` by parseArgs + */ +function storeDefaultOption(longOption, optionValue, values) { + if (longOption === '__proto__') { + return; // No. Just no. + } + + values[longOption] = optionValue; +} + +/** + * Process args and turn into identified tokens: + * - option (along with value, if any) + * - positional + * - option-terminator + * + * @param {string[]} args - from parseArgs({ args }) or mainArgs + * @param {object} options - option configs, from parseArgs({ options }) + */ +function argsToTokens(args, options) { + const tokens = []; + let index = -1; + let groupCount = 0; + + const remainingArgs = ArrayPrototypeSlice(args); + while (remainingArgs.length > 0) { + const arg = ArrayPrototypeShift(remainingArgs); + const nextArg = remainingArgs[0]; + if (groupCount > 0) + groupCount--; + else + index++; + + // Check if `arg` is an options terminator. + // Guideline 10 in https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html + if (arg === '--') { + // Everything after a bare '--' is considered a positional argument. + ArrayPrototypePush(tokens, { kind: 'option-terminator', index }); + ArrayPrototypePushApply( + tokens, ArrayPrototypeMap(remainingArgs, (arg) => { + return { kind: 'positional', index: ++index, value: arg }; + }) + ); + break; // Finished processing args, leave while loop. + } + + if (isLoneShortOption(arg)) { + // e.g. '-f' + const shortOption = StringPrototypeCharAt(arg, 1); + const longOption = findLongOptionForShort(shortOption, options); + let value; + let inlineValue; + if (optionsGetOwn(options, longOption, 'type') === 'string' && + isOptionValue(nextArg)) { + // e.g. '-f', 'bar' + value = ArrayPrototypeShift(remainingArgs); + inlineValue = false; + } + ArrayPrototypePush( + tokens, + { kind: 'option', name: longOption, rawName: arg, + index, value, inlineValue }); + if (value != null) ++index; + continue; + } + + if (isShortOptionGroup(arg, options)) { + // Expand -fXzy to -f -X -z -y + const expanded = []; + for (let index = 1; index < arg.length; index++) { + const shortOption = StringPrototypeCharAt(arg, index); + const longOption = findLongOptionForShort(shortOption, options); + if (optionsGetOwn(options, longOption, 'type') !== 'string' || + index === arg.length - 1) { + // Boolean option, or last short in group. Well formed. + ArrayPrototypePush(expanded, `-${shortOption}`); + } else { + // String option in middle. Yuck. + // Expand -abfFILE to -a -b -fFILE + ArrayPrototypePush(expanded, `-${StringPrototypeSlice(arg, index)}`); + break; // finished short group + } + } + ArrayPrototypeUnshiftApply(remainingArgs, expanded); + groupCount = expanded.length; + continue; + } + + if (isShortOptionAndValue(arg, options)) { + // e.g. -fFILE + const shortOption = StringPrototypeCharAt(arg, 1); + const longOption = findLongOptionForShort(shortOption, options); + const value = StringPrototypeSlice(arg, 2); + ArrayPrototypePush( + tokens, + { kind: 'option', name: longOption, rawName: `-${shortOption}`, + index, value, inlineValue: true }); + continue; + } + + if (isLoneLongOption(arg)) { + // e.g. '--foo' + const longOption = StringPrototypeSlice(arg, 2); + let value; + let inlineValue; + if (optionsGetOwn(options, longOption, 'type') === 'string' && + isOptionValue(nextArg)) { + // e.g. '--foo', 'bar' + value = ArrayPrototypeShift(remainingArgs); + inlineValue = false; + } + ArrayPrototypePush( + tokens, + { kind: 'option', name: longOption, rawName: arg, + index, value, inlineValue }); + if (value != null) ++index; + continue; + } + + if (isLongOptionAndValue(arg)) { + // e.g. --foo=bar + const equalIndex = StringPrototypeIndexOf(arg, '='); + const longOption = StringPrototypeSlice(arg, 2, equalIndex); + const value = StringPrototypeSlice(arg, equalIndex + 1); + ArrayPrototypePush( + tokens, + { kind: 'option', name: longOption, rawName: `--${longOption}`, + index, value, inlineValue: true }); + continue; + } + + ArrayPrototypePush(tokens, { kind: 'positional', index, value: arg }); + } + + return tokens; +} + +const parseArgs = (config = kEmptyObject) => { + const args = objectGetOwn(config, 'args') ?? getMainArgs(); + const strict = objectGetOwn(config, 'strict') ?? true; + const allowPositionals = objectGetOwn(config, 'allowPositionals') ?? !strict; + const returnTokens = objectGetOwn(config, 'tokens') ?? false; + const options = objectGetOwn(config, 'options') ?? { __proto__: null }; + // Bundle these up for passing to strict-mode checks. + const parseConfig = { args, strict, options, allowPositionals }; + + // Validate input configuration. + validateArray(args, 'args'); + validateBoolean(strict, 'strict'); + validateBoolean(allowPositionals, 'allowPositionals'); + validateBoolean(returnTokens, 'tokens'); + validateObject(options, 'options'); + ArrayPrototypeForEach( + ObjectEntries(options), + ({ 0: longOption, 1: optionConfig }) => { + validateObject(optionConfig, `options.${longOption}`); + + // type is required + const optionType = objectGetOwn(optionConfig, 'type'); + validateUnion(optionType, `options.${longOption}.type`, ['string', 'boolean']); + + if (ObjectHasOwn(optionConfig, 'short')) { + const shortOption = optionConfig.short; + validateString(shortOption, `options.${longOption}.short`); + if (shortOption.length !== 1) { + throw new ERR_INVALID_ARG_VALUE( + `options.${longOption}.short`, + shortOption, + 'must be a single character' + ); + } + } + + const multipleOption = objectGetOwn(optionConfig, 'multiple'); + if (ObjectHasOwn(optionConfig, 'multiple')) { + validateBoolean(multipleOption, `options.${longOption}.multiple`); + } + + const defaultValue = objectGetOwn(optionConfig, 'default'); + if (defaultValue !== undefined) { + let validator; + switch (optionType) { + case 'string': + validator = multipleOption ? validateStringArray : validateString; + break; + + case 'boolean': + validator = multipleOption ? validateBooleanArray : validateBoolean; + break; + } + validator(defaultValue, `options.${longOption}.default`); + } + } + ); + + // Phase 1: identify tokens + const tokens = argsToTokens(args, options); + + // Phase 2: process tokens into parsed option values and positionals + const result = { + values: { __proto__: null }, + positionals: [], + }; + if (returnTokens) { + result.tokens = tokens; + } + ArrayPrototypeForEach(tokens, (token) => { + if (token.kind === 'option') { + if (strict) { + checkOptionUsage(parseConfig, token); + checkOptionLikeValue(token); + } + storeOption(token.name, token.value, options, result.values); + } else if (token.kind === 'positional') { + if (!allowPositionals) { + throw new ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL(token.value); + } + ArrayPrototypePush(result.positionals, token.value); + } + }); + + // Phase 3: fill in default values for missing args + ArrayPrototypeForEach(ObjectEntries(options), ({ 0: longOption, + 1: optionConfig }) => { + const mustSetDefault = useDefaultValueOption(longOption, + optionConfig, + result.values); + if (mustSetDefault) { + storeDefaultOption(longOption, + objectGetOwn(optionConfig, 'default'), + result.values); + } + }); + + + return result; +}; + +module.exports = { + parseArgs, +}; diff --git a/node_modules/@pkgjs/parseargs/internal/errors.js b/node_modules/@pkgjs/parseargs/internal/errors.js new file mode 100644 index 0000000..e1b237b --- /dev/null +++ b/node_modules/@pkgjs/parseargs/internal/errors.js @@ -0,0 +1,47 @@ +'use strict'; + +class ERR_INVALID_ARG_TYPE extends TypeError { + constructor(name, expected, actual) { + super(`${name} must be ${expected} got ${actual}`); + this.code = 'ERR_INVALID_ARG_TYPE'; + } +} + +class ERR_INVALID_ARG_VALUE extends TypeError { + constructor(arg1, arg2, expected) { + super(`The property ${arg1} ${expected}. Received '${arg2}'`); + this.code = 'ERR_INVALID_ARG_VALUE'; + } +} + +class ERR_PARSE_ARGS_INVALID_OPTION_VALUE extends Error { + constructor(message) { + super(message); + this.code = 'ERR_PARSE_ARGS_INVALID_OPTION_VALUE'; + } +} + +class ERR_PARSE_ARGS_UNKNOWN_OPTION extends Error { + constructor(option, allowPositionals) { + const suggestDashDash = allowPositionals ? `. To specify a positional argument starting with a '-', place it at the end of the command after '--', as in '-- ${JSON.stringify(option)}` : ''; + super(`Unknown option '${option}'${suggestDashDash}`); + this.code = 'ERR_PARSE_ARGS_UNKNOWN_OPTION'; + } +} + +class ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL extends Error { + constructor(positional) { + super(`Unexpected argument '${positional}'. This command does not take positional arguments`); + this.code = 'ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL'; + } +} + +module.exports = { + codes: { + ERR_INVALID_ARG_TYPE, + ERR_INVALID_ARG_VALUE, + ERR_PARSE_ARGS_INVALID_OPTION_VALUE, + ERR_PARSE_ARGS_UNKNOWN_OPTION, + ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL, + } +}; diff --git a/node_modules/@pkgjs/parseargs/internal/primordials.js b/node_modules/@pkgjs/parseargs/internal/primordials.js new file mode 100644 index 0000000..63e23ab --- /dev/null +++ b/node_modules/@pkgjs/parseargs/internal/primordials.js @@ -0,0 +1,393 @@ +/* +This file is copied from https://github.com/nodejs/node/blob/v14.19.3/lib/internal/per_context/primordials.js +under the following license: + +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +*/ + +'use strict'; + +/* eslint-disable node-core/prefer-primordials */ + +// This file subclasses and stores the JS builtins that come from the VM +// so that Node.js's builtin modules do not need to later look these up from +// the global proxy, which can be mutated by users. + +// Use of primordials have sometimes a dramatic impact on performance, please +// benchmark all changes made in performance-sensitive areas of the codebase. +// See: https://github.com/nodejs/node/pull/38248 + +const primordials = {}; + +const { + defineProperty: ReflectDefineProperty, + getOwnPropertyDescriptor: ReflectGetOwnPropertyDescriptor, + ownKeys: ReflectOwnKeys, +} = Reflect; + +// `uncurryThis` is equivalent to `func => Function.prototype.call.bind(func)`. +// It is using `bind.bind(call)` to avoid using `Function.prototype.bind` +// and `Function.prototype.call` after it may have been mutated by users. +const { apply, bind, call } = Function.prototype; +const uncurryThis = bind.bind(call); +primordials.uncurryThis = uncurryThis; + +// `applyBind` is equivalent to `func => Function.prototype.apply.bind(func)`. +// It is using `bind.bind(apply)` to avoid using `Function.prototype.bind` +// and `Function.prototype.apply` after it may have been mutated by users. +const applyBind = bind.bind(apply); +primordials.applyBind = applyBind; + +// Methods that accept a variable number of arguments, and thus it's useful to +// also create `${prefix}${key}Apply`, which uses `Function.prototype.apply`, +// instead of `Function.prototype.call`, and thus doesn't require iterator +// destructuring. +const varargsMethods = [ + // 'ArrayPrototypeConcat' is omitted, because it performs the spread + // on its own for arrays and array-likes with a truthy + // @@isConcatSpreadable symbol property. + 'ArrayOf', + 'ArrayPrototypePush', + 'ArrayPrototypeUnshift', + // 'FunctionPrototypeCall' is omitted, since there's 'ReflectApply' + // and 'FunctionPrototypeApply'. + 'MathHypot', + 'MathMax', + 'MathMin', + 'StringPrototypeConcat', + 'TypedArrayOf', +]; + +function getNewKey(key) { + return typeof key === 'symbol' ? + `Symbol${key.description[7].toUpperCase()}${key.description.slice(8)}` : + `${key[0].toUpperCase()}${key.slice(1)}`; +} + +function copyAccessor(dest, prefix, key, { enumerable, get, set }) { + ReflectDefineProperty(dest, `${prefix}Get${key}`, { + value: uncurryThis(get), + enumerable + }); + if (set !== undefined) { + ReflectDefineProperty(dest, `${prefix}Set${key}`, { + value: uncurryThis(set), + enumerable + }); + } +} + +function copyPropsRenamed(src, dest, prefix) { + for (const key of ReflectOwnKeys(src)) { + const newKey = getNewKey(key); + const desc = ReflectGetOwnPropertyDescriptor(src, key); + if ('get' in desc) { + copyAccessor(dest, prefix, newKey, desc); + } else { + const name = `${prefix}${newKey}`; + ReflectDefineProperty(dest, name, desc); + if (varargsMethods.includes(name)) { + ReflectDefineProperty(dest, `${name}Apply`, { + // `src` is bound as the `this` so that the static `this` points + // to the object it was defined on, + // e.g.: `ArrayOfApply` gets a `this` of `Array`: + value: applyBind(desc.value, src), + }); + } + } + } +} + +function copyPropsRenamedBound(src, dest, prefix) { + for (const key of ReflectOwnKeys(src)) { + const newKey = getNewKey(key); + const desc = ReflectGetOwnPropertyDescriptor(src, key); + if ('get' in desc) { + copyAccessor(dest, prefix, newKey, desc); + } else { + const { value } = desc; + if (typeof value === 'function') { + desc.value = value.bind(src); + } + + const name = `${prefix}${newKey}`; + ReflectDefineProperty(dest, name, desc); + if (varargsMethods.includes(name)) { + ReflectDefineProperty(dest, `${name}Apply`, { + value: applyBind(value, src), + }); + } + } + } +} + +function copyPrototype(src, dest, prefix) { + for (const key of ReflectOwnKeys(src)) { + const newKey = getNewKey(key); + const desc = ReflectGetOwnPropertyDescriptor(src, key); + if ('get' in desc) { + copyAccessor(dest, prefix, newKey, desc); + } else { + const { value } = desc; + if (typeof value === 'function') { + desc.value = uncurryThis(value); + } + + const name = `${prefix}${newKey}`; + ReflectDefineProperty(dest, name, desc); + if (varargsMethods.includes(name)) { + ReflectDefineProperty(dest, `${name}Apply`, { + value: applyBind(value), + }); + } + } + } +} + +// Create copies of configurable value properties of the global object +[ + 'Proxy', + 'globalThis', +].forEach((name) => { + // eslint-disable-next-line no-restricted-globals + primordials[name] = globalThis[name]; +}); + +// Create copies of URI handling functions +[ + decodeURI, + decodeURIComponent, + encodeURI, + encodeURIComponent, +].forEach((fn) => { + primordials[fn.name] = fn; +}); + +// Create copies of the namespace objects +[ + 'JSON', + 'Math', + 'Proxy', + 'Reflect', +].forEach((name) => { + // eslint-disable-next-line no-restricted-globals + copyPropsRenamed(global[name], primordials, name); +}); + +// Create copies of intrinsic objects +[ + 'Array', + 'ArrayBuffer', + 'BigInt', + 'BigInt64Array', + 'BigUint64Array', + 'Boolean', + 'DataView', + 'Date', + 'Error', + 'EvalError', + 'Float32Array', + 'Float64Array', + 'Function', + 'Int16Array', + 'Int32Array', + 'Int8Array', + 'Map', + 'Number', + 'Object', + 'RangeError', + 'ReferenceError', + 'RegExp', + 'Set', + 'String', + 'Symbol', + 'SyntaxError', + 'TypeError', + 'URIError', + 'Uint16Array', + 'Uint32Array', + 'Uint8Array', + 'Uint8ClampedArray', + 'WeakMap', + 'WeakSet', +].forEach((name) => { + // eslint-disable-next-line no-restricted-globals + const original = global[name]; + primordials[name] = original; + copyPropsRenamed(original, primordials, name); + copyPrototype(original.prototype, primordials, `${name}Prototype`); +}); + +// Create copies of intrinsic objects that require a valid `this` to call +// static methods. +// Refs: https://www.ecma-international.org/ecma-262/#sec-promise.all +[ + 'Promise', +].forEach((name) => { + // eslint-disable-next-line no-restricted-globals + const original = global[name]; + primordials[name] = original; + copyPropsRenamedBound(original, primordials, name); + copyPrototype(original.prototype, primordials, `${name}Prototype`); +}); + +// Create copies of abstract intrinsic objects that are not directly exposed +// on the global object. +// Refs: https://tc39.es/ecma262/#sec-%typedarray%-intrinsic-object +[ + { name: 'TypedArray', original: Reflect.getPrototypeOf(Uint8Array) }, + { name: 'ArrayIterator', original: { + prototype: Reflect.getPrototypeOf(Array.prototype[Symbol.iterator]()), + } }, + { name: 'StringIterator', original: { + prototype: Reflect.getPrototypeOf(String.prototype[Symbol.iterator]()), + } }, +].forEach(({ name, original }) => { + primordials[name] = original; + // The static %TypedArray% methods require a valid `this`, but can't be bound, + // as they need a subclass constructor as the receiver: + copyPrototype(original, primordials, name); + copyPrototype(original.prototype, primordials, `${name}Prototype`); +}); + +/* eslint-enable node-core/prefer-primordials */ + +const { + ArrayPrototypeForEach, + FunctionPrototypeCall, + Map, + ObjectFreeze, + ObjectSetPrototypeOf, + Set, + SymbolIterator, + WeakMap, + WeakSet, +} = primordials; + +// Because these functions are used by `makeSafe`, which is exposed +// on the `primordials` object, it's important to use const references +// to the primordials that they use: +const createSafeIterator = (factory, next) => { + class SafeIterator { + constructor(iterable) { + this._iterator = factory(iterable); + } + next() { + return next(this._iterator); + } + [SymbolIterator]() { + return this; + } + } + ObjectSetPrototypeOf(SafeIterator.prototype, null); + ObjectFreeze(SafeIterator.prototype); + ObjectFreeze(SafeIterator); + return SafeIterator; +}; + +primordials.SafeArrayIterator = createSafeIterator( + primordials.ArrayPrototypeSymbolIterator, + primordials.ArrayIteratorPrototypeNext +); +primordials.SafeStringIterator = createSafeIterator( + primordials.StringPrototypeSymbolIterator, + primordials.StringIteratorPrototypeNext +); + +const copyProps = (src, dest) => { + ArrayPrototypeForEach(ReflectOwnKeys(src), (key) => { + if (!ReflectGetOwnPropertyDescriptor(dest, key)) { + ReflectDefineProperty( + dest, + key, + ReflectGetOwnPropertyDescriptor(src, key)); + } + }); +}; + +const makeSafe = (unsafe, safe) => { + if (SymbolIterator in unsafe.prototype) { + const dummy = new unsafe(); + let next; // We can reuse the same `next` method. + + ArrayPrototypeForEach(ReflectOwnKeys(unsafe.prototype), (key) => { + if (!ReflectGetOwnPropertyDescriptor(safe.prototype, key)) { + const desc = ReflectGetOwnPropertyDescriptor(unsafe.prototype, key); + if ( + typeof desc.value === 'function' && + desc.value.length === 0 && + SymbolIterator in (FunctionPrototypeCall(desc.value, dummy) ?? {}) + ) { + const createIterator = uncurryThis(desc.value); + next = next ?? uncurryThis(createIterator(dummy).next); + const SafeIterator = createSafeIterator(createIterator, next); + desc.value = function() { + return new SafeIterator(this); + }; + } + ReflectDefineProperty(safe.prototype, key, desc); + } + }); + } else { + copyProps(unsafe.prototype, safe.prototype); + } + copyProps(unsafe, safe); + + ObjectSetPrototypeOf(safe.prototype, null); + ObjectFreeze(safe.prototype); + ObjectFreeze(safe); + return safe; +}; +primordials.makeSafe = makeSafe; + +// Subclass the constructors because we need to use their prototype +// methods later. +// Defining the `constructor` is necessary here to avoid the default +// constructor which uses the user-mutable `%ArrayIteratorPrototype%.next`. +primordials.SafeMap = makeSafe( + Map, + class SafeMap extends Map { + constructor(i) { super(i); } // eslint-disable-line no-useless-constructor + } +); +primordials.SafeWeakMap = makeSafe( + WeakMap, + class SafeWeakMap extends WeakMap { + constructor(i) { super(i); } // eslint-disable-line no-useless-constructor + } +); +primordials.SafeSet = makeSafe( + Set, + class SafeSet extends Set { + constructor(i) { super(i); } // eslint-disable-line no-useless-constructor + } +); +primordials.SafeWeakSet = makeSafe( + WeakSet, + class SafeWeakSet extends WeakSet { + constructor(i) { super(i); } // eslint-disable-line no-useless-constructor + } +); + +ObjectSetPrototypeOf(primordials, null); +ObjectFreeze(primordials); + +module.exports = primordials; diff --git a/node_modules/@pkgjs/parseargs/internal/util.js b/node_modules/@pkgjs/parseargs/internal/util.js new file mode 100644 index 0000000..b9b8fe5 --- /dev/null +++ b/node_modules/@pkgjs/parseargs/internal/util.js @@ -0,0 +1,14 @@ +'use strict'; + +// This is a placeholder for util.js in node.js land. + +const { + ObjectCreate, + ObjectFreeze, +} = require('./primordials'); + +const kEmptyObject = ObjectFreeze(ObjectCreate(null)); + +module.exports = { + kEmptyObject, +}; diff --git a/node_modules/@pkgjs/parseargs/internal/validators.js b/node_modules/@pkgjs/parseargs/internal/validators.js new file mode 100644 index 0000000..b5ac4fb --- /dev/null +++ b/node_modules/@pkgjs/parseargs/internal/validators.js @@ -0,0 +1,89 @@ +'use strict'; + +// This file is a proxy of the original file located at: +// https://github.com/nodejs/node/blob/main/lib/internal/validators.js +// Every addition or modification to this file must be evaluated +// during the PR review. + +const { + ArrayIsArray, + ArrayPrototypeIncludes, + ArrayPrototypeJoin, +} = require('./primordials'); + +const { + codes: { + ERR_INVALID_ARG_TYPE + } +} = require('./errors'); + +function validateString(value, name) { + if (typeof value !== 'string') { + throw new ERR_INVALID_ARG_TYPE(name, 'String', value); + } +} + +function validateUnion(value, name, union) { + if (!ArrayPrototypeIncludes(union, value)) { + throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value); + } +} + +function validateBoolean(value, name) { + if (typeof value !== 'boolean') { + throw new ERR_INVALID_ARG_TYPE(name, 'Boolean', value); + } +} + +function validateArray(value, name) { + if (!ArrayIsArray(value)) { + throw new ERR_INVALID_ARG_TYPE(name, 'Array', value); + } +} + +function validateStringArray(value, name) { + validateArray(value, name); + for (let i = 0; i < value.length; i++) { + validateString(value[i], `${name}[${i}]`); + } +} + +function validateBooleanArray(value, name) { + validateArray(value, name); + for (let i = 0; i < value.length; i++) { + validateBoolean(value[i], `${name}[${i}]`); + } +} + +/** + * @param {unknown} value + * @param {string} name + * @param {{ + * allowArray?: boolean, + * allowFunction?: boolean, + * nullable?: boolean + * }} [options] + */ +function validateObject(value, name, options) { + const useDefaultOptions = options == null; + const allowArray = useDefaultOptions ? false : options.allowArray; + const allowFunction = useDefaultOptions ? false : options.allowFunction; + const nullable = useDefaultOptions ? false : options.nullable; + if ((!nullable && value === null) || + (!allowArray && ArrayIsArray(value)) || + (typeof value !== 'object' && ( + !allowFunction || typeof value !== 'function' + ))) { + throw new ERR_INVALID_ARG_TYPE(name, 'Object', value); + } +} + +module.exports = { + validateArray, + validateObject, + validateString, + validateStringArray, + validateUnion, + validateBoolean, + validateBooleanArray, +}; diff --git a/node_modules/@pkgjs/parseargs/package.json b/node_modules/@pkgjs/parseargs/package.json new file mode 100644 index 0000000..0bcc05c --- /dev/null +++ b/node_modules/@pkgjs/parseargs/package.json @@ -0,0 +1,36 @@ +{ + "name": "@pkgjs/parseargs", + "version": "0.11.0", + "description": "Polyfill of future proposal for `util.parseArgs()`", + "engines": { + "node": ">=14" + }, + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "scripts": { + "coverage": "c8 --check-coverage tape 'test/*.js'", + "test": "c8 tape 'test/*.js'", + "posttest": "eslint .", + "fix": "npm run posttest -- --fix" + }, + "repository": { + "type": "git", + "url": "git@github.com:pkgjs/parseargs.git" + }, + "keywords": [], + "author": "", + "license": "MIT", + "bugs": { + "url": "https://github.com/pkgjs/parseargs/issues" + }, + "homepage": "https://github.com/pkgjs/parseargs#readme", + "devDependencies": { + "c8": "^7.10.0", + "eslint": "^8.2.0", + "eslint-plugin-node-core": "iansu/eslint-plugin-node-core", + "tape": "^5.2.2" + } +} diff --git a/node_modules/@pkgjs/parseargs/utils.js b/node_modules/@pkgjs/parseargs/utils.js new file mode 100644 index 0000000..d7f420a --- /dev/null +++ b/node_modules/@pkgjs/parseargs/utils.js @@ -0,0 +1,198 @@ +'use strict'; + +const { + ArrayPrototypeFind, + ObjectEntries, + ObjectPrototypeHasOwnProperty: ObjectHasOwn, + StringPrototypeCharAt, + StringPrototypeIncludes, + StringPrototypeStartsWith, +} = require('./internal/primordials'); + +const { + validateObject, +} = require('./internal/validators'); + +// These are internal utilities to make the parsing logic easier to read, and +// add lots of detail for the curious. They are in a separate file to allow +// unit testing, although that is not essential (this could be rolled into +// main file and just tested implicitly via API). +// +// These routines are for internal use, not for export to client. + +/** + * Return the named property, but only if it is an own property. + */ +function objectGetOwn(obj, prop) { + if (ObjectHasOwn(obj, prop)) + return obj[prop]; +} + +/** + * Return the named options property, but only if it is an own property. + */ +function optionsGetOwn(options, longOption, prop) { + if (ObjectHasOwn(options, longOption)) + return objectGetOwn(options[longOption], prop); +} + +/** + * Determines if the argument may be used as an option value. + * @example + * isOptionValue('V') // returns true + * isOptionValue('-v') // returns true (greedy) + * isOptionValue('--foo') // returns true (greedy) + * isOptionValue(undefined) // returns false + */ +function isOptionValue(value) { + if (value == null) return false; + + // Open Group Utility Conventions are that an option-argument + // is the argument after the option, and may start with a dash. + return true; // greedy! +} + +/** + * Detect whether there is possible confusion and user may have omitted + * the option argument, like `--port --verbose` when `port` of type:string. + * In strict mode we throw errors if value is option-like. + */ +function isOptionLikeValue(value) { + if (value == null) return false; + + return value.length > 1 && StringPrototypeCharAt(value, 0) === '-'; +} + +/** + * Determines if `arg` is just a short option. + * @example '-f' + */ +function isLoneShortOption(arg) { + return arg.length === 2 && + StringPrototypeCharAt(arg, 0) === '-' && + StringPrototypeCharAt(arg, 1) !== '-'; +} + +/** + * Determines if `arg` is a lone long option. + * @example + * isLoneLongOption('a') // returns false + * isLoneLongOption('-a') // returns false + * isLoneLongOption('--foo') // returns true + * isLoneLongOption('--foo=bar') // returns false + */ +function isLoneLongOption(arg) { + return arg.length > 2 && + StringPrototypeStartsWith(arg, '--') && + !StringPrototypeIncludes(arg, '=', 3); +} + +/** + * Determines if `arg` is a long option and value in the same argument. + * @example + * isLongOptionAndValue('--foo') // returns false + * isLongOptionAndValue('--foo=bar') // returns true + */ +function isLongOptionAndValue(arg) { + return arg.length > 2 && + StringPrototypeStartsWith(arg, '--') && + StringPrototypeIncludes(arg, '=', 3); +} + +/** + * Determines if `arg` is a short option group. + * + * See Guideline 5 of the [Open Group Utility Conventions](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html). + * One or more options without option-arguments, followed by at most one + * option that takes an option-argument, should be accepted when grouped + * behind one '-' delimiter. + * @example + * isShortOptionGroup('-a', {}) // returns false + * isShortOptionGroup('-ab', {}) // returns true + * // -fb is an option and a value, not a short option group + * isShortOptionGroup('-fb', { + * options: { f: { type: 'string' } } + * }) // returns false + * isShortOptionGroup('-bf', { + * options: { f: { type: 'string' } } + * }) // returns true + * // -bfb is an edge case, return true and caller sorts it out + * isShortOptionGroup('-bfb', { + * options: { f: { type: 'string' } } + * }) // returns true + */ +function isShortOptionGroup(arg, options) { + if (arg.length <= 2) return false; + if (StringPrototypeCharAt(arg, 0) !== '-') return false; + if (StringPrototypeCharAt(arg, 1) === '-') return false; + + const firstShort = StringPrototypeCharAt(arg, 1); + const longOption = findLongOptionForShort(firstShort, options); + return optionsGetOwn(options, longOption, 'type') !== 'string'; +} + +/** + * Determine if arg is a short string option followed by its value. + * @example + * isShortOptionAndValue('-a', {}); // returns false + * isShortOptionAndValue('-ab', {}); // returns false + * isShortOptionAndValue('-fFILE', { + * options: { foo: { short: 'f', type: 'string' }} + * }) // returns true + */ +function isShortOptionAndValue(arg, options) { + validateObject(options, 'options'); + + if (arg.length <= 2) return false; + if (StringPrototypeCharAt(arg, 0) !== '-') return false; + if (StringPrototypeCharAt(arg, 1) === '-') return false; + + const shortOption = StringPrototypeCharAt(arg, 1); + const longOption = findLongOptionForShort(shortOption, options); + return optionsGetOwn(options, longOption, 'type') === 'string'; +} + +/** + * Find the long option associated with a short option. Looks for a configured + * `short` and returns the short option itself if a long option is not found. + * @example + * findLongOptionForShort('a', {}) // returns 'a' + * findLongOptionForShort('b', { + * options: { bar: { short: 'b' } } + * }) // returns 'bar' + */ +function findLongOptionForShort(shortOption, options) { + validateObject(options, 'options'); + const longOptionEntry = ArrayPrototypeFind( + ObjectEntries(options), + ({ 1: optionConfig }) => objectGetOwn(optionConfig, 'short') === shortOption + ); + return longOptionEntry?.[0] ?? shortOption; +} + +/** + * Check if the given option includes a default value + * and that option has not been set by the input args. + * + * @param {string} longOption - long option name e.g. 'foo' + * @param {object} optionConfig - the option configuration properties + * @param {object} values - option values returned in `values` by parseArgs + */ +function useDefaultValueOption(longOption, optionConfig, values) { + return objectGetOwn(optionConfig, 'default') !== undefined && + values[longOption] === undefined; +} + +module.exports = { + findLongOptionForShort, + isLoneLongOption, + isLoneShortOption, + isLongOptionAndValue, + isOptionValue, + isOptionLikeValue, + isShortOptionAndValue, + isShortOptionGroup, + useDefaultValueOption, + objectGetOwn, + optionsGetOwn, +}; diff --git a/node_modules/@rollup/plugin-commonjs/LICENSE b/node_modules/@rollup/plugin-commonjs/LICENSE new file mode 100644 index 0000000..5e46702 --- /dev/null +++ b/node_modules/@rollup/plugin-commonjs/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@rollup/plugin-commonjs/README.md b/node_modules/@rollup/plugin-commonjs/README.md new file mode 100644 index 0000000..3024b1e --- /dev/null +++ b/node_modules/@rollup/plugin-commonjs/README.md @@ -0,0 +1,451 @@ +[npm]: https://img.shields.io/npm/v/@rollup/plugin-commonjs +[npm-url]: https://www.npmjs.com/package/@rollup/plugin-commonjs +[size]: https://packagephobia.now.sh/badge?p=@rollup/plugin-commonjs +[size-url]: https://packagephobia.now.sh/result?p=@rollup/plugin-commonjs + +[![npm][npm]][npm-url] +[![size][size]][size-url] +[![libera manifesto](https://img.shields.io/badge/libera-manifesto-lightgrey.svg)](https://liberamanifesto.com) + +# @rollup/plugin-commonjs + +🍣 A Rollup plugin to convert CommonJS modules to ES6, so they can be included in a Rollup bundle + +## Requirements + +This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v14.0.0+) and Rollup v2.68.0+. If you are using [`@rollup/plugin-node-resolve`](https://github.com/rollup/plugins/tree/master/packages/node-resolve), it should be v13.0.6+. + +## Install + +Using npm: + +```bash +npm install @rollup/plugin-commonjs --save-dev +``` + +## Usage + +Create a `rollup.config.js` [configuration file](https://www.rollupjs.org/guide/en/#configuration-files) and import the plugin: + +```js +import commonjs from '@rollup/plugin-commonjs'; + +export default { + input: 'src/index.js', + output: { + dir: 'output', + format: 'cjs' + }, + plugins: [commonjs()] +}; +``` + +Then call `rollup` either via the [CLI](https://www.rollupjs.org/guide/en/#command-line-reference) or the [API](https://www.rollupjs.org/guide/en/#javascript-api). + +When used together with the node-resolve plugin + +## Options + +### `strictRequires` + +Type: `"auto" | boolean | "debug" | string[]`
+Default: `"auto"` + +By default, this plugin will try to hoist `require` statements as imports to the top of each file. While this works well for many code bases and allows for very efficient ESM output, it does not perfectly capture CommonJS semantics as the initialisation order of required modules will be different. The resultant side effects can include log statements being emitted in a different order, and some code that is dependent on the initialisation order of polyfills in require statements may not work. But it is especially problematic when there are circular `require` calls between CommonJS modules as those often rely on the lazy execution of nested `require` calls. + +Setting this option to `true` will wrap all CommonJS files in functions which are executed when they are required for the first time, preserving NodeJS semantics. This is the safest setting and should be used if the generated code does not work correctly with `"auto"`. Note that `strictRequires: true` can have a small impact on the size and performance of generated code, but less so if the code is minified. + +The default value of `"auto"` will only wrap CommonJS files when they are part of a CommonJS dependency cycle, e.g. an index file that is required by some of its dependencies, or if they are only required in a potentially "conditional" way like from within an if-statement or a function. All other CommonJS files are hoisted. This is the recommended setting for most code bases. Note that the detection of conditional requires can be subject to race conditions if there are both conditional and unconditional requires of the same file, which in edge cases may result in inconsistencies between builds. If you think this is a problem for you, you can avoid this by using any value other than `"auto"` or `"debug"`. + +`false` will entirely prevent wrapping and hoist all files. This may still work depending on the nature of cyclic dependencies but will often cause problems. + +You can also provide a [picomatch pattern](https://github.com/micromatch/picomatch), or array of patterns, to only specify a subset of files which should be wrapped in functions for proper `require` semantics. + +`"debug"` works like `"auto"` but after bundling, it will display a warning containing a list of ids that have been wrapped which can be used as picomatch pattern for fine-tuning or to avoid the potential race conditions mentioned for `"auto"`. + +### `dynamicRequireTargets` + +Type: `string | string[]`
+Default: `[]` + +_Note: In previous versions, this option would spin up a rather comprehensive mock environment that was capable of handling modules that manipulate `require.cache`. This is no longer supported. If you rely on this e.g. when using request-promise-native, use version 21 of this plugin._ + +Some modules contain dynamic `require` calls, or require modules that contain circular dependencies, which are not handled well by static imports. +Including those modules as `dynamicRequireTargets` will simulate a CommonJS (NodeJS-like) environment for them with support for dynamic dependencies. It also enables `strictRequires` for those modules, see above. + +_Note: In extreme cases, this feature may result in some paths being rendered as absolute in the final bundle. The plugin tries to avoid exposing paths from the local machine, but if you are `dynamicRequirePaths` with paths that are far away from your project's folder, that may require replacing strings like `"/Users/John/Desktop/foo-project/"` -> `"/"`._ + +Example: + +```js +commonjs({ + dynamicRequireTargets: [ + // include using a glob pattern (either a string or an array of strings) + 'node_modules/logform/*.js', + + // exclude files that are known to not be required dynamically, this allows for better optimizations + '!node_modules/logform/index.js', + '!node_modules/logform/format.js', + '!node_modules/logform/levels.js', + '!node_modules/logform/browser.js' + ] +}); +``` + +### `dynamicRequireRoot` + +Type: `string`
+Default: `process.cwd()` + +To avoid long paths when using the `dynamicRequireTargets` option, you can use this option to specify a directory that is a common parent for all files that use dynamic require statements. Using a directory higher up such as `/` may lead to unnecessarily long paths in the generated code and may expose directory names on your machine like your home directory name. By default it uses the current working directory. + +### `exclude` + +Type: `string | string[]`
+Default: `null` + +A [picomatch pattern](https://github.com/micromatch/picomatch), or array of patterns, which specifies the files in the build the plugin should _ignore_. By default, all files with extensions other than those in `extensions` or `".cjs"` are ignored, but you can exclude additional files. See also the `include` option. + +### `include` + +Type: `string | string[]`
+Default: `null` + +A [picomatch pattern](https://github.com/micromatch/picomatch), or array of patterns, which specifies the files in the build the plugin should operate on. By default, all files with extension `".cjs"` or those in `extensions` are included, but you can narrow this list by only including specific files. These files will be analyzed and transpiled if either the analysis does not find ES module specific statements or `transformMixedEsModules` is `true`. + +### `extensions` + +Type: `string[]`
+Default: `['.js']` + +For extensionless imports, search for extensions other than .js in the order specified. Note that you need to make sure that non-JavaScript files are transpiled by another plugin first. + +### `ignoreGlobal` + +Type: `boolean`
+Default: `false` + +If true, uses of `global` won't be dealt with by this plugin. + +### `sourceMap` + +Type: `boolean`
+Default: `true` + +If false, skips source map generation for CommonJS modules. This will improve performance. + +### `transformMixedEsModules` + +Type: `boolean`
+Default: `false` + +Instructs the plugin whether to enable mixed module transformations. This is useful in scenarios with modules that contain a mix of ES `import` statements and CommonJS `require` expressions. Set to `true` if `require` calls should be transformed to imports in mixed modules, or `false` if the `require` expressions should survive the transformation. The latter can be important if the code contains environment detection, or you are coding for an environment with special treatment for `require` calls such as [ElectronJS](https://www.electronjs.org/). See also the "ignore" option. + +### `ignore` + +Type: `string[] | ((id: string) => boolean)`
+Default: `[]` + +Sometimes you have to leave require statements unconverted. Pass an array containing the IDs or an `id => boolean` function. + +### `ignoreTryCatch` + +Type: `boolean | 'remove' | string[] | ((id: string) => boolean)`
+Default: `true` + +In most cases, where `require` calls to external dependencies are inside a `try-catch` clause, they should be left unconverted as it requires an optional dependency that may or may not be installed beside the rolled up package. +Due to the conversion of `require` to a static `import` - the call is hoisted to the top of the file, outside of the `try-catch` clause. + +- `true`: All external `require` calls inside a `try` will be left unconverted. +- `false`: All external `require` calls inside a `try` will be converted as if the `try-catch` clause is not there. +- `remove`: Remove all external `require` calls from inside any `try` block. +- `string[]`: Pass an array containing the IDs to left unconverted. +- `((id: string) => boolean|'remove')`: Pass a function that control individual IDs. + +Note that non-external requires will not be ignored by this option. + +### `ignoreDynamicRequires` + +Type: `boolean` +Default: false + +Some `require` calls cannot be resolved statically to be translated to imports, e.g. + +```js +function wrappedRequire(target) { + return require(target); +} +wrappedRequire('foo'); +wrappedRequire('bar'); +``` + +When this option is set to `false`, the generated code will either directly throw an error when such a call is encountered or, when `dynamicRequireTargets` is used, when such a call cannot be resolved with a configured dynamic require target. + +Setting this option to `true` will instead leave the `require` call in the code or use it as a fallback for `dynamicRequireTargets`. + +### `esmExternals` + +Type: `boolean | string[] | ((id: string) => boolean)` +Default: `false` + +Controls how to render imports from external dependencies. By default, this plugin assumes that all external dependencies are CommonJS. This means they are rendered as default imports to be compatible with e.g. NodeJS where ES modules can only import a default export from a CommonJS dependency: + +```js +// input +const foo = require('foo'); + +// output +import foo from 'foo'; +``` + +This is likely not desired for ES module dependencies: Here `require` should usually return the namespace to be compatible with how bundled modules are handled. + +If you set `esmExternals` to `true`, this plugins assumes that all external dependencies are ES modules and will adhere to the `requireReturnsDefault` option. If that option is not set, they will be rendered as namespace imports. + +You can also supply an array of ids to be treated as ES modules, or a function that will be passed each external id to determine if it is an ES module. + +### `defaultIsModuleExports` + +Type: `boolean | "auto"`
+Default: `"auto"` + +Controls what is the default export when importing a CommonJS file from an ES module. + +- `true`: The value of the default export is `module.exports`. This currently matches the behavior of Node.js when importing a CommonJS file. + ```js + // mod.cjs + exports.default = 3; + ``` + ```js + import foo from './mod.cjs'; + console.log(foo); // { default: 3 } + ``` +- `false`: The value of the default export is `exports.default`. + ```js + // mod.cjs + exports.default = 3; + ``` + ```js + import foo from './mod.cjs'; + console.log(foo); // 3 + ``` +- `"auto"`: The value of the default export is `exports.default` if the CommonJS file has an `exports.__esModule === true` property; otherwise it's `module.exports`. This makes it possible to import + the default export of ES modules compiled to CommonJS as if they were not compiled. + ```js + // mod.cjs + exports.default = 3; + ``` + ```js + // mod-compiled.cjs + exports.__esModule = true; + exports.default = 3; + ``` + ```js + import foo from './mod.cjs'; + import bar from './mod-compiled.cjs'; + console.log(foo); // { default: 3 } + console.log(bar); // 3 + ``` + +### `requireReturnsDefault` + +Type: `boolean | "namespace" | "auto" | "preferred" | ((id: string) => boolean | "auto" | "preferred")`
+Default: `false` + +Controls what is returned when requiring an ES module from a CommonJS file. When using the `esmExternals` option, this will also apply to external modules. By default, this plugin will render those imports as namespace imports, i.e. + +```js +// input +const foo = require('foo'); + +// output +import * as foo from 'foo'; +``` + +This is in line with how other bundlers handle this situation and is also the most likely behaviour in case Node should ever support this. However there are some situations where this may not be desired: + +- There is code in an external dependency that cannot be changed where a `require` statement expects the default export to be returned from an ES module. +- If the imported module is in the same bundle, Rollup will generate a namespace object for the imported module which can increase bundle size unnecessarily: + + ```js + // input: main.js + const dep = require('./dep.js'); + console.log(dep.default); + + // input: dep.js + export default 'foo'; + + // output + var dep = 'foo'; + + var dep$1 = /*#__PURE__*/ Object.freeze({ + __proto__: null, + default: dep + }); + + console.log(dep$1.default); + ``` + +For these situations, you can change Rollup's behaviour either globally or per module. To change it globally, set the `requireReturnsDefault` option to one of the following values: + +- `false`: This is the default, requiring an ES module returns its namespace. This is the only option that will also add a marker `__esModule: true` to the namespace to support interop patterns in CommonJS modules that are transpiled ES modules. + + ```js + // input + const dep = require('dep'); + console.log(dep); + + // output + import * as dep$1 from 'dep'; + + function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var f = n.default; + if (typeof f == 'function') { + var a = function a() { + if (this instanceof a) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', { value: true }); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty( + a, + k, + d.get + ? d + : { + enumerable: true, + get: function () { + return n[k]; + } + } + ); + }); + return a; + } + + var dep = /*@__PURE__*/ getAugmentedNamespace(dep$1); + + console.log(dep); + ``` + +- `"namespace"`: Like `false`, requiring an ES module returns its namespace, but the plugin does not add the `__esModule` marker and thus creates more efficient code. For external dependencies when using `esmExternals: true`, no additional interop code is generated. + + ```js + // output + import * as dep from 'dep'; + + console.log(dep); + ``` + +- `"auto"`: This is complementary to how [`output.exports`](https://rollupjs.org/guide/en/#outputexports): `"auto"` works in Rollup: If a module has a default export and no named exports, requiring that module returns the default export. In all other cases, the namespace is returned. For external dependencies when using `esmExternals: true`, a corresponding interop helper is added: + + ```js + // output + import * as dep$1 from 'dep'; + + function getDefaultExportFromNamespaceIfNotNamed(n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 + ? n['default'] + : n; + } + + var dep = getDefaultExportFromNamespaceIfNotNamed(dep$1); + + console.log(dep); + ``` + +- `"preferred"`: If a module has a default export, requiring that module always returns the default export, no matter whether additional named exports exist. This is similar to how previous versions of this plugin worked. Again for external dependencies when using `esmExternals: true`, an interop helper is added: + + ```js + // output + import * as dep$1 from 'dep'; + + function getDefaultExportFromNamespaceIfPresent(n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n; + } + + var dep = getDefaultExportFromNamespaceIfPresent(dep$1); + + console.log(dep); + ``` + +- `true`: This will always try to return the default export on require without checking if it actually exists. This can throw at build time if there is no default export. This is how external dependencies are handled when `esmExternals` is not used. The advantage over the other options is that, like `false`, this does not add an interop helper for external dependencies, keeping the code lean: + + ```js + // output + import dep from 'dep'; + + console.log(dep); + ``` + +To change this for individual modules, you can supply a function for `requireReturnsDefault` instead. This function will then be called once for each required ES module or external dependency with the corresponding id and allows you to return different values for different modules. + +## Using with @rollup/plugin-node-resolve + +Since most CommonJS packages you are importing are probably dependencies in `node_modules`, you may need to use [@rollup/plugin-node-resolve](https://github.com/rollup/plugins/tree/master/packages/node-resolve): + +```js +// rollup.config.js +import resolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; + +export default { + input: 'main.js', + output: { + file: 'bundle.js', + format: 'iife', + name: 'MyModule' + }, + plugins: [commonjs(), resolve()] +}; +``` + +## Usage with symlinks + +Symlinks are common in monorepos and are also created by the `npm link` command. Rollup with `@rollup/plugin-node-resolve` resolves modules to their real paths by default. So `include` and `exclude` paths should handle real paths rather than symlinked paths (e.g. `../common/node_modules/**` instead of `node_modules/**`). You may also use a regular expression for `include` that works regardless of base path. Try this: + +```js +commonjs({ + include: /node_modules/ +}); +``` + +Whether symlinked module paths are [realpathed](http://man7.org/linux/man-pages/man3/realpath.3.html) or preserved depends on Rollup's `preserveSymlinks` setting, which is false by default, matching Node.js' default behavior. Setting `preserveSymlinks` to true in your Rollup config will cause `import` and `export` to match based on symlinked paths instead. + +## Strict mode + +ES modules are _always_ parsed in strict mode. That means that certain non-strict constructs (like octal literals) will be treated as syntax errors when Rollup parses modules that use them. Some older CommonJS modules depend on those constructs, and if you depend on them your bundle will blow up. There's basically nothing we can do about that. + +Luckily, there is absolutely no good reason _not_ to use strict mode for everything — so the solution to this problem is to lobby the authors of those modules to update them. + +## Inter-plugin-communication + +This plugin exposes the result of its CommonJS file type detection for other plugins to use. You can access it via `this.getModuleInfo` or the `moduleParsed` hook: + +```js +function cjsDetectionPlugin() { + return { + name: 'cjs-detection', + moduleParsed({ + id, + meta: { + commonjs: { isCommonJS } + } + }) { + console.log(`File ${id} is CommonJS: ${isCommonJS}`); + } + }; +} +``` + +## Meta + +[CONTRIBUTING](/.github/CONTRIBUTING.md) + +[LICENSE (MIT)](/LICENSE) diff --git a/node_modules/@rollup/plugin-commonjs/dist/cjs/index.js b/node_modules/@rollup/plugin-commonjs/dist/cjs/index.js new file mode 100644 index 0000000..033ef27 --- /dev/null +++ b/node_modules/@rollup/plugin-commonjs/dist/cjs/index.js @@ -0,0 +1,2306 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var path = require('path'); +var pluginutils = require('@rollup/pluginutils'); +var fs = require('fs'); +var getCommonDir = require('commondir'); +var glob = require('glob'); +var estreeWalker = require('estree-walker'); +var MagicString = require('magic-string'); +var isReference = require('is-reference'); + +var version = "26.0.1"; +var peerDependencies = { + rollup: "^2.68.0||^3.0.0||^4.0.0" +}; + +function tryParse(parse, code, id) { + try { + return parse(code, { allowReturnOutsideFunction: true }); + } catch (err) { + err.message += ` in ${id}`; + throw err; + } +} + +const firstpassGlobal = /\b(?:require|module|exports|global)\b/; + +const firstpassNoGlobal = /\b(?:require|module|exports)\b/; + +function hasCjsKeywords(code, ignoreGlobal) { + const firstpass = ignoreGlobal ? firstpassNoGlobal : firstpassGlobal; + return firstpass.test(code); +} + +/* eslint-disable no-underscore-dangle */ + + +function analyzeTopLevelStatements(parse, code, id) { + const ast = tryParse(parse, code, id); + + let isEsModule = false; + let hasDefaultExport = false; + let hasNamedExports = false; + + for (const node of ast.body) { + switch (node.type) { + case 'ExportDefaultDeclaration': + isEsModule = true; + hasDefaultExport = true; + break; + case 'ExportNamedDeclaration': + isEsModule = true; + if (node.declaration) { + hasNamedExports = true; + } else { + for (const specifier of node.specifiers) { + if (specifier.exported.name === 'default') { + hasDefaultExport = true; + } else { + hasNamedExports = true; + } + } + } + break; + case 'ExportAllDeclaration': + isEsModule = true; + if (node.exported && node.exported.name === 'default') { + hasDefaultExport = true; + } else { + hasNamedExports = true; + } + break; + case 'ImportDeclaration': + isEsModule = true; + break; + } + } + + return { isEsModule, hasDefaultExport, hasNamedExports, ast }; +} + +/* eslint-disable import/prefer-default-export */ + + +function deconflict(scopes, globals, identifier) { + let i = 1; + let deconflicted = pluginutils.makeLegalIdentifier(identifier); + const hasConflicts = () => + scopes.some((scope) => scope.contains(deconflicted)) || globals.has(deconflicted); + + while (hasConflicts()) { + deconflicted = pluginutils.makeLegalIdentifier(`${identifier}_${i}`); + i += 1; + } + + for (const scope of scopes) { + scope.declarations[deconflicted] = true; + } + + return deconflicted; +} + +function getName(id) { + const name = pluginutils.makeLegalIdentifier(path.basename(id, path.extname(id))); + if (name !== 'index') { + return name; + } + return pluginutils.makeLegalIdentifier(path.basename(path.dirname(id))); +} + +function normalizePathSlashes(path) { + return path.replace(/\\/g, '/'); +} + +const getVirtualPathForDynamicRequirePath = (path$1, commonDir) => + `/${normalizePathSlashes(path.relative(commonDir, path$1))}`; + +function capitalize(name) { + return name[0].toUpperCase() + name.slice(1); +} + +function getStrictRequiresFilter({ strictRequires }) { + switch (strictRequires) { + case true: + return { strictRequiresFilter: () => true, detectCyclesAndConditional: false }; + // eslint-disable-next-line no-undefined + case undefined: + case 'auto': + case 'debug': + case null: + return { strictRequiresFilter: () => false, detectCyclesAndConditional: true }; + case false: + return { strictRequiresFilter: () => false, detectCyclesAndConditional: false }; + default: + if (typeof strictRequires === 'string' || Array.isArray(strictRequires)) { + return { + strictRequiresFilter: pluginutils.createFilter(strictRequires), + detectCyclesAndConditional: false + }; + } + throw new Error('Unexpected value for "strictRequires" option.'); + } +} + +function getPackageEntryPoint(dirPath) { + let entryPoint = 'index.js'; + + try { + if (fs.existsSync(path.join(dirPath, 'package.json'))) { + entryPoint = + JSON.parse(fs.readFileSync(path.join(dirPath, 'package.json'), { encoding: 'utf8' })).main || + entryPoint; + } + } catch (ignored) { + // ignored + } + + return entryPoint; +} + +function isDirectory(path) { + try { + if (fs.statSync(path).isDirectory()) return true; + } catch (ignored) { + // Nothing to do here + } + return false; +} + +function getDynamicRequireModules(patterns, dynamicRequireRoot) { + const dynamicRequireModules = new Map(); + const dirNames = new Set(); + for (const pattern of !patterns || Array.isArray(patterns) ? patterns || [] : [patterns]) { + const isNegated = pattern.startsWith('!'); + const modifyMap = (targetPath, resolvedPath) => + isNegated + ? dynamicRequireModules.delete(targetPath) + : dynamicRequireModules.set(targetPath, resolvedPath); + for (const path$1 of glob.glob + .sync(isNegated ? pattern.substr(1) : pattern) + .sort((a, b) => a.localeCompare(b, 'en'))) { + const resolvedPath = path.resolve(path$1); + const requirePath = normalizePathSlashes(resolvedPath); + if (isDirectory(resolvedPath)) { + dirNames.add(resolvedPath); + const modulePath = path.resolve(path.join(resolvedPath, getPackageEntryPoint(path$1))); + modifyMap(requirePath, modulePath); + modifyMap(normalizePathSlashes(modulePath), modulePath); + } else { + dirNames.add(path.dirname(resolvedPath)); + modifyMap(requirePath, resolvedPath); + } + } + } + return { + commonDir: dirNames.size ? getCommonDir([...dirNames, dynamicRequireRoot]) : null, + dynamicRequireModules + }; +} + +const FAILED_REQUIRE_ERROR = `throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');`; + +const COMMONJS_REQUIRE_EXPORT = 'commonjsRequire'; +const CREATE_COMMONJS_REQUIRE_EXPORT = 'createCommonjsRequire'; + +function getDynamicModuleRegistry( + isDynamicRequireModulesEnabled, + dynamicRequireModules, + commonDir, + ignoreDynamicRequires +) { + if (!isDynamicRequireModulesEnabled) { + return `export function ${COMMONJS_REQUIRE_EXPORT}(path) { + ${FAILED_REQUIRE_ERROR} +}`; + } + const dynamicModuleImports = [...dynamicRequireModules.values()] + .map( + (id, index) => + `import ${ + id.endsWith('.json') ? `json${index}` : `{ __require as require${index} }` + } from ${JSON.stringify(id)};` + ) + .join('\n'); + const dynamicModuleProps = [...dynamicRequireModules.keys()] + .map( + (id, index) => + `\t\t${JSON.stringify(getVirtualPathForDynamicRequirePath(id, commonDir))}: ${ + id.endsWith('.json') ? `function () { return json${index}; }` : `require${index}` + }` + ) + .join(',\n'); + return `${dynamicModuleImports} + +var dynamicModules; + +function getDynamicModules() { + return dynamicModules || (dynamicModules = { +${dynamicModuleProps} + }); +} + +export function ${CREATE_COMMONJS_REQUIRE_EXPORT}(originalModuleDir) { + function handleRequire(path) { + var resolvedPath = commonjsResolve(path, originalModuleDir); + if (resolvedPath !== null) { + return getDynamicModules()[resolvedPath](); + } + ${ignoreDynamicRequires ? 'return require(path);' : FAILED_REQUIRE_ERROR} + } + handleRequire.resolve = function (path) { + var resolvedPath = commonjsResolve(path, originalModuleDir); + if (resolvedPath !== null) { + return resolvedPath; + } + return require.resolve(path); + } + return handleRequire; +} + +function commonjsResolve (path, originalModuleDir) { + var shouldTryNodeModules = isPossibleNodeModulesPath(path); + path = normalize(path); + var relPath; + if (path[0] === '/') { + originalModuleDir = ''; + } + var modules = getDynamicModules(); + var checkedExtensions = ['', '.js', '.json']; + while (true) { + if (!shouldTryNodeModules) { + relPath = normalize(originalModuleDir + '/' + path); + } else { + relPath = normalize(originalModuleDir + '/node_modules/' + path); + } + + if (relPath.endsWith('/..')) { + break; // Travelled too far up, avoid infinite loop + } + + for (var extensionIndex = 0; extensionIndex < checkedExtensions.length; extensionIndex++) { + var resolvedPath = relPath + checkedExtensions[extensionIndex]; + if (modules[resolvedPath]) { + return resolvedPath; + } + } + if (!shouldTryNodeModules) break; + var nextDir = normalize(originalModuleDir + '/..'); + if (nextDir === originalModuleDir) break; + originalModuleDir = nextDir; + } + return null; +} + +function isPossibleNodeModulesPath (modulePath) { + var c0 = modulePath[0]; + if (c0 === '/' || c0 === '\\\\') return false; + var c1 = modulePath[1], c2 = modulePath[2]; + if ((c0 === '.' && (!c1 || c1 === '/' || c1 === '\\\\')) || + (c0 === '.' && c1 === '.' && (!c2 || c2 === '/' || c2 === '\\\\'))) return false; + if (c1 === ':' && (c2 === '/' || c2 === '\\\\')) return false; + return true; +} + +function normalize (path) { + path = path.replace(/\\\\/g, '/'); + var parts = path.split('/'); + var slashed = parts[0] === ''; + for (var i = 1; i < parts.length; i++) { + if (parts[i] === '.' || parts[i] === '') { + parts.splice(i--, 1); + } + } + for (var i = 1; i < parts.length; i++) { + if (parts[i] !== '..') continue; + if (i > 0 && parts[i - 1] !== '..' && parts[i - 1] !== '.') { + parts.splice(--i, 2); + i--; + } + } + path = parts.join('/'); + if (slashed && path[0] !== '/') path = '/' + path; + else if (path.length === 0) path = '.'; + return path; +}`; +} + +const isWrappedId = (id, suffix) => id.endsWith(suffix); +const wrapId = (id, suffix) => `\0${id}${suffix}`; +const unwrapId = (wrappedId, suffix) => wrappedId.slice(1, -suffix.length); + +const PROXY_SUFFIX = '?commonjs-proxy'; +const WRAPPED_SUFFIX = '?commonjs-wrapped'; +const EXTERNAL_SUFFIX = '?commonjs-external'; +const EXPORTS_SUFFIX = '?commonjs-exports'; +const MODULE_SUFFIX = '?commonjs-module'; +const ENTRY_SUFFIX = '?commonjs-entry'; +const ES_IMPORT_SUFFIX = '?commonjs-es-import'; + +const DYNAMIC_MODULES_ID = '\0commonjs-dynamic-modules'; +const HELPERS_ID = '\0commonjsHelpers.js'; + +const IS_WRAPPED_COMMONJS = 'withRequireFunction'; + +// `x['default']` is used instead of `x.default` for backward compatibility with ES3 browsers. +// Minifiers like uglify will usually transpile it back if compatibility with ES3 is not enabled. +// This could be improved by inspecting Rollup's "generatedCode" option + +const HELPERS = ` +export var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +export function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +export function getDefaultExportFromNamespaceIfPresent (n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n; +} + +export function getDefaultExportFromNamespaceIfNotNamed (n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n; +} + +export function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var f = n.default; + if (typeof f == "function") { + var a = function a () { + if (this instanceof a) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} +`; + +function getHelpersModule() { + return HELPERS; +} + +function getUnknownRequireProxy(id, requireReturnsDefault) { + if (requireReturnsDefault === true || id.endsWith('.json')) { + return `export { default } from ${JSON.stringify(id)};`; + } + const name = getName(id); + const exported = + requireReturnsDefault === 'auto' + ? `import { getDefaultExportFromNamespaceIfNotNamed } from "${HELPERS_ID}"; export default /*@__PURE__*/getDefaultExportFromNamespaceIfNotNamed(${name});` + : requireReturnsDefault === 'preferred' + ? `import { getDefaultExportFromNamespaceIfPresent } from "${HELPERS_ID}"; export default /*@__PURE__*/getDefaultExportFromNamespaceIfPresent(${name});` + : !requireReturnsDefault + ? `import { getAugmentedNamespace } from "${HELPERS_ID}"; export default /*@__PURE__*/getAugmentedNamespace(${name});` + : `export default ${name};`; + return `import * as ${name} from ${JSON.stringify(id)}; ${exported}`; +} + +async function getStaticRequireProxy(id, requireReturnsDefault, loadModule) { + const name = getName(id); + const { + meta: { commonjs: commonjsMeta } + } = await loadModule({ id }); + if (!commonjsMeta) { + return getUnknownRequireProxy(id, requireReturnsDefault); + } + if (commonjsMeta.isCommonJS) { + return `export { __moduleExports as default } from ${JSON.stringify(id)};`; + } + if (!requireReturnsDefault) { + return `import { getAugmentedNamespace } from "${HELPERS_ID}"; import * as ${name} from ${JSON.stringify( + id + )}; export default /*@__PURE__*/getAugmentedNamespace(${name});`; + } + if ( + requireReturnsDefault !== true && + (requireReturnsDefault === 'namespace' || + !commonjsMeta.hasDefaultExport || + (requireReturnsDefault === 'auto' && commonjsMeta.hasNamedExports)) + ) { + return `import * as ${name} from ${JSON.stringify(id)}; export default ${name};`; + } + return `export { default } from ${JSON.stringify(id)};`; +} + +function getEntryProxy(id, defaultIsModuleExports, getModuleInfo, shebang) { + const { + meta: { commonjs: commonjsMeta }, + hasDefaultExport + } = getModuleInfo(id); + if (!commonjsMeta || commonjsMeta.isCommonJS !== IS_WRAPPED_COMMONJS) { + const stringifiedId = JSON.stringify(id); + let code = `export * from ${stringifiedId};`; + if (hasDefaultExport) { + code += `export { default } from ${stringifiedId};`; + } + return shebang + code; + } + const result = getEsImportProxy(id, defaultIsModuleExports); + return { + ...result, + code: shebang + result.code + }; +} + +function getEsImportProxy(id, defaultIsModuleExports) { + const name = getName(id); + const exportsName = `${name}Exports`; + const requireModule = `require${capitalize(name)}`; + let code = + `import { getDefaultExportFromCjs } from "${HELPERS_ID}";\n` + + `import { __require as ${requireModule} } from ${JSON.stringify(id)};\n` + + `var ${exportsName} = ${requireModule}();\n` + + `export { ${exportsName} as __moduleExports };`; + if (defaultIsModuleExports === true) { + code += `\nexport { ${exportsName} as default };`; + } else { + code += `export default /*@__PURE__*/getDefaultExportFromCjs(${exportsName});`; + } + return { + code, + syntheticNamedExports: '__moduleExports' + }; +} + +/* eslint-disable no-param-reassign, no-undefined */ + + +function getCandidatesForExtension(resolved, extension) { + return [resolved + extension, `${resolved}${path.sep}index${extension}`]; +} + +function getCandidates(resolved, extensions) { + return extensions.reduce( + (paths, extension) => paths.concat(getCandidatesForExtension(resolved, extension)), + [resolved] + ); +} + +function resolveExtensions(importee, importer, extensions) { + // not our problem + if (importee[0] !== '.' || !importer) return undefined; + + const resolved = path.resolve(path.dirname(importer), importee); + const candidates = getCandidates(resolved, extensions); + + for (let i = 0; i < candidates.length; i += 1) { + try { + const stats = fs.statSync(candidates[i]); + if (stats.isFile()) return { id: candidates[i] }; + } catch (err) { + /* noop */ + } + } + + return undefined; +} + +function getResolveId(extensions, isPossibleCjsId) { + const currentlyResolving = new Map(); + + return { + /** + * This is a Maps of importers to Sets of require sources being resolved at + * the moment by resolveRequireSourcesAndUpdateMeta + */ + currentlyResolving, + async resolveId(importee, importer, resolveOptions) { + const customOptions = resolveOptions.custom; + // All logic below is specific to ES imports. + // Also, if we do not skip this logic for requires that are resolved while + // transforming a commonjs file, it can easily lead to deadlocks. + if ( + customOptions && + customOptions['node-resolve'] && + customOptions['node-resolve'].isRequire + ) { + return null; + } + const currentlyResolvingForParent = currentlyResolving.get(importer); + if (currentlyResolvingForParent && currentlyResolvingForParent.has(importee)) { + this.warn({ + code: 'THIS_RESOLVE_WITHOUT_OPTIONS', + message: + 'It appears a plugin has implemented a "resolveId" hook that uses "this.resolve" without forwarding the third "options" parameter of "resolveId". This is problematic as it can lead to wrong module resolutions especially for the node-resolve plugin and in certain cases cause early exit errors for the commonjs plugin.\nIn rare cases, this warning can appear if the same file is both imported and required from the same mixed ES/CommonJS module, in which case it can be ignored.', + url: 'https://rollupjs.org/guide/en/#resolveid' + }); + return null; + } + + if (isWrappedId(importee, WRAPPED_SUFFIX)) { + return unwrapId(importee, WRAPPED_SUFFIX); + } + + if ( + importee.endsWith(ENTRY_SUFFIX) || + isWrappedId(importee, MODULE_SUFFIX) || + isWrappedId(importee, EXPORTS_SUFFIX) || + isWrappedId(importee, PROXY_SUFFIX) || + isWrappedId(importee, ES_IMPORT_SUFFIX) || + isWrappedId(importee, EXTERNAL_SUFFIX) || + importee.startsWith(HELPERS_ID) || + importee === DYNAMIC_MODULES_ID + ) { + return importee; + } + + if (importer) { + if ( + importer === DYNAMIC_MODULES_ID || + // Proxies are only importing resolved ids, no need to resolve again + isWrappedId(importer, PROXY_SUFFIX) || + isWrappedId(importer, ES_IMPORT_SUFFIX) || + importer.endsWith(ENTRY_SUFFIX) + ) { + return importee; + } + if (isWrappedId(importer, EXTERNAL_SUFFIX)) { + // We need to return null for unresolved imports so that the proper warning is shown + if ( + !(await this.resolve( + importee, + importer, + Object.assign({ skipSelf: true }, resolveOptions) + )) + ) { + return null; + } + // For other external imports, we need to make sure they are handled as external + return { id: importee, external: true }; + } + } + + if (importee.startsWith('\0')) { + return null; + } + + // If this is an entry point or ESM import, we need to figure out if the importee is wrapped and + // if that is the case, we need to add a proxy. + const resolved = + (await this.resolve( + importee, + importer, + Object.assign({ skipSelf: true }, resolveOptions) + )) || resolveExtensions(importee, importer, extensions); + // Make sure that even if other plugins resolve again, we ignore our own proxies + if ( + !resolved || + resolved.external || + resolved.id.endsWith(ENTRY_SUFFIX) || + isWrappedId(resolved.id, ES_IMPORT_SUFFIX) || + !isPossibleCjsId(resolved.id) + ) { + return resolved; + } + const moduleInfo = await this.load(resolved); + const { + meta: { commonjs: commonjsMeta } + } = moduleInfo; + if (commonjsMeta) { + const { isCommonJS } = commonjsMeta; + if (isCommonJS) { + if (resolveOptions.isEntry) { + moduleInfo.moduleSideEffects = true; + // We must not precede entry proxies with a `\0` as that will mess up relative external resolution + return resolved.id + ENTRY_SUFFIX; + } + if (isCommonJS === IS_WRAPPED_COMMONJS) { + return { id: wrapId(resolved.id, ES_IMPORT_SUFFIX), meta: { commonjs: { resolved } } }; + } + } + } + return resolved; + } + }; +} + +function getRequireResolver(extensions, detectCyclesAndConditional, currentlyResolving) { + const knownCjsModuleTypes = Object.create(null); + const requiredIds = Object.create(null); + const unconditionallyRequiredIds = Object.create(null); + const dependencies = Object.create(null); + const getDependencies = (id) => dependencies[id] || (dependencies[id] = new Set()); + + const isCyclic = (id) => { + const dependenciesToCheck = new Set(getDependencies(id)); + for (const dependency of dependenciesToCheck) { + if (dependency === id) { + return true; + } + for (const childDependency of getDependencies(dependency)) { + dependenciesToCheck.add(childDependency); + } + } + return false; + }; + + // Once a module is listed here, its type (wrapped or not) is fixed and may + // not change for the rest of the current build, to not break already + // transformed modules. + const fullyAnalyzedModules = Object.create(null); + + const getTypeForFullyAnalyzedModule = (id) => { + const knownType = knownCjsModuleTypes[id]; + if (knownType !== true || !detectCyclesAndConditional || fullyAnalyzedModules[id]) { + return knownType; + } + if (isCyclic(id)) { + return (knownCjsModuleTypes[id] = IS_WRAPPED_COMMONJS); + } + return knownType; + }; + + const setInitialParentType = (id, initialCommonJSType) => { + // Fully analyzed modules may never change type + if (fullyAnalyzedModules[id]) { + return; + } + knownCjsModuleTypes[id] = initialCommonJSType; + if ( + detectCyclesAndConditional && + knownCjsModuleTypes[id] === true && + requiredIds[id] && + !unconditionallyRequiredIds[id] + ) { + knownCjsModuleTypes[id] = IS_WRAPPED_COMMONJS; + } + }; + + const analyzeRequiredModule = async (parentId, resolved, isConditional, loadModule) => { + const childId = resolved.id; + requiredIds[childId] = true; + if (!(isConditional || knownCjsModuleTypes[parentId] === IS_WRAPPED_COMMONJS)) { + unconditionallyRequiredIds[childId] = true; + } + + getDependencies(parentId).add(childId); + if (!isCyclic(childId)) { + // This makes sure the current transform handler waits for all direct + // dependencies to be loaded and transformed and therefore for all + // transitive CommonJS dependencies to be loaded as well so that all + // cycles have been found and knownCjsModuleTypes is reliable. + await loadModule(resolved); + } + }; + + const getTypeForImportedModule = async (resolved, loadModule) => { + if (resolved.id in knownCjsModuleTypes) { + // This handles cyclic ES dependencies + return knownCjsModuleTypes[resolved.id]; + } + const { + meta: { commonjs } + } = await loadModule(resolved); + return (commonjs && commonjs.isCommonJS) || false; + }; + + return { + getWrappedIds: () => + Object.keys(knownCjsModuleTypes).filter( + (id) => knownCjsModuleTypes[id] === IS_WRAPPED_COMMONJS + ), + isRequiredId: (id) => requiredIds[id], + async shouldTransformCachedModule({ + id: parentId, + resolvedSources, + meta: { commonjs: parentMeta } + }) { + // We explicitly track ES modules to handle circular imports + if (!(parentMeta && parentMeta.isCommonJS)) knownCjsModuleTypes[parentId] = false; + if (isWrappedId(parentId, ES_IMPORT_SUFFIX)) return false; + const parentRequires = parentMeta && parentMeta.requires; + if (parentRequires) { + setInitialParentType(parentId, parentMeta.initialCommonJSType); + await Promise.all( + parentRequires.map(({ resolved, isConditional }) => + analyzeRequiredModule(parentId, resolved, isConditional, this.load) + ) + ); + if (getTypeForFullyAnalyzedModule(parentId) !== parentMeta.isCommonJS) { + return true; + } + for (const { + resolved: { id } + } of parentRequires) { + if (getTypeForFullyAnalyzedModule(id) !== parentMeta.isRequiredCommonJS[id]) { + return true; + } + } + // Now that we decided to go with the cached copy, neither the parent + // module nor any of its children may change types anymore + fullyAnalyzedModules[parentId] = true; + for (const { + resolved: { id } + } of parentRequires) { + fullyAnalyzedModules[id] = true; + } + } + const parentRequireSet = new Set((parentRequires || []).map(({ resolved: { id } }) => id)); + return ( + await Promise.all( + Object.keys(resolvedSources) + .map((source) => resolvedSources[source]) + .filter(({ id, external }) => !(external || parentRequireSet.has(id))) + .map(async (resolved) => { + if (isWrappedId(resolved.id, ES_IMPORT_SUFFIX)) { + return ( + (await getTypeForImportedModule( + ( + await this.load({ id: resolved.id }) + ).meta.commonjs.resolved, + this.load + )) !== IS_WRAPPED_COMMONJS + ); + } + return (await getTypeForImportedModule(resolved, this.load)) === IS_WRAPPED_COMMONJS; + }) + ) + ).some((shouldTransform) => shouldTransform); + }, + /* eslint-disable no-param-reassign */ + resolveRequireSourcesAndUpdateMeta: + (rollupContext) => async (parentId, isParentCommonJS, parentMeta, sources) => { + parentMeta.initialCommonJSType = isParentCommonJS; + parentMeta.requires = []; + parentMeta.isRequiredCommonJS = Object.create(null); + setInitialParentType(parentId, isParentCommonJS); + const currentlyResolvingForParent = currentlyResolving.get(parentId) || new Set(); + currentlyResolving.set(parentId, currentlyResolvingForParent); + const requireTargets = await Promise.all( + sources.map(async ({ source, isConditional }) => { + // Never analyze or proxy internal modules + if (source.startsWith('\0')) { + return { id: source, allowProxy: false }; + } + currentlyResolvingForParent.add(source); + const resolved = + (await rollupContext.resolve(source, parentId, { + skipSelf: false, + custom: { 'node-resolve': { isRequire: true } } + })) || resolveExtensions(source, parentId, extensions); + currentlyResolvingForParent.delete(source); + if (!resolved) { + return { id: wrapId(source, EXTERNAL_SUFFIX), allowProxy: false }; + } + const childId = resolved.id; + if (resolved.external) { + return { id: wrapId(childId, EXTERNAL_SUFFIX), allowProxy: false }; + } + parentMeta.requires.push({ resolved, isConditional }); + await analyzeRequiredModule(parentId, resolved, isConditional, rollupContext.load); + return { id: childId, allowProxy: true }; + }) + ); + parentMeta.isCommonJS = getTypeForFullyAnalyzedModule(parentId); + fullyAnalyzedModules[parentId] = true; + return requireTargets.map(({ id: dependencyId, allowProxy }, index) => { + // eslint-disable-next-line no-multi-assign + const isCommonJS = (parentMeta.isRequiredCommonJS[dependencyId] = + getTypeForFullyAnalyzedModule(dependencyId)); + fullyAnalyzedModules[dependencyId] = true; + return { + source: sources[index].source, + id: allowProxy + ? isCommonJS === IS_WRAPPED_COMMONJS + ? wrapId(dependencyId, WRAPPED_SUFFIX) + : wrapId(dependencyId, PROXY_SUFFIX) + : dependencyId, + isCommonJS + }; + }); + }, + isCurrentlyResolving(source, parentId) { + const currentlyResolvingForParent = currentlyResolving.get(parentId); + return currentlyResolvingForParent && currentlyResolvingForParent.has(source); + } + }; +} + +function validateVersion(actualVersion, peerDependencyVersion, name) { + const versionRegexp = /\^(\d+\.\d+\.\d+)/g; + let minMajor = Infinity; + let minMinor = Infinity; + let minPatch = Infinity; + let foundVersion; + // eslint-disable-next-line no-cond-assign + while ((foundVersion = versionRegexp.exec(peerDependencyVersion))) { + const [foundMajor, foundMinor, foundPatch] = foundVersion[1].split('.').map(Number); + if (foundMajor < minMajor) { + minMajor = foundMajor; + minMinor = foundMinor; + minPatch = foundPatch; + } + } + if (!actualVersion) { + throw new Error( + `Insufficient ${name} version: "@rollup/plugin-commonjs" requires at least ${name}@${minMajor}.${minMinor}.${minPatch}.` + ); + } + const [major, minor, patch] = actualVersion.split('.').map(Number); + if ( + major < minMajor || + (major === minMajor && (minor < minMinor || (minor === minMinor && patch < minPatch))) + ) { + throw new Error( + `Insufficient ${name} version: "@rollup/plugin-commonjs" requires at least ${name}@${minMajor}.${minMinor}.${minPatch} but found ${name}@${actualVersion}.` + ); + } +} + +const operators = { + '==': (x) => equals(x.left, x.right, false), + + '!=': (x) => not(operators['=='](x)), + + '===': (x) => equals(x.left, x.right, true), + + '!==': (x) => not(operators['==='](x)), + + '!': (x) => isFalsy(x.argument), + + '&&': (x) => isTruthy(x.left) && isTruthy(x.right), + + '||': (x) => isTruthy(x.left) || isTruthy(x.right) +}; + +function not(value) { + return value === null ? value : !value; +} + +function equals(a, b, strict) { + if (a.type !== b.type) return null; + // eslint-disable-next-line eqeqeq + if (a.type === 'Literal') return strict ? a.value === b.value : a.value == b.value; + return null; +} + +function isTruthy(node) { + if (!node) return false; + if (node.type === 'Literal') return !!node.value; + if (node.type === 'ParenthesizedExpression') return isTruthy(node.expression); + if (node.operator in operators) return operators[node.operator](node); + return null; +} + +function isFalsy(node) { + return not(isTruthy(node)); +} + +function getKeypath(node) { + const parts = []; + + while (node.type === 'MemberExpression') { + if (node.computed) return null; + + parts.unshift(node.property.name); + // eslint-disable-next-line no-param-reassign + node = node.object; + } + + if (node.type !== 'Identifier') return null; + + const { name } = node; + parts.unshift(name); + + return { name, keypath: parts.join('.') }; +} + +const KEY_COMPILED_ESM = '__esModule'; + +function getDefineCompiledEsmType(node) { + const definedPropertyWithExports = getDefinePropertyCallName(node, 'exports'); + const definedProperty = + definedPropertyWithExports || getDefinePropertyCallName(node, 'module.exports'); + if (definedProperty && definedProperty.key === KEY_COMPILED_ESM) { + return isTruthy(definedProperty.value) + ? definedPropertyWithExports + ? 'exports' + : 'module' + : false; + } + return false; +} + +function getDefinePropertyCallName(node, targetName) { + const { + callee: { object, property } + } = node; + if (!object || object.type !== 'Identifier' || object.name !== 'Object') return; + if (!property || property.type !== 'Identifier' || property.name !== 'defineProperty') return; + if (node.arguments.length !== 3) return; + + const targetNames = targetName.split('.'); + const [target, key, value] = node.arguments; + if (targetNames.length === 1) { + if (target.type !== 'Identifier' || target.name !== targetNames[0]) { + return; + } + } + + if (targetNames.length === 2) { + if ( + target.type !== 'MemberExpression' || + target.object.name !== targetNames[0] || + target.property.name !== targetNames[1] + ) { + return; + } + } + + if (value.type !== 'ObjectExpression' || !value.properties) return; + + const valueProperty = value.properties.find((p) => p.key && p.key.name === 'value'); + if (!valueProperty || !valueProperty.value) return; + + // eslint-disable-next-line consistent-return + return { key: key.value, value: valueProperty.value }; +} + +function isShorthandProperty(parent) { + return parent && parent.type === 'Property' && parent.shorthand; +} + +function wrapCode(magicString, uses, moduleName, exportsName, indentExclusionRanges) { + const args = []; + const passedArgs = []; + if (uses.module) { + args.push('module'); + passedArgs.push(moduleName); + } + if (uses.exports) { + args.push('exports'); + passedArgs.push(uses.module ? `${moduleName}.exports` : exportsName); + } + magicString + .trim() + .indent('\t', { exclude: indentExclusionRanges }) + .prepend(`(function (${args.join(', ')}) {\n`) + // For some reason, this line is only indented correctly when using a + // require-wrapper if we have this leading space + .append(` \n} (${passedArgs.join(', ')}));`); +} + +function rewriteExportsAndGetExportsBlock( + magicString, + moduleName, + exportsName, + exportedExportsName, + wrapped, + moduleExportsAssignments, + firstTopLevelModuleExportsAssignment, + exportsAssignmentsByName, + topLevelAssignments, + defineCompiledEsmExpressions, + deconflictedExportNames, + code, + HELPERS_NAME, + exportMode, + defaultIsModuleExports, + usesRequireWrapper, + requireName +) { + const exports = []; + const exportDeclarations = []; + + if (usesRequireWrapper) { + getExportsWhenUsingRequireWrapper( + magicString, + wrapped, + exportMode, + exports, + moduleExportsAssignments, + exportsAssignmentsByName, + moduleName, + exportsName, + requireName, + defineCompiledEsmExpressions + ); + } else if (exportMode === 'replace') { + getExportsForReplacedModuleExports( + magicString, + exports, + exportDeclarations, + moduleExportsAssignments, + firstTopLevelModuleExportsAssignment, + exportsName, + defaultIsModuleExports, + HELPERS_NAME + ); + } else { + if (exportMode === 'module') { + exportDeclarations.push(`var ${exportedExportsName} = ${moduleName}.exports`); + exports.push(`${exportedExportsName} as __moduleExports`); + } else { + exports.push(`${exportsName} as __moduleExports`); + } + if (wrapped) { + exportDeclarations.push( + getDefaultExportDeclaration(exportedExportsName, defaultIsModuleExports, HELPERS_NAME) + ); + } else { + getExports( + magicString, + exports, + exportDeclarations, + moduleExportsAssignments, + exportsAssignmentsByName, + deconflictedExportNames, + topLevelAssignments, + moduleName, + exportsName, + exportedExportsName, + defineCompiledEsmExpressions, + HELPERS_NAME, + defaultIsModuleExports, + exportMode + ); + } + } + if (exports.length) { + exportDeclarations.push(`export { ${exports.join(', ')} }`); + } + + return `\n\n${exportDeclarations.join(';\n')};`; +} + +function getExportsWhenUsingRequireWrapper( + magicString, + wrapped, + exportMode, + exports, + moduleExportsAssignments, + exportsAssignmentsByName, + moduleName, + exportsName, + requireName, + defineCompiledEsmExpressions +) { + exports.push(`${requireName} as __require`); + if (wrapped) return; + if (exportMode === 'replace') { + rewriteModuleExportsAssignments(magicString, moduleExportsAssignments, exportsName); + } else { + rewriteModuleExportsAssignments(magicString, moduleExportsAssignments, `${moduleName}.exports`); + // Collect and rewrite named exports + for (const [exportName, { nodes }] of exportsAssignmentsByName) { + for (const { node, type } of nodes) { + magicString.overwrite( + node.start, + node.left.end, + `${ + exportMode === 'module' && type === 'module' ? `${moduleName}.exports` : exportsName + }.${exportName}` + ); + } + } + replaceDefineCompiledEsmExpressionsAndGetIfRestorable( + defineCompiledEsmExpressions, + magicString, + exportMode, + moduleName, + exportsName + ); + } +} + +function getExportsForReplacedModuleExports( + magicString, + exports, + exportDeclarations, + moduleExportsAssignments, + firstTopLevelModuleExportsAssignment, + exportsName, + defaultIsModuleExports, + HELPERS_NAME +) { + for (const { left } of moduleExportsAssignments) { + magicString.overwrite(left.start, left.end, exportsName); + } + magicString.prependRight(firstTopLevelModuleExportsAssignment.left.start, 'var '); + exports.push(`${exportsName} as __moduleExports`); + exportDeclarations.push( + getDefaultExportDeclaration(exportsName, defaultIsModuleExports, HELPERS_NAME) + ); +} + +function getDefaultExportDeclaration(exportedExportsName, defaultIsModuleExports, HELPERS_NAME) { + return `export default ${ + defaultIsModuleExports === true + ? exportedExportsName + : defaultIsModuleExports === false + ? `${exportedExportsName}.default` + : `/*@__PURE__*/${HELPERS_NAME}.getDefaultExportFromCjs(${exportedExportsName})` + }`; +} + +function getExports( + magicString, + exports, + exportDeclarations, + moduleExportsAssignments, + exportsAssignmentsByName, + deconflictedExportNames, + topLevelAssignments, + moduleName, + exportsName, + exportedExportsName, + defineCompiledEsmExpressions, + HELPERS_NAME, + defaultIsModuleExports, + exportMode +) { + let deconflictedDefaultExportName; + // Collect and rewrite module.exports assignments + for (const { left } of moduleExportsAssignments) { + magicString.overwrite(left.start, left.end, `${moduleName}.exports`); + } + + // Collect and rewrite named exports + for (const [exportName, { nodes }] of exportsAssignmentsByName) { + const deconflicted = deconflictedExportNames[exportName]; + let needsDeclaration = true; + for (const { node, type } of nodes) { + let replacement = `${deconflicted} = ${ + exportMode === 'module' && type === 'module' ? `${moduleName}.exports` : exportsName + }.${exportName}`; + if (needsDeclaration && topLevelAssignments.has(node)) { + replacement = `var ${replacement}`; + needsDeclaration = false; + } + magicString.overwrite(node.start, node.left.end, replacement); + } + if (needsDeclaration) { + magicString.prepend(`var ${deconflicted};\n`); + } + + if (exportName === 'default') { + deconflictedDefaultExportName = deconflicted; + } else { + exports.push(exportName === deconflicted ? exportName : `${deconflicted} as ${exportName}`); + } + } + + const isRestorableCompiledEsm = replaceDefineCompiledEsmExpressionsAndGetIfRestorable( + defineCompiledEsmExpressions, + magicString, + exportMode, + moduleName, + exportsName + ); + + if ( + defaultIsModuleExports === false || + (defaultIsModuleExports === 'auto' && + isRestorableCompiledEsm && + moduleExportsAssignments.length === 0) + ) { + // If there is no deconflictedDefaultExportName, then we use the namespace as + // fallback because there can be no "default" property on the namespace + exports.push(`${deconflictedDefaultExportName || exportedExportsName} as default`); + } else if ( + defaultIsModuleExports === true || + (!isRestorableCompiledEsm && moduleExportsAssignments.length === 0) + ) { + exports.push(`${exportedExportsName} as default`); + } else { + exportDeclarations.push( + getDefaultExportDeclaration(exportedExportsName, defaultIsModuleExports, HELPERS_NAME) + ); + } +} + +function rewriteModuleExportsAssignments(magicString, moduleExportsAssignments, exportsName) { + for (const { left } of moduleExportsAssignments) { + magicString.overwrite(left.start, left.end, exportsName); + } +} + +function replaceDefineCompiledEsmExpressionsAndGetIfRestorable( + defineCompiledEsmExpressions, + magicString, + exportMode, + moduleName, + exportsName +) { + let isRestorableCompiledEsm = false; + for (const { node, type } of defineCompiledEsmExpressions) { + isRestorableCompiledEsm = true; + const moduleExportsExpression = + node.type === 'CallExpression' ? node.arguments[0] : node.left.object; + magicString.overwrite( + moduleExportsExpression.start, + moduleExportsExpression.end, + exportMode === 'module' && type === 'module' ? `${moduleName}.exports` : exportsName + ); + } + return isRestorableCompiledEsm; +} + +function isRequireExpression(node, scope) { + if (!node) return false; + if (node.type !== 'CallExpression') return false; + + // Weird case of `require()` or `module.require()` without arguments + if (node.arguments.length === 0) return false; + + return isRequire(node.callee, scope); +} + +function isRequire(node, scope) { + return ( + (node.type === 'Identifier' && node.name === 'require' && !scope.contains('require')) || + (node.type === 'MemberExpression' && isModuleRequire(node, scope)) + ); +} + +function isModuleRequire({ object, property }, scope) { + return ( + object.type === 'Identifier' && + object.name === 'module' && + property.type === 'Identifier' && + property.name === 'require' && + !scope.contains('module') + ); +} + +function hasDynamicArguments(node) { + return ( + node.arguments.length > 1 || + (node.arguments[0].type !== 'Literal' && + (node.arguments[0].type !== 'TemplateLiteral' || node.arguments[0].expressions.length > 0)) + ); +} + +const reservedMethod = { resolve: true, cache: true, main: true }; + +function isNodeRequirePropertyAccess(parent) { + return parent && parent.property && reservedMethod[parent.property.name]; +} + +function getRequireStringArg(node) { + return node.arguments[0].type === 'Literal' + ? node.arguments[0].value + : node.arguments[0].quasis[0].value.cooked; +} + +function getRequireHandlers() { + const requireExpressions = []; + + function addRequireExpression( + sourceId, + node, + scope, + usesReturnValue, + isInsideTryBlock, + isInsideConditional, + toBeRemoved + ) { + requireExpressions.push({ + sourceId, + node, + scope, + usesReturnValue, + isInsideTryBlock, + isInsideConditional, + toBeRemoved + }); + } + + async function rewriteRequireExpressionsAndGetImportBlock( + magicString, + topLevelDeclarations, + reassignedNames, + helpersName, + dynamicRequireName, + moduleName, + exportsName, + id, + exportMode, + resolveRequireSourcesAndUpdateMeta, + needsRequireWrapper, + isEsModule, + isDynamicRequireModulesEnabled, + getIgnoreTryCatchRequireStatementMode, + commonjsMeta + ) { + const imports = []; + imports.push(`import * as ${helpersName} from "${HELPERS_ID}"`); + if (dynamicRequireName) { + imports.push( + `import { ${ + isDynamicRequireModulesEnabled ? CREATE_COMMONJS_REQUIRE_EXPORT : COMMONJS_REQUIRE_EXPORT + } as ${dynamicRequireName} } from "${DYNAMIC_MODULES_ID}"` + ); + } + if (exportMode === 'module') { + imports.push( + `import { __module as ${moduleName} } from ${JSON.stringify(wrapId(id, MODULE_SUFFIX))}`, + `var ${exportsName} = ${moduleName}.exports` + ); + } else if (exportMode === 'exports') { + imports.push( + `import { __exports as ${exportsName} } from ${JSON.stringify(wrapId(id, EXPORTS_SUFFIX))}` + ); + } + const requiresBySource = collectSources(requireExpressions); + const requireTargets = await resolveRequireSourcesAndUpdateMeta( + id, + needsRequireWrapper ? IS_WRAPPED_COMMONJS : !isEsModule, + commonjsMeta, + Object.keys(requiresBySource).map((source) => { + return { + source, + isConditional: requiresBySource[source].every((require) => require.isInsideConditional) + }; + }) + ); + processRequireExpressions( + imports, + requireTargets, + requiresBySource, + getIgnoreTryCatchRequireStatementMode, + magicString + ); + return imports.length ? `${imports.join(';\n')};\n\n` : ''; + } + + return { + addRequireExpression, + rewriteRequireExpressionsAndGetImportBlock + }; +} + +function collectSources(requireExpressions) { + const requiresBySource = Object.create(null); + for (const requireExpression of requireExpressions) { + const { sourceId } = requireExpression; + if (!requiresBySource[sourceId]) { + requiresBySource[sourceId] = []; + } + const requires = requiresBySource[sourceId]; + requires.push(requireExpression); + } + return requiresBySource; +} + +function processRequireExpressions( + imports, + requireTargets, + requiresBySource, + getIgnoreTryCatchRequireStatementMode, + magicString +) { + const generateRequireName = getGenerateRequireName(); + for (const { source, id: resolvedId, isCommonJS } of requireTargets) { + const requires = requiresBySource[source]; + const name = generateRequireName(requires); + let usesRequired = false; + let needsImport = false; + for (const { node, usesReturnValue, toBeRemoved, isInsideTryBlock } of requires) { + const { canConvertRequire, shouldRemoveRequire } = + isInsideTryBlock && isWrappedId(resolvedId, EXTERNAL_SUFFIX) + ? getIgnoreTryCatchRequireStatementMode(source) + : { canConvertRequire: true, shouldRemoveRequire: false }; + if (shouldRemoveRequire) { + if (usesReturnValue) { + magicString.overwrite(node.start, node.end, 'undefined'); + } else { + magicString.remove(toBeRemoved.start, toBeRemoved.end); + } + } else if (canConvertRequire) { + needsImport = true; + if (isCommonJS === IS_WRAPPED_COMMONJS) { + magicString.overwrite(node.start, node.end, `${name}()`); + } else if (usesReturnValue) { + usesRequired = true; + magicString.overwrite(node.start, node.end, name); + } else { + magicString.remove(toBeRemoved.start, toBeRemoved.end); + } + } + } + if (needsImport) { + if (isCommonJS === IS_WRAPPED_COMMONJS) { + imports.push(`import { __require as ${name} } from ${JSON.stringify(resolvedId)}`); + } else { + imports.push(`import ${usesRequired ? `${name} from ` : ''}${JSON.stringify(resolvedId)}`); + } + } + } +} + +function getGenerateRequireName() { + let uid = 0; + return (requires) => { + let name; + const hasNameConflict = ({ scope }) => scope.contains(name); + do { + name = `require$$${uid}`; + uid += 1; + } while (requires.some(hasNameConflict)); + return name; + }; +} + +/* eslint-disable no-param-reassign, no-shadow, no-underscore-dangle, no-continue */ + + +const exportsPattern = /^(?:module\.)?exports(?:\.([a-zA-Z_$][a-zA-Z_$0-9]*))?$/; + +const functionType = /^(?:FunctionDeclaration|FunctionExpression|ArrowFunctionExpression)$/; + +// There are three different types of CommonJS modules, described by their +// "exportMode": +// - exports: Only assignments to (module.)exports properties +// - replace: A single assignment to module.exports itself +// - module: Anything else +// Special cases: +// - usesRequireWrapper +// - isWrapped +async function transformCommonjs( + parse, + code, + id, + isEsModule, + ignoreGlobal, + ignoreRequire, + ignoreDynamicRequires, + getIgnoreTryCatchRequireStatementMode, + sourceMap, + isDynamicRequireModulesEnabled, + dynamicRequireModules, + commonDir, + astCache, + defaultIsModuleExports, + needsRequireWrapper, + resolveRequireSourcesAndUpdateMeta, + isRequired, + checkDynamicRequire, + commonjsMeta +) { + const ast = astCache || tryParse(parse, code, id); + const magicString = new MagicString(code); + const uses = { + module: false, + exports: false, + global: false, + require: false + }; + const virtualDynamicRequirePath = + isDynamicRequireModulesEnabled && getVirtualPathForDynamicRequirePath(path.dirname(id), commonDir); + let scope = pluginutils.attachScopes(ast, 'scope'); + let lexicalDepth = 0; + let programDepth = 0; + let classBodyDepth = 0; + let currentTryBlockEnd = null; + let shouldWrap = false; + + const globals = new Set(); + // A conditionalNode is a node for which execution is not guaranteed. If such a node is a require + // or contains nested requires, those should be handled as function calls unless there is an + // unconditional require elsewhere. + let currentConditionalNodeEnd = null; + const conditionalNodes = new Set(); + const { addRequireExpression, rewriteRequireExpressionsAndGetImportBlock } = getRequireHandlers(); + + // See which names are assigned to. This is necessary to prevent + // illegally replacing `var foo = require('foo')` with `import foo from 'foo'`, + // where `foo` is later reassigned. (This happens in the wild. CommonJS, sigh) + const reassignedNames = new Set(); + const topLevelDeclarations = []; + const skippedNodes = new Set(); + const moduleAccessScopes = new Set([scope]); + const exportsAccessScopes = new Set([scope]); + const moduleExportsAssignments = []; + let firstTopLevelModuleExportsAssignment = null; + const exportsAssignmentsByName = new Map(); + const topLevelAssignments = new Set(); + const topLevelDefineCompiledEsmExpressions = []; + const replacedGlobal = []; + const replacedDynamicRequires = []; + const importedVariables = new Set(); + const indentExclusionRanges = []; + + estreeWalker.walk(ast, { + enter(node, parent) { + if (skippedNodes.has(node)) { + this.skip(); + return; + } + + if (currentTryBlockEnd !== null && node.start > currentTryBlockEnd) { + currentTryBlockEnd = null; + } + if (currentConditionalNodeEnd !== null && node.start > currentConditionalNodeEnd) { + currentConditionalNodeEnd = null; + } + if (currentConditionalNodeEnd === null && conditionalNodes.has(node)) { + currentConditionalNodeEnd = node.end; + } + + programDepth += 1; + if (node.scope) ({ scope } = node); + if (functionType.test(node.type)) lexicalDepth += 1; + if (sourceMap) { + magicString.addSourcemapLocation(node.start); + magicString.addSourcemapLocation(node.end); + } + + // eslint-disable-next-line default-case + switch (node.type) { + case 'AssignmentExpression': + if (node.left.type === 'MemberExpression') { + const flattened = getKeypath(node.left); + if (!flattened || scope.contains(flattened.name)) return; + + const exportsPatternMatch = exportsPattern.exec(flattened.keypath); + if (!exportsPatternMatch || flattened.keypath === 'exports') return; + + const [, exportName] = exportsPatternMatch; + uses[flattened.name] = true; + + // we're dealing with `module.exports = ...` or `[module.]exports.foo = ...` – + if (flattened.keypath === 'module.exports') { + moduleExportsAssignments.push(node); + if (programDepth > 3) { + moduleAccessScopes.add(scope); + } else if (!firstTopLevelModuleExportsAssignment) { + firstTopLevelModuleExportsAssignment = node; + } + } else if (exportName === KEY_COMPILED_ESM) { + if (programDepth > 3) { + shouldWrap = true; + } else { + // The "type" is either "module" or "exports" to discern + // assignments to module.exports vs exports if needed + topLevelDefineCompiledEsmExpressions.push({ node, type: flattened.name }); + } + } else { + const exportsAssignments = exportsAssignmentsByName.get(exportName) || { + nodes: [], + scopes: new Set() + }; + exportsAssignments.nodes.push({ node, type: flattened.name }); + exportsAssignments.scopes.add(scope); + exportsAccessScopes.add(scope); + exportsAssignmentsByName.set(exportName, exportsAssignments); + if (programDepth <= 3) { + topLevelAssignments.add(node); + } + } + + skippedNodes.add(node.left); + } else { + for (const name of pluginutils.extractAssignedNames(node.left)) { + reassignedNames.add(name); + } + } + return; + case 'CallExpression': { + const defineCompiledEsmType = getDefineCompiledEsmType(node); + if (defineCompiledEsmType) { + if (programDepth === 3 && parent.type === 'ExpressionStatement') { + // skip special handling for [module.]exports until we know we render this + skippedNodes.add(node.arguments[0]); + topLevelDefineCompiledEsmExpressions.push({ node, type: defineCompiledEsmType }); + } else { + shouldWrap = true; + } + return; + } + + // Transform require.resolve + if ( + isDynamicRequireModulesEnabled && + node.callee.object && + isRequire(node.callee.object, scope) && + node.callee.property.name === 'resolve' + ) { + checkDynamicRequire(node.start); + uses.require = true; + const requireNode = node.callee.object; + replacedDynamicRequires.push(requireNode); + skippedNodes.add(node.callee); + return; + } + + if (!isRequireExpression(node, scope)) { + const keypath = getKeypath(node.callee); + if (keypath && importedVariables.has(keypath.name)) { + // Heuristic to deoptimize requires after a required function has been called + currentConditionalNodeEnd = Infinity; + } + return; + } + + skippedNodes.add(node.callee); + uses.require = true; + + if (hasDynamicArguments(node)) { + if (isDynamicRequireModulesEnabled) { + checkDynamicRequire(node.start); + } + if (!ignoreDynamicRequires) { + replacedDynamicRequires.push(node.callee); + } + return; + } + + const requireStringArg = getRequireStringArg(node); + if (!ignoreRequire(requireStringArg)) { + const usesReturnValue = parent.type !== 'ExpressionStatement'; + const toBeRemoved = + parent.type === 'ExpressionStatement' && + (!currentConditionalNodeEnd || + // We should completely remove requires directly in a try-catch + // so that Rollup can remove up the try-catch + (currentTryBlockEnd !== null && currentTryBlockEnd < currentConditionalNodeEnd)) + ? parent + : node; + addRequireExpression( + requireStringArg, + node, + scope, + usesReturnValue, + currentTryBlockEnd !== null, + currentConditionalNodeEnd !== null, + toBeRemoved + ); + if (parent.type === 'VariableDeclarator' && parent.id.type === 'Identifier') { + for (const name of pluginutils.extractAssignedNames(parent.id)) { + importedVariables.add(name); + } + } + } + return; + } + case 'ClassBody': + classBodyDepth += 1; + return; + case 'ConditionalExpression': + case 'IfStatement': + // skip dead branches + if (isFalsy(node.test)) { + skippedNodes.add(node.consequent); + } else if (isTruthy(node.test)) { + if (node.alternate) { + skippedNodes.add(node.alternate); + } + } else { + conditionalNodes.add(node.consequent); + if (node.alternate) { + conditionalNodes.add(node.alternate); + } + } + return; + case 'ArrowFunctionExpression': + case 'FunctionDeclaration': + case 'FunctionExpression': + // requires in functions should be conditional unless it is an IIFE + if ( + currentConditionalNodeEnd === null && + !(parent.type === 'CallExpression' && parent.callee === node) + ) { + currentConditionalNodeEnd = node.end; + } + return; + case 'Identifier': { + const { name } = node; + if ( + !isReference(node, parent) || + scope.contains(name) || + (parent.type === 'PropertyDefinition' && parent.key === node) + ) + return; + switch (name) { + case 'require': + uses.require = true; + if (isNodeRequirePropertyAccess(parent)) { + return; + } + if (!ignoreDynamicRequires) { + if (isShorthandProperty(parent)) { + // as key and value are the same object, isReference regards + // both as references, so we need to skip now + skippedNodes.add(parent.value); + magicString.prependRight(node.start, 'require: '); + } + replacedDynamicRequires.push(node); + } + return; + case 'module': + case 'exports': + shouldWrap = true; + uses[name] = true; + return; + case 'global': + uses.global = true; + if (!ignoreGlobal) { + replacedGlobal.push(node); + } + return; + case 'define': + magicString.overwrite(node.start, node.end, 'undefined', { + storeName: true + }); + return; + default: + globals.add(name); + return; + } + } + case 'LogicalExpression': + // skip dead branches + if (node.operator === '&&') { + if (isFalsy(node.left)) { + skippedNodes.add(node.right); + } else if (!isTruthy(node.left)) { + conditionalNodes.add(node.right); + } + } else if (node.operator === '||') { + if (isTruthy(node.left)) { + skippedNodes.add(node.right); + } else if (!isFalsy(node.left)) { + conditionalNodes.add(node.right); + } + } + return; + case 'MemberExpression': + if (!isDynamicRequireModulesEnabled && isModuleRequire(node, scope)) { + uses.require = true; + replacedDynamicRequires.push(node); + skippedNodes.add(node.object); + skippedNodes.add(node.property); + } + return; + case 'ReturnStatement': + // if top-level return, we need to wrap it + if (lexicalDepth === 0) { + shouldWrap = true; + } + return; + case 'ThisExpression': + // rewrite top-level `this` as `commonjsHelpers.commonjsGlobal` + if (lexicalDepth === 0 && !classBodyDepth) { + uses.global = true; + if (!ignoreGlobal) { + replacedGlobal.push(node); + } + } + return; + case 'TryStatement': + if (currentTryBlockEnd === null) { + currentTryBlockEnd = node.block.end; + } + if (currentConditionalNodeEnd === null) { + currentConditionalNodeEnd = node.end; + } + return; + case 'UnaryExpression': + // rewrite `typeof module`, `typeof module.exports` and `typeof exports` (https://github.com/rollup/rollup-plugin-commonjs/issues/151) + if (node.operator === 'typeof') { + const flattened = getKeypath(node.argument); + if (!flattened) return; + + if (scope.contains(flattened.name)) return; + + if ( + !isEsModule && + (flattened.keypath === 'module.exports' || + flattened.keypath === 'module' || + flattened.keypath === 'exports') + ) { + magicString.overwrite(node.start, node.end, `'object'`, { + storeName: false + }); + } + } + return; + case 'VariableDeclaration': + if (!scope.parent) { + topLevelDeclarations.push(node); + } + return; + case 'TemplateElement': + if (node.value.raw.includes('\n')) { + indentExclusionRanges.push([node.start, node.end]); + } + } + }, + + leave(node) { + programDepth -= 1; + if (node.scope) scope = scope.parent; + if (functionType.test(node.type)) lexicalDepth -= 1; + if (node.type === 'ClassBody') classBodyDepth -= 1; + } + }); + + const nameBase = getName(id); + const exportsName = deconflict([...exportsAccessScopes], globals, nameBase); + const moduleName = deconflict([...moduleAccessScopes], globals, `${nameBase}Module`); + const requireName = deconflict([scope], globals, `require${capitalize(nameBase)}`); + const isRequiredName = deconflict([scope], globals, `hasRequired${capitalize(nameBase)}`); + const helpersName = deconflict([scope], globals, 'commonjsHelpers'); + const dynamicRequireName = + replacedDynamicRequires.length > 0 && + deconflict( + [scope], + globals, + isDynamicRequireModulesEnabled ? CREATE_COMMONJS_REQUIRE_EXPORT : COMMONJS_REQUIRE_EXPORT + ); + const deconflictedExportNames = Object.create(null); + for (const [exportName, { scopes }] of exportsAssignmentsByName) { + deconflictedExportNames[exportName] = deconflict([...scopes], globals, exportName); + } + + for (const node of replacedGlobal) { + magicString.overwrite(node.start, node.end, `${helpersName}.commonjsGlobal`, { + storeName: true + }); + } + for (const node of replacedDynamicRequires) { + magicString.overwrite( + node.start, + node.end, + isDynamicRequireModulesEnabled + ? `${dynamicRequireName}(${JSON.stringify(virtualDynamicRequirePath)})` + : dynamicRequireName, + { + contentOnly: true, + storeName: true + } + ); + } + + // We cannot wrap ES/mixed modules + shouldWrap = !isEsModule && (shouldWrap || (uses.exports && moduleExportsAssignments.length > 0)); + + if ( + !( + shouldWrap || + isRequired || + needsRequireWrapper || + uses.module || + uses.exports || + uses.require || + topLevelDefineCompiledEsmExpressions.length > 0 + ) && + (ignoreGlobal || !uses.global) + ) { + return { meta: { commonjs: { isCommonJS: false } } }; + } + + let leadingComment = ''; + if (code.startsWith('/*')) { + const commentEnd = code.indexOf('*/', 2) + 2; + leadingComment = `${code.slice(0, commentEnd)}\n`; + magicString.remove(0, commentEnd).trim(); + } + + let shebang = ''; + if (code.startsWith('#!')) { + const shebangEndPosition = code.indexOf('\n') + 1; + shebang = code.slice(0, shebangEndPosition); + magicString.remove(0, shebangEndPosition).trim(); + } + + const exportMode = isEsModule + ? 'none' + : shouldWrap + ? uses.module + ? 'module' + : 'exports' + : firstTopLevelModuleExportsAssignment + ? exportsAssignmentsByName.size === 0 && topLevelDefineCompiledEsmExpressions.length === 0 + ? 'replace' + : 'module' + : moduleExportsAssignments.length === 0 + ? 'exports' + : 'module'; + + const exportedExportsName = + exportMode === 'module' ? deconflict([], globals, `${nameBase}Exports`) : exportsName; + + const importBlock = await rewriteRequireExpressionsAndGetImportBlock( + magicString, + topLevelDeclarations, + reassignedNames, + helpersName, + dynamicRequireName, + moduleName, + exportsName, + id, + exportMode, + resolveRequireSourcesAndUpdateMeta, + needsRequireWrapper, + isEsModule, + isDynamicRequireModulesEnabled, + getIgnoreTryCatchRequireStatementMode, + commonjsMeta + ); + const usesRequireWrapper = commonjsMeta.isCommonJS === IS_WRAPPED_COMMONJS; + const exportBlock = isEsModule + ? '' + : rewriteExportsAndGetExportsBlock( + magicString, + moduleName, + exportsName, + exportedExportsName, + shouldWrap, + moduleExportsAssignments, + firstTopLevelModuleExportsAssignment, + exportsAssignmentsByName, + topLevelAssignments, + topLevelDefineCompiledEsmExpressions, + deconflictedExportNames, + code, + helpersName, + exportMode, + defaultIsModuleExports, + usesRequireWrapper, + requireName + ); + + if (shouldWrap) { + wrapCode(magicString, uses, moduleName, exportsName, indentExclusionRanges); + } + + if (usesRequireWrapper) { + magicString.trim().indent('\t', { + exclude: indentExclusionRanges + }); + const exported = exportMode === 'module' ? `${moduleName}.exports` : exportsName; + magicString.prepend( + `var ${isRequiredName}; + +function ${requireName} () { +\tif (${isRequiredName}) return ${exported}; +\t${isRequiredName} = 1; +` + ).append(` +\treturn ${exported}; +}`); + if (exportMode === 'replace') { + magicString.prepend(`var ${exportsName};\n`); + } + } + + magicString + .trim() + .prepend(shebang + leadingComment + importBlock) + .append(exportBlock); + + return { + code: magicString.toString(), + map: sourceMap ? magicString.generateMap() : null, + syntheticNamedExports: isEsModule || usesRequireWrapper ? false : '__moduleExports', + meta: { commonjs: { ...commonjsMeta, shebang } } + }; +} + +const PLUGIN_NAME = 'commonjs'; + +function commonjs(options = {}) { + const { + ignoreGlobal, + ignoreDynamicRequires, + requireReturnsDefault: requireReturnsDefaultOption, + defaultIsModuleExports: defaultIsModuleExportsOption, + esmExternals + } = options; + const extensions = options.extensions || ['.js']; + const filter = pluginutils.createFilter(options.include, options.exclude); + const isPossibleCjsId = (id) => { + const extName = path.extname(id); + return extName === '.cjs' || (extensions.includes(extName) && filter(id)); + }; + + const { strictRequiresFilter, detectCyclesAndConditional } = getStrictRequiresFilter(options); + + const getRequireReturnsDefault = + typeof requireReturnsDefaultOption === 'function' + ? requireReturnsDefaultOption + : () => requireReturnsDefaultOption; + + let esmExternalIds; + const isEsmExternal = + typeof esmExternals === 'function' + ? esmExternals + : Array.isArray(esmExternals) + ? ((esmExternalIds = new Set(esmExternals)), (id) => esmExternalIds.has(id)) + : () => esmExternals; + + const getDefaultIsModuleExports = + typeof defaultIsModuleExportsOption === 'function' + ? defaultIsModuleExportsOption + : () => + typeof defaultIsModuleExportsOption === 'boolean' ? defaultIsModuleExportsOption : 'auto'; + + const dynamicRequireRoot = + typeof options.dynamicRequireRoot === 'string' + ? path.resolve(options.dynamicRequireRoot) + : process.cwd(); + const { commonDir, dynamicRequireModules } = getDynamicRequireModules( + options.dynamicRequireTargets, + dynamicRequireRoot + ); + const isDynamicRequireModulesEnabled = dynamicRequireModules.size > 0; + + const ignoreRequire = + typeof options.ignore === 'function' + ? options.ignore + : Array.isArray(options.ignore) + ? (id) => options.ignore.includes(id) + : () => false; + + const getIgnoreTryCatchRequireStatementMode = (id) => { + const mode = + typeof options.ignoreTryCatch === 'function' + ? options.ignoreTryCatch(id) + : Array.isArray(options.ignoreTryCatch) + ? options.ignoreTryCatch.includes(id) + : typeof options.ignoreTryCatch !== 'undefined' + ? options.ignoreTryCatch + : true; + + return { + canConvertRequire: mode !== 'remove' && mode !== true, + shouldRemoveRequire: mode === 'remove' + }; + }; + + const { currentlyResolving, resolveId } = getResolveId(extensions, isPossibleCjsId); + + const sourceMap = options.sourceMap !== false; + + // Initialized in buildStart + let requireResolver; + + function transformAndCheckExports(code, id) { + const normalizedId = normalizePathSlashes(id); + const { isEsModule, hasDefaultExport, hasNamedExports, ast } = analyzeTopLevelStatements( + this.parse, + code, + id + ); + + const commonjsMeta = this.getModuleInfo(id).meta.commonjs || {}; + if (hasDefaultExport) { + commonjsMeta.hasDefaultExport = true; + } + if (hasNamedExports) { + commonjsMeta.hasNamedExports = true; + } + + if ( + !dynamicRequireModules.has(normalizedId) && + (!(hasCjsKeywords(code, ignoreGlobal) || requireResolver.isRequiredId(id)) || + (isEsModule && !options.transformMixedEsModules)) + ) { + commonjsMeta.isCommonJS = false; + return { meta: { commonjs: commonjsMeta } }; + } + + const needsRequireWrapper = + !isEsModule && (dynamicRequireModules.has(normalizedId) || strictRequiresFilter(id)); + + const checkDynamicRequire = (position) => { + const normalizedDynamicRequireRoot = normalizePathSlashes(dynamicRequireRoot); + + if (normalizedId.indexOf(normalizedDynamicRequireRoot) !== 0) { + this.error( + { + code: 'DYNAMIC_REQUIRE_OUTSIDE_ROOT', + normalizedId, + normalizedDynamicRequireRoot, + message: `"${normalizedId}" contains dynamic require statements but it is not within the current dynamicRequireRoot "${normalizedDynamicRequireRoot}". You should set dynamicRequireRoot to "${path.dirname( + normalizedId + )}" or one of its parent directories.` + }, + position + ); + } + }; + + return transformCommonjs( + this.parse, + code, + id, + isEsModule, + ignoreGlobal || isEsModule, + ignoreRequire, + ignoreDynamicRequires && !isDynamicRequireModulesEnabled, + getIgnoreTryCatchRequireStatementMode, + sourceMap, + isDynamicRequireModulesEnabled, + dynamicRequireModules, + commonDir, + ast, + getDefaultIsModuleExports(id), + needsRequireWrapper, + requireResolver.resolveRequireSourcesAndUpdateMeta(this), + requireResolver.isRequiredId(id), + checkDynamicRequire, + commonjsMeta + ); + } + + return { + name: PLUGIN_NAME, + + version, + + options(rawOptions) { + // We inject the resolver in the beginning so that "catch-all-resolver" like node-resolver + // do not prevent our plugin from resolving entry points ot proxies. + const plugins = Array.isArray(rawOptions.plugins) + ? [...rawOptions.plugins] + : rawOptions.plugins + ? [rawOptions.plugins] + : []; + plugins.unshift({ + name: 'commonjs--resolver', + resolveId + }); + return { ...rawOptions, plugins }; + }, + + buildStart({ plugins }) { + validateVersion(this.meta.rollupVersion, peerDependencies.rollup, 'rollup'); + const nodeResolve = plugins.find(({ name }) => name === 'node-resolve'); + if (nodeResolve) { + validateVersion(nodeResolve.version, '^13.0.6', '@rollup/plugin-node-resolve'); + } + if (options.namedExports != null) { + this.warn( + 'The namedExports option from "@rollup/plugin-commonjs" is deprecated. Named exports are now handled automatically.' + ); + } + requireResolver = getRequireResolver( + extensions, + detectCyclesAndConditional, + currentlyResolving + ); + }, + + buildEnd() { + if (options.strictRequires === 'debug') { + const wrappedIds = requireResolver.getWrappedIds(); + if (wrappedIds.length) { + this.warn({ + code: 'WRAPPED_IDS', + ids: wrappedIds, + message: `The commonjs plugin automatically wrapped the following files:\n[\n${wrappedIds + .map((id) => `\t${JSON.stringify(path.relative(process.cwd(), id))}`) + .join(',\n')}\n]` + }); + } else { + this.warn({ + code: 'WRAPPED_IDS', + ids: wrappedIds, + message: 'The commonjs plugin did not wrap any files.' + }); + } + } + }, + + load(id) { + if (id === HELPERS_ID) { + return getHelpersModule(); + } + + if (isWrappedId(id, MODULE_SUFFIX)) { + const name = getName(unwrapId(id, MODULE_SUFFIX)); + return { + code: `var ${name} = {exports: {}}; export {${name} as __module}`, + meta: { commonjs: { isCommonJS: false } } + }; + } + + if (isWrappedId(id, EXPORTS_SUFFIX)) { + const name = getName(unwrapId(id, EXPORTS_SUFFIX)); + return { + code: `var ${name} = {}; export {${name} as __exports}`, + meta: { commonjs: { isCommonJS: false } } + }; + } + + if (isWrappedId(id, EXTERNAL_SUFFIX)) { + const actualId = unwrapId(id, EXTERNAL_SUFFIX); + return getUnknownRequireProxy( + actualId, + isEsmExternal(actualId) ? getRequireReturnsDefault(actualId) : true + ); + } + + // entry suffix is just appended to not mess up relative external resolution + if (id.endsWith(ENTRY_SUFFIX)) { + const acutalId = id.slice(0, -ENTRY_SUFFIX.length); + const { + meta: { commonjs: commonjsMeta } + } = this.getModuleInfo(acutalId); + const shebang = commonjsMeta?.shebang ?? ''; + return getEntryProxy( + acutalId, + getDefaultIsModuleExports(acutalId), + this.getModuleInfo, + shebang + ); + } + + if (isWrappedId(id, ES_IMPORT_SUFFIX)) { + const actualId = unwrapId(id, ES_IMPORT_SUFFIX); + return getEsImportProxy(actualId, getDefaultIsModuleExports(actualId)); + } + + if (id === DYNAMIC_MODULES_ID) { + return getDynamicModuleRegistry( + isDynamicRequireModulesEnabled, + dynamicRequireModules, + commonDir, + ignoreDynamicRequires + ); + } + + if (isWrappedId(id, PROXY_SUFFIX)) { + const actualId = unwrapId(id, PROXY_SUFFIX); + return getStaticRequireProxy(actualId, getRequireReturnsDefault(actualId), this.load); + } + + return null; + }, + + shouldTransformCachedModule(...args) { + return requireResolver.shouldTransformCachedModule.call(this, ...args); + }, + + transform(code, id) { + if (!isPossibleCjsId(id)) return null; + + try { + return transformAndCheckExports.call(this, code, id); + } catch (err) { + return this.error(err, err.pos); + } + } + }; +} + +exports.default = commonjs; +module.exports = Object.assign(exports.default, exports); +//# sourceMappingURL=index.js.map diff --git a/node_modules/@rollup/plugin-commonjs/dist/es/index.js b/node_modules/@rollup/plugin-commonjs/dist/es/index.js new file mode 100644 index 0000000..e5f7d8c --- /dev/null +++ b/node_modules/@rollup/plugin-commonjs/dist/es/index.js @@ -0,0 +1,2301 @@ +import { basename, extname, dirname, relative, resolve, join, sep } from 'path'; +import { makeLegalIdentifier, createFilter, attachScopes, extractAssignedNames } from '@rollup/pluginutils'; +import { existsSync, readFileSync, statSync } from 'fs'; +import getCommonDir from 'commondir'; +import { glob } from 'glob'; +import { walk } from 'estree-walker'; +import MagicString from 'magic-string'; +import isReference from 'is-reference'; + +var version = "26.0.1"; +var peerDependencies = { + rollup: "^2.68.0||^3.0.0||^4.0.0" +}; + +function tryParse(parse, code, id) { + try { + return parse(code, { allowReturnOutsideFunction: true }); + } catch (err) { + err.message += ` in ${id}`; + throw err; + } +} + +const firstpassGlobal = /\b(?:require|module|exports|global)\b/; + +const firstpassNoGlobal = /\b(?:require|module|exports)\b/; + +function hasCjsKeywords(code, ignoreGlobal) { + const firstpass = ignoreGlobal ? firstpassNoGlobal : firstpassGlobal; + return firstpass.test(code); +} + +/* eslint-disable no-underscore-dangle */ + + +function analyzeTopLevelStatements(parse, code, id) { + const ast = tryParse(parse, code, id); + + let isEsModule = false; + let hasDefaultExport = false; + let hasNamedExports = false; + + for (const node of ast.body) { + switch (node.type) { + case 'ExportDefaultDeclaration': + isEsModule = true; + hasDefaultExport = true; + break; + case 'ExportNamedDeclaration': + isEsModule = true; + if (node.declaration) { + hasNamedExports = true; + } else { + for (const specifier of node.specifiers) { + if (specifier.exported.name === 'default') { + hasDefaultExport = true; + } else { + hasNamedExports = true; + } + } + } + break; + case 'ExportAllDeclaration': + isEsModule = true; + if (node.exported && node.exported.name === 'default') { + hasDefaultExport = true; + } else { + hasNamedExports = true; + } + break; + case 'ImportDeclaration': + isEsModule = true; + break; + } + } + + return { isEsModule, hasDefaultExport, hasNamedExports, ast }; +} + +/* eslint-disable import/prefer-default-export */ + + +function deconflict(scopes, globals, identifier) { + let i = 1; + let deconflicted = makeLegalIdentifier(identifier); + const hasConflicts = () => + scopes.some((scope) => scope.contains(deconflicted)) || globals.has(deconflicted); + + while (hasConflicts()) { + deconflicted = makeLegalIdentifier(`${identifier}_${i}`); + i += 1; + } + + for (const scope of scopes) { + scope.declarations[deconflicted] = true; + } + + return deconflicted; +} + +function getName(id) { + const name = makeLegalIdentifier(basename(id, extname(id))); + if (name !== 'index') { + return name; + } + return makeLegalIdentifier(basename(dirname(id))); +} + +function normalizePathSlashes(path) { + return path.replace(/\\/g, '/'); +} + +const getVirtualPathForDynamicRequirePath = (path, commonDir) => + `/${normalizePathSlashes(relative(commonDir, path))}`; + +function capitalize(name) { + return name[0].toUpperCase() + name.slice(1); +} + +function getStrictRequiresFilter({ strictRequires }) { + switch (strictRequires) { + case true: + return { strictRequiresFilter: () => true, detectCyclesAndConditional: false }; + // eslint-disable-next-line no-undefined + case undefined: + case 'auto': + case 'debug': + case null: + return { strictRequiresFilter: () => false, detectCyclesAndConditional: true }; + case false: + return { strictRequiresFilter: () => false, detectCyclesAndConditional: false }; + default: + if (typeof strictRequires === 'string' || Array.isArray(strictRequires)) { + return { + strictRequiresFilter: createFilter(strictRequires), + detectCyclesAndConditional: false + }; + } + throw new Error('Unexpected value for "strictRequires" option.'); + } +} + +function getPackageEntryPoint(dirPath) { + let entryPoint = 'index.js'; + + try { + if (existsSync(join(dirPath, 'package.json'))) { + entryPoint = + JSON.parse(readFileSync(join(dirPath, 'package.json'), { encoding: 'utf8' })).main || + entryPoint; + } + } catch (ignored) { + // ignored + } + + return entryPoint; +} + +function isDirectory(path) { + try { + if (statSync(path).isDirectory()) return true; + } catch (ignored) { + // Nothing to do here + } + return false; +} + +function getDynamicRequireModules(patterns, dynamicRequireRoot) { + const dynamicRequireModules = new Map(); + const dirNames = new Set(); + for (const pattern of !patterns || Array.isArray(patterns) ? patterns || [] : [patterns]) { + const isNegated = pattern.startsWith('!'); + const modifyMap = (targetPath, resolvedPath) => + isNegated + ? dynamicRequireModules.delete(targetPath) + : dynamicRequireModules.set(targetPath, resolvedPath); + for (const path of glob + .sync(isNegated ? pattern.substr(1) : pattern) + .sort((a, b) => a.localeCompare(b, 'en'))) { + const resolvedPath = resolve(path); + const requirePath = normalizePathSlashes(resolvedPath); + if (isDirectory(resolvedPath)) { + dirNames.add(resolvedPath); + const modulePath = resolve(join(resolvedPath, getPackageEntryPoint(path))); + modifyMap(requirePath, modulePath); + modifyMap(normalizePathSlashes(modulePath), modulePath); + } else { + dirNames.add(dirname(resolvedPath)); + modifyMap(requirePath, resolvedPath); + } + } + } + return { + commonDir: dirNames.size ? getCommonDir([...dirNames, dynamicRequireRoot]) : null, + dynamicRequireModules + }; +} + +const FAILED_REQUIRE_ERROR = `throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');`; + +const COMMONJS_REQUIRE_EXPORT = 'commonjsRequire'; +const CREATE_COMMONJS_REQUIRE_EXPORT = 'createCommonjsRequire'; + +function getDynamicModuleRegistry( + isDynamicRequireModulesEnabled, + dynamicRequireModules, + commonDir, + ignoreDynamicRequires +) { + if (!isDynamicRequireModulesEnabled) { + return `export function ${COMMONJS_REQUIRE_EXPORT}(path) { + ${FAILED_REQUIRE_ERROR} +}`; + } + const dynamicModuleImports = [...dynamicRequireModules.values()] + .map( + (id, index) => + `import ${ + id.endsWith('.json') ? `json${index}` : `{ __require as require${index} }` + } from ${JSON.stringify(id)};` + ) + .join('\n'); + const dynamicModuleProps = [...dynamicRequireModules.keys()] + .map( + (id, index) => + `\t\t${JSON.stringify(getVirtualPathForDynamicRequirePath(id, commonDir))}: ${ + id.endsWith('.json') ? `function () { return json${index}; }` : `require${index}` + }` + ) + .join(',\n'); + return `${dynamicModuleImports} + +var dynamicModules; + +function getDynamicModules() { + return dynamicModules || (dynamicModules = { +${dynamicModuleProps} + }); +} + +export function ${CREATE_COMMONJS_REQUIRE_EXPORT}(originalModuleDir) { + function handleRequire(path) { + var resolvedPath = commonjsResolve(path, originalModuleDir); + if (resolvedPath !== null) { + return getDynamicModules()[resolvedPath](); + } + ${ignoreDynamicRequires ? 'return require(path);' : FAILED_REQUIRE_ERROR} + } + handleRequire.resolve = function (path) { + var resolvedPath = commonjsResolve(path, originalModuleDir); + if (resolvedPath !== null) { + return resolvedPath; + } + return require.resolve(path); + } + return handleRequire; +} + +function commonjsResolve (path, originalModuleDir) { + var shouldTryNodeModules = isPossibleNodeModulesPath(path); + path = normalize(path); + var relPath; + if (path[0] === '/') { + originalModuleDir = ''; + } + var modules = getDynamicModules(); + var checkedExtensions = ['', '.js', '.json']; + while (true) { + if (!shouldTryNodeModules) { + relPath = normalize(originalModuleDir + '/' + path); + } else { + relPath = normalize(originalModuleDir + '/node_modules/' + path); + } + + if (relPath.endsWith('/..')) { + break; // Travelled too far up, avoid infinite loop + } + + for (var extensionIndex = 0; extensionIndex < checkedExtensions.length; extensionIndex++) { + var resolvedPath = relPath + checkedExtensions[extensionIndex]; + if (modules[resolvedPath]) { + return resolvedPath; + } + } + if (!shouldTryNodeModules) break; + var nextDir = normalize(originalModuleDir + '/..'); + if (nextDir === originalModuleDir) break; + originalModuleDir = nextDir; + } + return null; +} + +function isPossibleNodeModulesPath (modulePath) { + var c0 = modulePath[0]; + if (c0 === '/' || c0 === '\\\\') return false; + var c1 = modulePath[1], c2 = modulePath[2]; + if ((c0 === '.' && (!c1 || c1 === '/' || c1 === '\\\\')) || + (c0 === '.' && c1 === '.' && (!c2 || c2 === '/' || c2 === '\\\\'))) return false; + if (c1 === ':' && (c2 === '/' || c2 === '\\\\')) return false; + return true; +} + +function normalize (path) { + path = path.replace(/\\\\/g, '/'); + var parts = path.split('/'); + var slashed = parts[0] === ''; + for (var i = 1; i < parts.length; i++) { + if (parts[i] === '.' || parts[i] === '') { + parts.splice(i--, 1); + } + } + for (var i = 1; i < parts.length; i++) { + if (parts[i] !== '..') continue; + if (i > 0 && parts[i - 1] !== '..' && parts[i - 1] !== '.') { + parts.splice(--i, 2); + i--; + } + } + path = parts.join('/'); + if (slashed && path[0] !== '/') path = '/' + path; + else if (path.length === 0) path = '.'; + return path; +}`; +} + +const isWrappedId = (id, suffix) => id.endsWith(suffix); +const wrapId = (id, suffix) => `\0${id}${suffix}`; +const unwrapId = (wrappedId, suffix) => wrappedId.slice(1, -suffix.length); + +const PROXY_SUFFIX = '?commonjs-proxy'; +const WRAPPED_SUFFIX = '?commonjs-wrapped'; +const EXTERNAL_SUFFIX = '?commonjs-external'; +const EXPORTS_SUFFIX = '?commonjs-exports'; +const MODULE_SUFFIX = '?commonjs-module'; +const ENTRY_SUFFIX = '?commonjs-entry'; +const ES_IMPORT_SUFFIX = '?commonjs-es-import'; + +const DYNAMIC_MODULES_ID = '\0commonjs-dynamic-modules'; +const HELPERS_ID = '\0commonjsHelpers.js'; + +const IS_WRAPPED_COMMONJS = 'withRequireFunction'; + +// `x['default']` is used instead of `x.default` for backward compatibility with ES3 browsers. +// Minifiers like uglify will usually transpile it back if compatibility with ES3 is not enabled. +// This could be improved by inspecting Rollup's "generatedCode" option + +const HELPERS = ` +export var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +export function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +export function getDefaultExportFromNamespaceIfPresent (n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n; +} + +export function getDefaultExportFromNamespaceIfNotNamed (n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n; +} + +export function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var f = n.default; + if (typeof f == "function") { + var a = function a () { + if (this instanceof a) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} +`; + +function getHelpersModule() { + return HELPERS; +} + +function getUnknownRequireProxy(id, requireReturnsDefault) { + if (requireReturnsDefault === true || id.endsWith('.json')) { + return `export { default } from ${JSON.stringify(id)};`; + } + const name = getName(id); + const exported = + requireReturnsDefault === 'auto' + ? `import { getDefaultExportFromNamespaceIfNotNamed } from "${HELPERS_ID}"; export default /*@__PURE__*/getDefaultExportFromNamespaceIfNotNamed(${name});` + : requireReturnsDefault === 'preferred' + ? `import { getDefaultExportFromNamespaceIfPresent } from "${HELPERS_ID}"; export default /*@__PURE__*/getDefaultExportFromNamespaceIfPresent(${name});` + : !requireReturnsDefault + ? `import { getAugmentedNamespace } from "${HELPERS_ID}"; export default /*@__PURE__*/getAugmentedNamespace(${name});` + : `export default ${name};`; + return `import * as ${name} from ${JSON.stringify(id)}; ${exported}`; +} + +async function getStaticRequireProxy(id, requireReturnsDefault, loadModule) { + const name = getName(id); + const { + meta: { commonjs: commonjsMeta } + } = await loadModule({ id }); + if (!commonjsMeta) { + return getUnknownRequireProxy(id, requireReturnsDefault); + } + if (commonjsMeta.isCommonJS) { + return `export { __moduleExports as default } from ${JSON.stringify(id)};`; + } + if (!requireReturnsDefault) { + return `import { getAugmentedNamespace } from "${HELPERS_ID}"; import * as ${name} from ${JSON.stringify( + id + )}; export default /*@__PURE__*/getAugmentedNamespace(${name});`; + } + if ( + requireReturnsDefault !== true && + (requireReturnsDefault === 'namespace' || + !commonjsMeta.hasDefaultExport || + (requireReturnsDefault === 'auto' && commonjsMeta.hasNamedExports)) + ) { + return `import * as ${name} from ${JSON.stringify(id)}; export default ${name};`; + } + return `export { default } from ${JSON.stringify(id)};`; +} + +function getEntryProxy(id, defaultIsModuleExports, getModuleInfo, shebang) { + const { + meta: { commonjs: commonjsMeta }, + hasDefaultExport + } = getModuleInfo(id); + if (!commonjsMeta || commonjsMeta.isCommonJS !== IS_WRAPPED_COMMONJS) { + const stringifiedId = JSON.stringify(id); + let code = `export * from ${stringifiedId};`; + if (hasDefaultExport) { + code += `export { default } from ${stringifiedId};`; + } + return shebang + code; + } + const result = getEsImportProxy(id, defaultIsModuleExports); + return { + ...result, + code: shebang + result.code + }; +} + +function getEsImportProxy(id, defaultIsModuleExports) { + const name = getName(id); + const exportsName = `${name}Exports`; + const requireModule = `require${capitalize(name)}`; + let code = + `import { getDefaultExportFromCjs } from "${HELPERS_ID}";\n` + + `import { __require as ${requireModule} } from ${JSON.stringify(id)};\n` + + `var ${exportsName} = ${requireModule}();\n` + + `export { ${exportsName} as __moduleExports };`; + if (defaultIsModuleExports === true) { + code += `\nexport { ${exportsName} as default };`; + } else { + code += `export default /*@__PURE__*/getDefaultExportFromCjs(${exportsName});`; + } + return { + code, + syntheticNamedExports: '__moduleExports' + }; +} + +/* eslint-disable no-param-reassign, no-undefined */ + + +function getCandidatesForExtension(resolved, extension) { + return [resolved + extension, `${resolved}${sep}index${extension}`]; +} + +function getCandidates(resolved, extensions) { + return extensions.reduce( + (paths, extension) => paths.concat(getCandidatesForExtension(resolved, extension)), + [resolved] + ); +} + +function resolveExtensions(importee, importer, extensions) { + // not our problem + if (importee[0] !== '.' || !importer) return undefined; + + const resolved = resolve(dirname(importer), importee); + const candidates = getCandidates(resolved, extensions); + + for (let i = 0; i < candidates.length; i += 1) { + try { + const stats = statSync(candidates[i]); + if (stats.isFile()) return { id: candidates[i] }; + } catch (err) { + /* noop */ + } + } + + return undefined; +} + +function getResolveId(extensions, isPossibleCjsId) { + const currentlyResolving = new Map(); + + return { + /** + * This is a Maps of importers to Sets of require sources being resolved at + * the moment by resolveRequireSourcesAndUpdateMeta + */ + currentlyResolving, + async resolveId(importee, importer, resolveOptions) { + const customOptions = resolveOptions.custom; + // All logic below is specific to ES imports. + // Also, if we do not skip this logic for requires that are resolved while + // transforming a commonjs file, it can easily lead to deadlocks. + if ( + customOptions && + customOptions['node-resolve'] && + customOptions['node-resolve'].isRequire + ) { + return null; + } + const currentlyResolvingForParent = currentlyResolving.get(importer); + if (currentlyResolvingForParent && currentlyResolvingForParent.has(importee)) { + this.warn({ + code: 'THIS_RESOLVE_WITHOUT_OPTIONS', + message: + 'It appears a plugin has implemented a "resolveId" hook that uses "this.resolve" without forwarding the third "options" parameter of "resolveId". This is problematic as it can lead to wrong module resolutions especially for the node-resolve plugin and in certain cases cause early exit errors for the commonjs plugin.\nIn rare cases, this warning can appear if the same file is both imported and required from the same mixed ES/CommonJS module, in which case it can be ignored.', + url: 'https://rollupjs.org/guide/en/#resolveid' + }); + return null; + } + + if (isWrappedId(importee, WRAPPED_SUFFIX)) { + return unwrapId(importee, WRAPPED_SUFFIX); + } + + if ( + importee.endsWith(ENTRY_SUFFIX) || + isWrappedId(importee, MODULE_SUFFIX) || + isWrappedId(importee, EXPORTS_SUFFIX) || + isWrappedId(importee, PROXY_SUFFIX) || + isWrappedId(importee, ES_IMPORT_SUFFIX) || + isWrappedId(importee, EXTERNAL_SUFFIX) || + importee.startsWith(HELPERS_ID) || + importee === DYNAMIC_MODULES_ID + ) { + return importee; + } + + if (importer) { + if ( + importer === DYNAMIC_MODULES_ID || + // Proxies are only importing resolved ids, no need to resolve again + isWrappedId(importer, PROXY_SUFFIX) || + isWrappedId(importer, ES_IMPORT_SUFFIX) || + importer.endsWith(ENTRY_SUFFIX) + ) { + return importee; + } + if (isWrappedId(importer, EXTERNAL_SUFFIX)) { + // We need to return null for unresolved imports so that the proper warning is shown + if ( + !(await this.resolve( + importee, + importer, + Object.assign({ skipSelf: true }, resolveOptions) + )) + ) { + return null; + } + // For other external imports, we need to make sure they are handled as external + return { id: importee, external: true }; + } + } + + if (importee.startsWith('\0')) { + return null; + } + + // If this is an entry point or ESM import, we need to figure out if the importee is wrapped and + // if that is the case, we need to add a proxy. + const resolved = + (await this.resolve( + importee, + importer, + Object.assign({ skipSelf: true }, resolveOptions) + )) || resolveExtensions(importee, importer, extensions); + // Make sure that even if other plugins resolve again, we ignore our own proxies + if ( + !resolved || + resolved.external || + resolved.id.endsWith(ENTRY_SUFFIX) || + isWrappedId(resolved.id, ES_IMPORT_SUFFIX) || + !isPossibleCjsId(resolved.id) + ) { + return resolved; + } + const moduleInfo = await this.load(resolved); + const { + meta: { commonjs: commonjsMeta } + } = moduleInfo; + if (commonjsMeta) { + const { isCommonJS } = commonjsMeta; + if (isCommonJS) { + if (resolveOptions.isEntry) { + moduleInfo.moduleSideEffects = true; + // We must not precede entry proxies with a `\0` as that will mess up relative external resolution + return resolved.id + ENTRY_SUFFIX; + } + if (isCommonJS === IS_WRAPPED_COMMONJS) { + return { id: wrapId(resolved.id, ES_IMPORT_SUFFIX), meta: { commonjs: { resolved } } }; + } + } + } + return resolved; + } + }; +} + +function getRequireResolver(extensions, detectCyclesAndConditional, currentlyResolving) { + const knownCjsModuleTypes = Object.create(null); + const requiredIds = Object.create(null); + const unconditionallyRequiredIds = Object.create(null); + const dependencies = Object.create(null); + const getDependencies = (id) => dependencies[id] || (dependencies[id] = new Set()); + + const isCyclic = (id) => { + const dependenciesToCheck = new Set(getDependencies(id)); + for (const dependency of dependenciesToCheck) { + if (dependency === id) { + return true; + } + for (const childDependency of getDependencies(dependency)) { + dependenciesToCheck.add(childDependency); + } + } + return false; + }; + + // Once a module is listed here, its type (wrapped or not) is fixed and may + // not change for the rest of the current build, to not break already + // transformed modules. + const fullyAnalyzedModules = Object.create(null); + + const getTypeForFullyAnalyzedModule = (id) => { + const knownType = knownCjsModuleTypes[id]; + if (knownType !== true || !detectCyclesAndConditional || fullyAnalyzedModules[id]) { + return knownType; + } + if (isCyclic(id)) { + return (knownCjsModuleTypes[id] = IS_WRAPPED_COMMONJS); + } + return knownType; + }; + + const setInitialParentType = (id, initialCommonJSType) => { + // Fully analyzed modules may never change type + if (fullyAnalyzedModules[id]) { + return; + } + knownCjsModuleTypes[id] = initialCommonJSType; + if ( + detectCyclesAndConditional && + knownCjsModuleTypes[id] === true && + requiredIds[id] && + !unconditionallyRequiredIds[id] + ) { + knownCjsModuleTypes[id] = IS_WRAPPED_COMMONJS; + } + }; + + const analyzeRequiredModule = async (parentId, resolved, isConditional, loadModule) => { + const childId = resolved.id; + requiredIds[childId] = true; + if (!(isConditional || knownCjsModuleTypes[parentId] === IS_WRAPPED_COMMONJS)) { + unconditionallyRequiredIds[childId] = true; + } + + getDependencies(parentId).add(childId); + if (!isCyclic(childId)) { + // This makes sure the current transform handler waits for all direct + // dependencies to be loaded and transformed and therefore for all + // transitive CommonJS dependencies to be loaded as well so that all + // cycles have been found and knownCjsModuleTypes is reliable. + await loadModule(resolved); + } + }; + + const getTypeForImportedModule = async (resolved, loadModule) => { + if (resolved.id in knownCjsModuleTypes) { + // This handles cyclic ES dependencies + return knownCjsModuleTypes[resolved.id]; + } + const { + meta: { commonjs } + } = await loadModule(resolved); + return (commonjs && commonjs.isCommonJS) || false; + }; + + return { + getWrappedIds: () => + Object.keys(knownCjsModuleTypes).filter( + (id) => knownCjsModuleTypes[id] === IS_WRAPPED_COMMONJS + ), + isRequiredId: (id) => requiredIds[id], + async shouldTransformCachedModule({ + id: parentId, + resolvedSources, + meta: { commonjs: parentMeta } + }) { + // We explicitly track ES modules to handle circular imports + if (!(parentMeta && parentMeta.isCommonJS)) knownCjsModuleTypes[parentId] = false; + if (isWrappedId(parentId, ES_IMPORT_SUFFIX)) return false; + const parentRequires = parentMeta && parentMeta.requires; + if (parentRequires) { + setInitialParentType(parentId, parentMeta.initialCommonJSType); + await Promise.all( + parentRequires.map(({ resolved, isConditional }) => + analyzeRequiredModule(parentId, resolved, isConditional, this.load) + ) + ); + if (getTypeForFullyAnalyzedModule(parentId) !== parentMeta.isCommonJS) { + return true; + } + for (const { + resolved: { id } + } of parentRequires) { + if (getTypeForFullyAnalyzedModule(id) !== parentMeta.isRequiredCommonJS[id]) { + return true; + } + } + // Now that we decided to go with the cached copy, neither the parent + // module nor any of its children may change types anymore + fullyAnalyzedModules[parentId] = true; + for (const { + resolved: { id } + } of parentRequires) { + fullyAnalyzedModules[id] = true; + } + } + const parentRequireSet = new Set((parentRequires || []).map(({ resolved: { id } }) => id)); + return ( + await Promise.all( + Object.keys(resolvedSources) + .map((source) => resolvedSources[source]) + .filter(({ id, external }) => !(external || parentRequireSet.has(id))) + .map(async (resolved) => { + if (isWrappedId(resolved.id, ES_IMPORT_SUFFIX)) { + return ( + (await getTypeForImportedModule( + ( + await this.load({ id: resolved.id }) + ).meta.commonjs.resolved, + this.load + )) !== IS_WRAPPED_COMMONJS + ); + } + return (await getTypeForImportedModule(resolved, this.load)) === IS_WRAPPED_COMMONJS; + }) + ) + ).some((shouldTransform) => shouldTransform); + }, + /* eslint-disable no-param-reassign */ + resolveRequireSourcesAndUpdateMeta: + (rollupContext) => async (parentId, isParentCommonJS, parentMeta, sources) => { + parentMeta.initialCommonJSType = isParentCommonJS; + parentMeta.requires = []; + parentMeta.isRequiredCommonJS = Object.create(null); + setInitialParentType(parentId, isParentCommonJS); + const currentlyResolvingForParent = currentlyResolving.get(parentId) || new Set(); + currentlyResolving.set(parentId, currentlyResolvingForParent); + const requireTargets = await Promise.all( + sources.map(async ({ source, isConditional }) => { + // Never analyze or proxy internal modules + if (source.startsWith('\0')) { + return { id: source, allowProxy: false }; + } + currentlyResolvingForParent.add(source); + const resolved = + (await rollupContext.resolve(source, parentId, { + skipSelf: false, + custom: { 'node-resolve': { isRequire: true } } + })) || resolveExtensions(source, parentId, extensions); + currentlyResolvingForParent.delete(source); + if (!resolved) { + return { id: wrapId(source, EXTERNAL_SUFFIX), allowProxy: false }; + } + const childId = resolved.id; + if (resolved.external) { + return { id: wrapId(childId, EXTERNAL_SUFFIX), allowProxy: false }; + } + parentMeta.requires.push({ resolved, isConditional }); + await analyzeRequiredModule(parentId, resolved, isConditional, rollupContext.load); + return { id: childId, allowProxy: true }; + }) + ); + parentMeta.isCommonJS = getTypeForFullyAnalyzedModule(parentId); + fullyAnalyzedModules[parentId] = true; + return requireTargets.map(({ id: dependencyId, allowProxy }, index) => { + // eslint-disable-next-line no-multi-assign + const isCommonJS = (parentMeta.isRequiredCommonJS[dependencyId] = + getTypeForFullyAnalyzedModule(dependencyId)); + fullyAnalyzedModules[dependencyId] = true; + return { + source: sources[index].source, + id: allowProxy + ? isCommonJS === IS_WRAPPED_COMMONJS + ? wrapId(dependencyId, WRAPPED_SUFFIX) + : wrapId(dependencyId, PROXY_SUFFIX) + : dependencyId, + isCommonJS + }; + }); + }, + isCurrentlyResolving(source, parentId) { + const currentlyResolvingForParent = currentlyResolving.get(parentId); + return currentlyResolvingForParent && currentlyResolvingForParent.has(source); + } + }; +} + +function validateVersion(actualVersion, peerDependencyVersion, name) { + const versionRegexp = /\^(\d+\.\d+\.\d+)/g; + let minMajor = Infinity; + let minMinor = Infinity; + let minPatch = Infinity; + let foundVersion; + // eslint-disable-next-line no-cond-assign + while ((foundVersion = versionRegexp.exec(peerDependencyVersion))) { + const [foundMajor, foundMinor, foundPatch] = foundVersion[1].split('.').map(Number); + if (foundMajor < minMajor) { + minMajor = foundMajor; + minMinor = foundMinor; + minPatch = foundPatch; + } + } + if (!actualVersion) { + throw new Error( + `Insufficient ${name} version: "@rollup/plugin-commonjs" requires at least ${name}@${minMajor}.${minMinor}.${minPatch}.` + ); + } + const [major, minor, patch] = actualVersion.split('.').map(Number); + if ( + major < minMajor || + (major === minMajor && (minor < minMinor || (minor === minMinor && patch < minPatch))) + ) { + throw new Error( + `Insufficient ${name} version: "@rollup/plugin-commonjs" requires at least ${name}@${minMajor}.${minMinor}.${minPatch} but found ${name}@${actualVersion}.` + ); + } +} + +const operators = { + '==': (x) => equals(x.left, x.right, false), + + '!=': (x) => not(operators['=='](x)), + + '===': (x) => equals(x.left, x.right, true), + + '!==': (x) => not(operators['==='](x)), + + '!': (x) => isFalsy(x.argument), + + '&&': (x) => isTruthy(x.left) && isTruthy(x.right), + + '||': (x) => isTruthy(x.left) || isTruthy(x.right) +}; + +function not(value) { + return value === null ? value : !value; +} + +function equals(a, b, strict) { + if (a.type !== b.type) return null; + // eslint-disable-next-line eqeqeq + if (a.type === 'Literal') return strict ? a.value === b.value : a.value == b.value; + return null; +} + +function isTruthy(node) { + if (!node) return false; + if (node.type === 'Literal') return !!node.value; + if (node.type === 'ParenthesizedExpression') return isTruthy(node.expression); + if (node.operator in operators) return operators[node.operator](node); + return null; +} + +function isFalsy(node) { + return not(isTruthy(node)); +} + +function getKeypath(node) { + const parts = []; + + while (node.type === 'MemberExpression') { + if (node.computed) return null; + + parts.unshift(node.property.name); + // eslint-disable-next-line no-param-reassign + node = node.object; + } + + if (node.type !== 'Identifier') return null; + + const { name } = node; + parts.unshift(name); + + return { name, keypath: parts.join('.') }; +} + +const KEY_COMPILED_ESM = '__esModule'; + +function getDefineCompiledEsmType(node) { + const definedPropertyWithExports = getDefinePropertyCallName(node, 'exports'); + const definedProperty = + definedPropertyWithExports || getDefinePropertyCallName(node, 'module.exports'); + if (definedProperty && definedProperty.key === KEY_COMPILED_ESM) { + return isTruthy(definedProperty.value) + ? definedPropertyWithExports + ? 'exports' + : 'module' + : false; + } + return false; +} + +function getDefinePropertyCallName(node, targetName) { + const { + callee: { object, property } + } = node; + if (!object || object.type !== 'Identifier' || object.name !== 'Object') return; + if (!property || property.type !== 'Identifier' || property.name !== 'defineProperty') return; + if (node.arguments.length !== 3) return; + + const targetNames = targetName.split('.'); + const [target, key, value] = node.arguments; + if (targetNames.length === 1) { + if (target.type !== 'Identifier' || target.name !== targetNames[0]) { + return; + } + } + + if (targetNames.length === 2) { + if ( + target.type !== 'MemberExpression' || + target.object.name !== targetNames[0] || + target.property.name !== targetNames[1] + ) { + return; + } + } + + if (value.type !== 'ObjectExpression' || !value.properties) return; + + const valueProperty = value.properties.find((p) => p.key && p.key.name === 'value'); + if (!valueProperty || !valueProperty.value) return; + + // eslint-disable-next-line consistent-return + return { key: key.value, value: valueProperty.value }; +} + +function isShorthandProperty(parent) { + return parent && parent.type === 'Property' && parent.shorthand; +} + +function wrapCode(magicString, uses, moduleName, exportsName, indentExclusionRanges) { + const args = []; + const passedArgs = []; + if (uses.module) { + args.push('module'); + passedArgs.push(moduleName); + } + if (uses.exports) { + args.push('exports'); + passedArgs.push(uses.module ? `${moduleName}.exports` : exportsName); + } + magicString + .trim() + .indent('\t', { exclude: indentExclusionRanges }) + .prepend(`(function (${args.join(', ')}) {\n`) + // For some reason, this line is only indented correctly when using a + // require-wrapper if we have this leading space + .append(` \n} (${passedArgs.join(', ')}));`); +} + +function rewriteExportsAndGetExportsBlock( + magicString, + moduleName, + exportsName, + exportedExportsName, + wrapped, + moduleExportsAssignments, + firstTopLevelModuleExportsAssignment, + exportsAssignmentsByName, + topLevelAssignments, + defineCompiledEsmExpressions, + deconflictedExportNames, + code, + HELPERS_NAME, + exportMode, + defaultIsModuleExports, + usesRequireWrapper, + requireName +) { + const exports = []; + const exportDeclarations = []; + + if (usesRequireWrapper) { + getExportsWhenUsingRequireWrapper( + magicString, + wrapped, + exportMode, + exports, + moduleExportsAssignments, + exportsAssignmentsByName, + moduleName, + exportsName, + requireName, + defineCompiledEsmExpressions + ); + } else if (exportMode === 'replace') { + getExportsForReplacedModuleExports( + magicString, + exports, + exportDeclarations, + moduleExportsAssignments, + firstTopLevelModuleExportsAssignment, + exportsName, + defaultIsModuleExports, + HELPERS_NAME + ); + } else { + if (exportMode === 'module') { + exportDeclarations.push(`var ${exportedExportsName} = ${moduleName}.exports`); + exports.push(`${exportedExportsName} as __moduleExports`); + } else { + exports.push(`${exportsName} as __moduleExports`); + } + if (wrapped) { + exportDeclarations.push( + getDefaultExportDeclaration(exportedExportsName, defaultIsModuleExports, HELPERS_NAME) + ); + } else { + getExports( + magicString, + exports, + exportDeclarations, + moduleExportsAssignments, + exportsAssignmentsByName, + deconflictedExportNames, + topLevelAssignments, + moduleName, + exportsName, + exportedExportsName, + defineCompiledEsmExpressions, + HELPERS_NAME, + defaultIsModuleExports, + exportMode + ); + } + } + if (exports.length) { + exportDeclarations.push(`export { ${exports.join(', ')} }`); + } + + return `\n\n${exportDeclarations.join(';\n')};`; +} + +function getExportsWhenUsingRequireWrapper( + magicString, + wrapped, + exportMode, + exports, + moduleExportsAssignments, + exportsAssignmentsByName, + moduleName, + exportsName, + requireName, + defineCompiledEsmExpressions +) { + exports.push(`${requireName} as __require`); + if (wrapped) return; + if (exportMode === 'replace') { + rewriteModuleExportsAssignments(magicString, moduleExportsAssignments, exportsName); + } else { + rewriteModuleExportsAssignments(magicString, moduleExportsAssignments, `${moduleName}.exports`); + // Collect and rewrite named exports + for (const [exportName, { nodes }] of exportsAssignmentsByName) { + for (const { node, type } of nodes) { + magicString.overwrite( + node.start, + node.left.end, + `${ + exportMode === 'module' && type === 'module' ? `${moduleName}.exports` : exportsName + }.${exportName}` + ); + } + } + replaceDefineCompiledEsmExpressionsAndGetIfRestorable( + defineCompiledEsmExpressions, + magicString, + exportMode, + moduleName, + exportsName + ); + } +} + +function getExportsForReplacedModuleExports( + magicString, + exports, + exportDeclarations, + moduleExportsAssignments, + firstTopLevelModuleExportsAssignment, + exportsName, + defaultIsModuleExports, + HELPERS_NAME +) { + for (const { left } of moduleExportsAssignments) { + magicString.overwrite(left.start, left.end, exportsName); + } + magicString.prependRight(firstTopLevelModuleExportsAssignment.left.start, 'var '); + exports.push(`${exportsName} as __moduleExports`); + exportDeclarations.push( + getDefaultExportDeclaration(exportsName, defaultIsModuleExports, HELPERS_NAME) + ); +} + +function getDefaultExportDeclaration(exportedExportsName, defaultIsModuleExports, HELPERS_NAME) { + return `export default ${ + defaultIsModuleExports === true + ? exportedExportsName + : defaultIsModuleExports === false + ? `${exportedExportsName}.default` + : `/*@__PURE__*/${HELPERS_NAME}.getDefaultExportFromCjs(${exportedExportsName})` + }`; +} + +function getExports( + magicString, + exports, + exportDeclarations, + moduleExportsAssignments, + exportsAssignmentsByName, + deconflictedExportNames, + topLevelAssignments, + moduleName, + exportsName, + exportedExportsName, + defineCompiledEsmExpressions, + HELPERS_NAME, + defaultIsModuleExports, + exportMode +) { + let deconflictedDefaultExportName; + // Collect and rewrite module.exports assignments + for (const { left } of moduleExportsAssignments) { + magicString.overwrite(left.start, left.end, `${moduleName}.exports`); + } + + // Collect and rewrite named exports + for (const [exportName, { nodes }] of exportsAssignmentsByName) { + const deconflicted = deconflictedExportNames[exportName]; + let needsDeclaration = true; + for (const { node, type } of nodes) { + let replacement = `${deconflicted} = ${ + exportMode === 'module' && type === 'module' ? `${moduleName}.exports` : exportsName + }.${exportName}`; + if (needsDeclaration && topLevelAssignments.has(node)) { + replacement = `var ${replacement}`; + needsDeclaration = false; + } + magicString.overwrite(node.start, node.left.end, replacement); + } + if (needsDeclaration) { + magicString.prepend(`var ${deconflicted};\n`); + } + + if (exportName === 'default') { + deconflictedDefaultExportName = deconflicted; + } else { + exports.push(exportName === deconflicted ? exportName : `${deconflicted} as ${exportName}`); + } + } + + const isRestorableCompiledEsm = replaceDefineCompiledEsmExpressionsAndGetIfRestorable( + defineCompiledEsmExpressions, + magicString, + exportMode, + moduleName, + exportsName + ); + + if ( + defaultIsModuleExports === false || + (defaultIsModuleExports === 'auto' && + isRestorableCompiledEsm && + moduleExportsAssignments.length === 0) + ) { + // If there is no deconflictedDefaultExportName, then we use the namespace as + // fallback because there can be no "default" property on the namespace + exports.push(`${deconflictedDefaultExportName || exportedExportsName} as default`); + } else if ( + defaultIsModuleExports === true || + (!isRestorableCompiledEsm && moduleExportsAssignments.length === 0) + ) { + exports.push(`${exportedExportsName} as default`); + } else { + exportDeclarations.push( + getDefaultExportDeclaration(exportedExportsName, defaultIsModuleExports, HELPERS_NAME) + ); + } +} + +function rewriteModuleExportsAssignments(magicString, moduleExportsAssignments, exportsName) { + for (const { left } of moduleExportsAssignments) { + magicString.overwrite(left.start, left.end, exportsName); + } +} + +function replaceDefineCompiledEsmExpressionsAndGetIfRestorable( + defineCompiledEsmExpressions, + magicString, + exportMode, + moduleName, + exportsName +) { + let isRestorableCompiledEsm = false; + for (const { node, type } of defineCompiledEsmExpressions) { + isRestorableCompiledEsm = true; + const moduleExportsExpression = + node.type === 'CallExpression' ? node.arguments[0] : node.left.object; + magicString.overwrite( + moduleExportsExpression.start, + moduleExportsExpression.end, + exportMode === 'module' && type === 'module' ? `${moduleName}.exports` : exportsName + ); + } + return isRestorableCompiledEsm; +} + +function isRequireExpression(node, scope) { + if (!node) return false; + if (node.type !== 'CallExpression') return false; + + // Weird case of `require()` or `module.require()` without arguments + if (node.arguments.length === 0) return false; + + return isRequire(node.callee, scope); +} + +function isRequire(node, scope) { + return ( + (node.type === 'Identifier' && node.name === 'require' && !scope.contains('require')) || + (node.type === 'MemberExpression' && isModuleRequire(node, scope)) + ); +} + +function isModuleRequire({ object, property }, scope) { + return ( + object.type === 'Identifier' && + object.name === 'module' && + property.type === 'Identifier' && + property.name === 'require' && + !scope.contains('module') + ); +} + +function hasDynamicArguments(node) { + return ( + node.arguments.length > 1 || + (node.arguments[0].type !== 'Literal' && + (node.arguments[0].type !== 'TemplateLiteral' || node.arguments[0].expressions.length > 0)) + ); +} + +const reservedMethod = { resolve: true, cache: true, main: true }; + +function isNodeRequirePropertyAccess(parent) { + return parent && parent.property && reservedMethod[parent.property.name]; +} + +function getRequireStringArg(node) { + return node.arguments[0].type === 'Literal' + ? node.arguments[0].value + : node.arguments[0].quasis[0].value.cooked; +} + +function getRequireHandlers() { + const requireExpressions = []; + + function addRequireExpression( + sourceId, + node, + scope, + usesReturnValue, + isInsideTryBlock, + isInsideConditional, + toBeRemoved + ) { + requireExpressions.push({ + sourceId, + node, + scope, + usesReturnValue, + isInsideTryBlock, + isInsideConditional, + toBeRemoved + }); + } + + async function rewriteRequireExpressionsAndGetImportBlock( + magicString, + topLevelDeclarations, + reassignedNames, + helpersName, + dynamicRequireName, + moduleName, + exportsName, + id, + exportMode, + resolveRequireSourcesAndUpdateMeta, + needsRequireWrapper, + isEsModule, + isDynamicRequireModulesEnabled, + getIgnoreTryCatchRequireStatementMode, + commonjsMeta + ) { + const imports = []; + imports.push(`import * as ${helpersName} from "${HELPERS_ID}"`); + if (dynamicRequireName) { + imports.push( + `import { ${ + isDynamicRequireModulesEnabled ? CREATE_COMMONJS_REQUIRE_EXPORT : COMMONJS_REQUIRE_EXPORT + } as ${dynamicRequireName} } from "${DYNAMIC_MODULES_ID}"` + ); + } + if (exportMode === 'module') { + imports.push( + `import { __module as ${moduleName} } from ${JSON.stringify(wrapId(id, MODULE_SUFFIX))}`, + `var ${exportsName} = ${moduleName}.exports` + ); + } else if (exportMode === 'exports') { + imports.push( + `import { __exports as ${exportsName} } from ${JSON.stringify(wrapId(id, EXPORTS_SUFFIX))}` + ); + } + const requiresBySource = collectSources(requireExpressions); + const requireTargets = await resolveRequireSourcesAndUpdateMeta( + id, + needsRequireWrapper ? IS_WRAPPED_COMMONJS : !isEsModule, + commonjsMeta, + Object.keys(requiresBySource).map((source) => { + return { + source, + isConditional: requiresBySource[source].every((require) => require.isInsideConditional) + }; + }) + ); + processRequireExpressions( + imports, + requireTargets, + requiresBySource, + getIgnoreTryCatchRequireStatementMode, + magicString + ); + return imports.length ? `${imports.join(';\n')};\n\n` : ''; + } + + return { + addRequireExpression, + rewriteRequireExpressionsAndGetImportBlock + }; +} + +function collectSources(requireExpressions) { + const requiresBySource = Object.create(null); + for (const requireExpression of requireExpressions) { + const { sourceId } = requireExpression; + if (!requiresBySource[sourceId]) { + requiresBySource[sourceId] = []; + } + const requires = requiresBySource[sourceId]; + requires.push(requireExpression); + } + return requiresBySource; +} + +function processRequireExpressions( + imports, + requireTargets, + requiresBySource, + getIgnoreTryCatchRequireStatementMode, + magicString +) { + const generateRequireName = getGenerateRequireName(); + for (const { source, id: resolvedId, isCommonJS } of requireTargets) { + const requires = requiresBySource[source]; + const name = generateRequireName(requires); + let usesRequired = false; + let needsImport = false; + for (const { node, usesReturnValue, toBeRemoved, isInsideTryBlock } of requires) { + const { canConvertRequire, shouldRemoveRequire } = + isInsideTryBlock && isWrappedId(resolvedId, EXTERNAL_SUFFIX) + ? getIgnoreTryCatchRequireStatementMode(source) + : { canConvertRequire: true, shouldRemoveRequire: false }; + if (shouldRemoveRequire) { + if (usesReturnValue) { + magicString.overwrite(node.start, node.end, 'undefined'); + } else { + magicString.remove(toBeRemoved.start, toBeRemoved.end); + } + } else if (canConvertRequire) { + needsImport = true; + if (isCommonJS === IS_WRAPPED_COMMONJS) { + magicString.overwrite(node.start, node.end, `${name}()`); + } else if (usesReturnValue) { + usesRequired = true; + magicString.overwrite(node.start, node.end, name); + } else { + magicString.remove(toBeRemoved.start, toBeRemoved.end); + } + } + } + if (needsImport) { + if (isCommonJS === IS_WRAPPED_COMMONJS) { + imports.push(`import { __require as ${name} } from ${JSON.stringify(resolvedId)}`); + } else { + imports.push(`import ${usesRequired ? `${name} from ` : ''}${JSON.stringify(resolvedId)}`); + } + } + } +} + +function getGenerateRequireName() { + let uid = 0; + return (requires) => { + let name; + const hasNameConflict = ({ scope }) => scope.contains(name); + do { + name = `require$$${uid}`; + uid += 1; + } while (requires.some(hasNameConflict)); + return name; + }; +} + +/* eslint-disable no-param-reassign, no-shadow, no-underscore-dangle, no-continue */ + + +const exportsPattern = /^(?:module\.)?exports(?:\.([a-zA-Z_$][a-zA-Z_$0-9]*))?$/; + +const functionType = /^(?:FunctionDeclaration|FunctionExpression|ArrowFunctionExpression)$/; + +// There are three different types of CommonJS modules, described by their +// "exportMode": +// - exports: Only assignments to (module.)exports properties +// - replace: A single assignment to module.exports itself +// - module: Anything else +// Special cases: +// - usesRequireWrapper +// - isWrapped +async function transformCommonjs( + parse, + code, + id, + isEsModule, + ignoreGlobal, + ignoreRequire, + ignoreDynamicRequires, + getIgnoreTryCatchRequireStatementMode, + sourceMap, + isDynamicRequireModulesEnabled, + dynamicRequireModules, + commonDir, + astCache, + defaultIsModuleExports, + needsRequireWrapper, + resolveRequireSourcesAndUpdateMeta, + isRequired, + checkDynamicRequire, + commonjsMeta +) { + const ast = astCache || tryParse(parse, code, id); + const magicString = new MagicString(code); + const uses = { + module: false, + exports: false, + global: false, + require: false + }; + const virtualDynamicRequirePath = + isDynamicRequireModulesEnabled && getVirtualPathForDynamicRequirePath(dirname(id), commonDir); + let scope = attachScopes(ast, 'scope'); + let lexicalDepth = 0; + let programDepth = 0; + let classBodyDepth = 0; + let currentTryBlockEnd = null; + let shouldWrap = false; + + const globals = new Set(); + // A conditionalNode is a node for which execution is not guaranteed. If such a node is a require + // or contains nested requires, those should be handled as function calls unless there is an + // unconditional require elsewhere. + let currentConditionalNodeEnd = null; + const conditionalNodes = new Set(); + const { addRequireExpression, rewriteRequireExpressionsAndGetImportBlock } = getRequireHandlers(); + + // See which names are assigned to. This is necessary to prevent + // illegally replacing `var foo = require('foo')` with `import foo from 'foo'`, + // where `foo` is later reassigned. (This happens in the wild. CommonJS, sigh) + const reassignedNames = new Set(); + const topLevelDeclarations = []; + const skippedNodes = new Set(); + const moduleAccessScopes = new Set([scope]); + const exportsAccessScopes = new Set([scope]); + const moduleExportsAssignments = []; + let firstTopLevelModuleExportsAssignment = null; + const exportsAssignmentsByName = new Map(); + const topLevelAssignments = new Set(); + const topLevelDefineCompiledEsmExpressions = []; + const replacedGlobal = []; + const replacedDynamicRequires = []; + const importedVariables = new Set(); + const indentExclusionRanges = []; + + walk(ast, { + enter(node, parent) { + if (skippedNodes.has(node)) { + this.skip(); + return; + } + + if (currentTryBlockEnd !== null && node.start > currentTryBlockEnd) { + currentTryBlockEnd = null; + } + if (currentConditionalNodeEnd !== null && node.start > currentConditionalNodeEnd) { + currentConditionalNodeEnd = null; + } + if (currentConditionalNodeEnd === null && conditionalNodes.has(node)) { + currentConditionalNodeEnd = node.end; + } + + programDepth += 1; + if (node.scope) ({ scope } = node); + if (functionType.test(node.type)) lexicalDepth += 1; + if (sourceMap) { + magicString.addSourcemapLocation(node.start); + magicString.addSourcemapLocation(node.end); + } + + // eslint-disable-next-line default-case + switch (node.type) { + case 'AssignmentExpression': + if (node.left.type === 'MemberExpression') { + const flattened = getKeypath(node.left); + if (!flattened || scope.contains(flattened.name)) return; + + const exportsPatternMatch = exportsPattern.exec(flattened.keypath); + if (!exportsPatternMatch || flattened.keypath === 'exports') return; + + const [, exportName] = exportsPatternMatch; + uses[flattened.name] = true; + + // we're dealing with `module.exports = ...` or `[module.]exports.foo = ...` – + if (flattened.keypath === 'module.exports') { + moduleExportsAssignments.push(node); + if (programDepth > 3) { + moduleAccessScopes.add(scope); + } else if (!firstTopLevelModuleExportsAssignment) { + firstTopLevelModuleExportsAssignment = node; + } + } else if (exportName === KEY_COMPILED_ESM) { + if (programDepth > 3) { + shouldWrap = true; + } else { + // The "type" is either "module" or "exports" to discern + // assignments to module.exports vs exports if needed + topLevelDefineCompiledEsmExpressions.push({ node, type: flattened.name }); + } + } else { + const exportsAssignments = exportsAssignmentsByName.get(exportName) || { + nodes: [], + scopes: new Set() + }; + exportsAssignments.nodes.push({ node, type: flattened.name }); + exportsAssignments.scopes.add(scope); + exportsAccessScopes.add(scope); + exportsAssignmentsByName.set(exportName, exportsAssignments); + if (programDepth <= 3) { + topLevelAssignments.add(node); + } + } + + skippedNodes.add(node.left); + } else { + for (const name of extractAssignedNames(node.left)) { + reassignedNames.add(name); + } + } + return; + case 'CallExpression': { + const defineCompiledEsmType = getDefineCompiledEsmType(node); + if (defineCompiledEsmType) { + if (programDepth === 3 && parent.type === 'ExpressionStatement') { + // skip special handling for [module.]exports until we know we render this + skippedNodes.add(node.arguments[0]); + topLevelDefineCompiledEsmExpressions.push({ node, type: defineCompiledEsmType }); + } else { + shouldWrap = true; + } + return; + } + + // Transform require.resolve + if ( + isDynamicRequireModulesEnabled && + node.callee.object && + isRequire(node.callee.object, scope) && + node.callee.property.name === 'resolve' + ) { + checkDynamicRequire(node.start); + uses.require = true; + const requireNode = node.callee.object; + replacedDynamicRequires.push(requireNode); + skippedNodes.add(node.callee); + return; + } + + if (!isRequireExpression(node, scope)) { + const keypath = getKeypath(node.callee); + if (keypath && importedVariables.has(keypath.name)) { + // Heuristic to deoptimize requires after a required function has been called + currentConditionalNodeEnd = Infinity; + } + return; + } + + skippedNodes.add(node.callee); + uses.require = true; + + if (hasDynamicArguments(node)) { + if (isDynamicRequireModulesEnabled) { + checkDynamicRequire(node.start); + } + if (!ignoreDynamicRequires) { + replacedDynamicRequires.push(node.callee); + } + return; + } + + const requireStringArg = getRequireStringArg(node); + if (!ignoreRequire(requireStringArg)) { + const usesReturnValue = parent.type !== 'ExpressionStatement'; + const toBeRemoved = + parent.type === 'ExpressionStatement' && + (!currentConditionalNodeEnd || + // We should completely remove requires directly in a try-catch + // so that Rollup can remove up the try-catch + (currentTryBlockEnd !== null && currentTryBlockEnd < currentConditionalNodeEnd)) + ? parent + : node; + addRequireExpression( + requireStringArg, + node, + scope, + usesReturnValue, + currentTryBlockEnd !== null, + currentConditionalNodeEnd !== null, + toBeRemoved + ); + if (parent.type === 'VariableDeclarator' && parent.id.type === 'Identifier') { + for (const name of extractAssignedNames(parent.id)) { + importedVariables.add(name); + } + } + } + return; + } + case 'ClassBody': + classBodyDepth += 1; + return; + case 'ConditionalExpression': + case 'IfStatement': + // skip dead branches + if (isFalsy(node.test)) { + skippedNodes.add(node.consequent); + } else if (isTruthy(node.test)) { + if (node.alternate) { + skippedNodes.add(node.alternate); + } + } else { + conditionalNodes.add(node.consequent); + if (node.alternate) { + conditionalNodes.add(node.alternate); + } + } + return; + case 'ArrowFunctionExpression': + case 'FunctionDeclaration': + case 'FunctionExpression': + // requires in functions should be conditional unless it is an IIFE + if ( + currentConditionalNodeEnd === null && + !(parent.type === 'CallExpression' && parent.callee === node) + ) { + currentConditionalNodeEnd = node.end; + } + return; + case 'Identifier': { + const { name } = node; + if ( + !isReference(node, parent) || + scope.contains(name) || + (parent.type === 'PropertyDefinition' && parent.key === node) + ) + return; + switch (name) { + case 'require': + uses.require = true; + if (isNodeRequirePropertyAccess(parent)) { + return; + } + if (!ignoreDynamicRequires) { + if (isShorthandProperty(parent)) { + // as key and value are the same object, isReference regards + // both as references, so we need to skip now + skippedNodes.add(parent.value); + magicString.prependRight(node.start, 'require: '); + } + replacedDynamicRequires.push(node); + } + return; + case 'module': + case 'exports': + shouldWrap = true; + uses[name] = true; + return; + case 'global': + uses.global = true; + if (!ignoreGlobal) { + replacedGlobal.push(node); + } + return; + case 'define': + magicString.overwrite(node.start, node.end, 'undefined', { + storeName: true + }); + return; + default: + globals.add(name); + return; + } + } + case 'LogicalExpression': + // skip dead branches + if (node.operator === '&&') { + if (isFalsy(node.left)) { + skippedNodes.add(node.right); + } else if (!isTruthy(node.left)) { + conditionalNodes.add(node.right); + } + } else if (node.operator === '||') { + if (isTruthy(node.left)) { + skippedNodes.add(node.right); + } else if (!isFalsy(node.left)) { + conditionalNodes.add(node.right); + } + } + return; + case 'MemberExpression': + if (!isDynamicRequireModulesEnabled && isModuleRequire(node, scope)) { + uses.require = true; + replacedDynamicRequires.push(node); + skippedNodes.add(node.object); + skippedNodes.add(node.property); + } + return; + case 'ReturnStatement': + // if top-level return, we need to wrap it + if (lexicalDepth === 0) { + shouldWrap = true; + } + return; + case 'ThisExpression': + // rewrite top-level `this` as `commonjsHelpers.commonjsGlobal` + if (lexicalDepth === 0 && !classBodyDepth) { + uses.global = true; + if (!ignoreGlobal) { + replacedGlobal.push(node); + } + } + return; + case 'TryStatement': + if (currentTryBlockEnd === null) { + currentTryBlockEnd = node.block.end; + } + if (currentConditionalNodeEnd === null) { + currentConditionalNodeEnd = node.end; + } + return; + case 'UnaryExpression': + // rewrite `typeof module`, `typeof module.exports` and `typeof exports` (https://github.com/rollup/rollup-plugin-commonjs/issues/151) + if (node.operator === 'typeof') { + const flattened = getKeypath(node.argument); + if (!flattened) return; + + if (scope.contains(flattened.name)) return; + + if ( + !isEsModule && + (flattened.keypath === 'module.exports' || + flattened.keypath === 'module' || + flattened.keypath === 'exports') + ) { + magicString.overwrite(node.start, node.end, `'object'`, { + storeName: false + }); + } + } + return; + case 'VariableDeclaration': + if (!scope.parent) { + topLevelDeclarations.push(node); + } + return; + case 'TemplateElement': + if (node.value.raw.includes('\n')) { + indentExclusionRanges.push([node.start, node.end]); + } + } + }, + + leave(node) { + programDepth -= 1; + if (node.scope) scope = scope.parent; + if (functionType.test(node.type)) lexicalDepth -= 1; + if (node.type === 'ClassBody') classBodyDepth -= 1; + } + }); + + const nameBase = getName(id); + const exportsName = deconflict([...exportsAccessScopes], globals, nameBase); + const moduleName = deconflict([...moduleAccessScopes], globals, `${nameBase}Module`); + const requireName = deconflict([scope], globals, `require${capitalize(nameBase)}`); + const isRequiredName = deconflict([scope], globals, `hasRequired${capitalize(nameBase)}`); + const helpersName = deconflict([scope], globals, 'commonjsHelpers'); + const dynamicRequireName = + replacedDynamicRequires.length > 0 && + deconflict( + [scope], + globals, + isDynamicRequireModulesEnabled ? CREATE_COMMONJS_REQUIRE_EXPORT : COMMONJS_REQUIRE_EXPORT + ); + const deconflictedExportNames = Object.create(null); + for (const [exportName, { scopes }] of exportsAssignmentsByName) { + deconflictedExportNames[exportName] = deconflict([...scopes], globals, exportName); + } + + for (const node of replacedGlobal) { + magicString.overwrite(node.start, node.end, `${helpersName}.commonjsGlobal`, { + storeName: true + }); + } + for (const node of replacedDynamicRequires) { + magicString.overwrite( + node.start, + node.end, + isDynamicRequireModulesEnabled + ? `${dynamicRequireName}(${JSON.stringify(virtualDynamicRequirePath)})` + : dynamicRequireName, + { + contentOnly: true, + storeName: true + } + ); + } + + // We cannot wrap ES/mixed modules + shouldWrap = !isEsModule && (shouldWrap || (uses.exports && moduleExportsAssignments.length > 0)); + + if ( + !( + shouldWrap || + isRequired || + needsRequireWrapper || + uses.module || + uses.exports || + uses.require || + topLevelDefineCompiledEsmExpressions.length > 0 + ) && + (ignoreGlobal || !uses.global) + ) { + return { meta: { commonjs: { isCommonJS: false } } }; + } + + let leadingComment = ''; + if (code.startsWith('/*')) { + const commentEnd = code.indexOf('*/', 2) + 2; + leadingComment = `${code.slice(0, commentEnd)}\n`; + magicString.remove(0, commentEnd).trim(); + } + + let shebang = ''; + if (code.startsWith('#!')) { + const shebangEndPosition = code.indexOf('\n') + 1; + shebang = code.slice(0, shebangEndPosition); + magicString.remove(0, shebangEndPosition).trim(); + } + + const exportMode = isEsModule + ? 'none' + : shouldWrap + ? uses.module + ? 'module' + : 'exports' + : firstTopLevelModuleExportsAssignment + ? exportsAssignmentsByName.size === 0 && topLevelDefineCompiledEsmExpressions.length === 0 + ? 'replace' + : 'module' + : moduleExportsAssignments.length === 0 + ? 'exports' + : 'module'; + + const exportedExportsName = + exportMode === 'module' ? deconflict([], globals, `${nameBase}Exports`) : exportsName; + + const importBlock = await rewriteRequireExpressionsAndGetImportBlock( + magicString, + topLevelDeclarations, + reassignedNames, + helpersName, + dynamicRequireName, + moduleName, + exportsName, + id, + exportMode, + resolveRequireSourcesAndUpdateMeta, + needsRequireWrapper, + isEsModule, + isDynamicRequireModulesEnabled, + getIgnoreTryCatchRequireStatementMode, + commonjsMeta + ); + const usesRequireWrapper = commonjsMeta.isCommonJS === IS_WRAPPED_COMMONJS; + const exportBlock = isEsModule + ? '' + : rewriteExportsAndGetExportsBlock( + magicString, + moduleName, + exportsName, + exportedExportsName, + shouldWrap, + moduleExportsAssignments, + firstTopLevelModuleExportsAssignment, + exportsAssignmentsByName, + topLevelAssignments, + topLevelDefineCompiledEsmExpressions, + deconflictedExportNames, + code, + helpersName, + exportMode, + defaultIsModuleExports, + usesRequireWrapper, + requireName + ); + + if (shouldWrap) { + wrapCode(magicString, uses, moduleName, exportsName, indentExclusionRanges); + } + + if (usesRequireWrapper) { + magicString.trim().indent('\t', { + exclude: indentExclusionRanges + }); + const exported = exportMode === 'module' ? `${moduleName}.exports` : exportsName; + magicString.prepend( + `var ${isRequiredName}; + +function ${requireName} () { +\tif (${isRequiredName}) return ${exported}; +\t${isRequiredName} = 1; +` + ).append(` +\treturn ${exported}; +}`); + if (exportMode === 'replace') { + magicString.prepend(`var ${exportsName};\n`); + } + } + + magicString + .trim() + .prepend(shebang + leadingComment + importBlock) + .append(exportBlock); + + return { + code: magicString.toString(), + map: sourceMap ? magicString.generateMap() : null, + syntheticNamedExports: isEsModule || usesRequireWrapper ? false : '__moduleExports', + meta: { commonjs: { ...commonjsMeta, shebang } } + }; +} + +const PLUGIN_NAME = 'commonjs'; + +function commonjs(options = {}) { + const { + ignoreGlobal, + ignoreDynamicRequires, + requireReturnsDefault: requireReturnsDefaultOption, + defaultIsModuleExports: defaultIsModuleExportsOption, + esmExternals + } = options; + const extensions = options.extensions || ['.js']; + const filter = createFilter(options.include, options.exclude); + const isPossibleCjsId = (id) => { + const extName = extname(id); + return extName === '.cjs' || (extensions.includes(extName) && filter(id)); + }; + + const { strictRequiresFilter, detectCyclesAndConditional } = getStrictRequiresFilter(options); + + const getRequireReturnsDefault = + typeof requireReturnsDefaultOption === 'function' + ? requireReturnsDefaultOption + : () => requireReturnsDefaultOption; + + let esmExternalIds; + const isEsmExternal = + typeof esmExternals === 'function' + ? esmExternals + : Array.isArray(esmExternals) + ? ((esmExternalIds = new Set(esmExternals)), (id) => esmExternalIds.has(id)) + : () => esmExternals; + + const getDefaultIsModuleExports = + typeof defaultIsModuleExportsOption === 'function' + ? defaultIsModuleExportsOption + : () => + typeof defaultIsModuleExportsOption === 'boolean' ? defaultIsModuleExportsOption : 'auto'; + + const dynamicRequireRoot = + typeof options.dynamicRequireRoot === 'string' + ? resolve(options.dynamicRequireRoot) + : process.cwd(); + const { commonDir, dynamicRequireModules } = getDynamicRequireModules( + options.dynamicRequireTargets, + dynamicRequireRoot + ); + const isDynamicRequireModulesEnabled = dynamicRequireModules.size > 0; + + const ignoreRequire = + typeof options.ignore === 'function' + ? options.ignore + : Array.isArray(options.ignore) + ? (id) => options.ignore.includes(id) + : () => false; + + const getIgnoreTryCatchRequireStatementMode = (id) => { + const mode = + typeof options.ignoreTryCatch === 'function' + ? options.ignoreTryCatch(id) + : Array.isArray(options.ignoreTryCatch) + ? options.ignoreTryCatch.includes(id) + : typeof options.ignoreTryCatch !== 'undefined' + ? options.ignoreTryCatch + : true; + + return { + canConvertRequire: mode !== 'remove' && mode !== true, + shouldRemoveRequire: mode === 'remove' + }; + }; + + const { currentlyResolving, resolveId } = getResolveId(extensions, isPossibleCjsId); + + const sourceMap = options.sourceMap !== false; + + // Initialized in buildStart + let requireResolver; + + function transformAndCheckExports(code, id) { + const normalizedId = normalizePathSlashes(id); + const { isEsModule, hasDefaultExport, hasNamedExports, ast } = analyzeTopLevelStatements( + this.parse, + code, + id + ); + + const commonjsMeta = this.getModuleInfo(id).meta.commonjs || {}; + if (hasDefaultExport) { + commonjsMeta.hasDefaultExport = true; + } + if (hasNamedExports) { + commonjsMeta.hasNamedExports = true; + } + + if ( + !dynamicRequireModules.has(normalizedId) && + (!(hasCjsKeywords(code, ignoreGlobal) || requireResolver.isRequiredId(id)) || + (isEsModule && !options.transformMixedEsModules)) + ) { + commonjsMeta.isCommonJS = false; + return { meta: { commonjs: commonjsMeta } }; + } + + const needsRequireWrapper = + !isEsModule && (dynamicRequireModules.has(normalizedId) || strictRequiresFilter(id)); + + const checkDynamicRequire = (position) => { + const normalizedDynamicRequireRoot = normalizePathSlashes(dynamicRequireRoot); + + if (normalizedId.indexOf(normalizedDynamicRequireRoot) !== 0) { + this.error( + { + code: 'DYNAMIC_REQUIRE_OUTSIDE_ROOT', + normalizedId, + normalizedDynamicRequireRoot, + message: `"${normalizedId}" contains dynamic require statements but it is not within the current dynamicRequireRoot "${normalizedDynamicRequireRoot}". You should set dynamicRequireRoot to "${dirname( + normalizedId + )}" or one of its parent directories.` + }, + position + ); + } + }; + + return transformCommonjs( + this.parse, + code, + id, + isEsModule, + ignoreGlobal || isEsModule, + ignoreRequire, + ignoreDynamicRequires && !isDynamicRequireModulesEnabled, + getIgnoreTryCatchRequireStatementMode, + sourceMap, + isDynamicRequireModulesEnabled, + dynamicRequireModules, + commonDir, + ast, + getDefaultIsModuleExports(id), + needsRequireWrapper, + requireResolver.resolveRequireSourcesAndUpdateMeta(this), + requireResolver.isRequiredId(id), + checkDynamicRequire, + commonjsMeta + ); + } + + return { + name: PLUGIN_NAME, + + version, + + options(rawOptions) { + // We inject the resolver in the beginning so that "catch-all-resolver" like node-resolver + // do not prevent our plugin from resolving entry points ot proxies. + const plugins = Array.isArray(rawOptions.plugins) + ? [...rawOptions.plugins] + : rawOptions.plugins + ? [rawOptions.plugins] + : []; + plugins.unshift({ + name: 'commonjs--resolver', + resolveId + }); + return { ...rawOptions, plugins }; + }, + + buildStart({ plugins }) { + validateVersion(this.meta.rollupVersion, peerDependencies.rollup, 'rollup'); + const nodeResolve = plugins.find(({ name }) => name === 'node-resolve'); + if (nodeResolve) { + validateVersion(nodeResolve.version, '^13.0.6', '@rollup/plugin-node-resolve'); + } + if (options.namedExports != null) { + this.warn( + 'The namedExports option from "@rollup/plugin-commonjs" is deprecated. Named exports are now handled automatically.' + ); + } + requireResolver = getRequireResolver( + extensions, + detectCyclesAndConditional, + currentlyResolving + ); + }, + + buildEnd() { + if (options.strictRequires === 'debug') { + const wrappedIds = requireResolver.getWrappedIds(); + if (wrappedIds.length) { + this.warn({ + code: 'WRAPPED_IDS', + ids: wrappedIds, + message: `The commonjs plugin automatically wrapped the following files:\n[\n${wrappedIds + .map((id) => `\t${JSON.stringify(relative(process.cwd(), id))}`) + .join(',\n')}\n]` + }); + } else { + this.warn({ + code: 'WRAPPED_IDS', + ids: wrappedIds, + message: 'The commonjs plugin did not wrap any files.' + }); + } + } + }, + + load(id) { + if (id === HELPERS_ID) { + return getHelpersModule(); + } + + if (isWrappedId(id, MODULE_SUFFIX)) { + const name = getName(unwrapId(id, MODULE_SUFFIX)); + return { + code: `var ${name} = {exports: {}}; export {${name} as __module}`, + meta: { commonjs: { isCommonJS: false } } + }; + } + + if (isWrappedId(id, EXPORTS_SUFFIX)) { + const name = getName(unwrapId(id, EXPORTS_SUFFIX)); + return { + code: `var ${name} = {}; export {${name} as __exports}`, + meta: { commonjs: { isCommonJS: false } } + }; + } + + if (isWrappedId(id, EXTERNAL_SUFFIX)) { + const actualId = unwrapId(id, EXTERNAL_SUFFIX); + return getUnknownRequireProxy( + actualId, + isEsmExternal(actualId) ? getRequireReturnsDefault(actualId) : true + ); + } + + // entry suffix is just appended to not mess up relative external resolution + if (id.endsWith(ENTRY_SUFFIX)) { + const acutalId = id.slice(0, -ENTRY_SUFFIX.length); + const { + meta: { commonjs: commonjsMeta } + } = this.getModuleInfo(acutalId); + const shebang = commonjsMeta?.shebang ?? ''; + return getEntryProxy( + acutalId, + getDefaultIsModuleExports(acutalId), + this.getModuleInfo, + shebang + ); + } + + if (isWrappedId(id, ES_IMPORT_SUFFIX)) { + const actualId = unwrapId(id, ES_IMPORT_SUFFIX); + return getEsImportProxy(actualId, getDefaultIsModuleExports(actualId)); + } + + if (id === DYNAMIC_MODULES_ID) { + return getDynamicModuleRegistry( + isDynamicRequireModulesEnabled, + dynamicRequireModules, + commonDir, + ignoreDynamicRequires + ); + } + + if (isWrappedId(id, PROXY_SUFFIX)) { + const actualId = unwrapId(id, PROXY_SUFFIX); + return getStaticRequireProxy(actualId, getRequireReturnsDefault(actualId), this.load); + } + + return null; + }, + + shouldTransformCachedModule(...args) { + return requireResolver.shouldTransformCachedModule.call(this, ...args); + }, + + transform(code, id) { + if (!isPossibleCjsId(id)) return null; + + try { + return transformAndCheckExports.call(this, code, id); + } catch (err) { + return this.error(err, err.pos); + } + } + }; +} + +export { commonjs as default }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@rollup/plugin-commonjs/dist/es/package.json b/node_modules/@rollup/plugin-commonjs/dist/es/package.json new file mode 100644 index 0000000..7c34deb --- /dev/null +++ b/node_modules/@rollup/plugin-commonjs/dist/es/package.json @@ -0,0 +1 @@ +{"type":"module"} \ No newline at end of file diff --git a/node_modules/@rollup/plugin-commonjs/package.json b/node_modules/@rollup/plugin-commonjs/package.json new file mode 100644 index 0000000..61e4264 --- /dev/null +++ b/node_modules/@rollup/plugin-commonjs/package.json @@ -0,0 +1,90 @@ +{ + "name": "@rollup/plugin-commonjs", + "version": "26.0.1", + "publishConfig": { + "access": "public" + }, + "description": "Convert CommonJS modules to ES2015", + "license": "MIT", + "repository": { + "url": "rollup/plugins", + "directory": "packages/commonjs" + }, + "author": "Rich Harris ", + "homepage": "https://github.com/rollup/plugins/tree/master/packages/commonjs/#readme", + "bugs": "https://github.com/rollup/plugins/issues", + "main": "./dist/cjs/index.js", + "module": "./dist/es/index.js", + "exports": { + "types": "./types/index.d.ts", + "import": "./dist/es/index.js", + "default": "./dist/cjs/index.js" + }, + "engines": { + "node": ">=16.0.0 || 14 >= 14.17" + }, + "files": [ + "dist", + "!dist/**/*.map", + "types", + "README.md", + "LICENSE" + ], + "keywords": [ + "rollup", + "plugin", + "npm", + "modules", + "commonjs", + "require" + ], + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + }, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^10.4.1", + "is-reference": "1.2.1", + "magic-string": "^0.30.3" + }, + "devDependencies": { + "@rollup/plugin-json": "^5.0.0", + "@rollup/plugin-node-resolve": "^15.0.0", + "locate-character": "^2.0.5", + "require-relative": "^0.8.7", + "rollup": "^4.0.0-24", + "source-map": "^0.7.4", + "source-map-support": "^0.5.21", + "typescript": "^4.8.3" + }, + "types": "./types/index.d.ts", + "ava": { + "workerThreads": false, + "files": [ + "!**/fixtures/**", + "!**/helpers/**", + "!**/recipes/**", + "!**/types.ts" + ] + }, + "scripts": { + "build": "rollup -c", + "ci:coverage": "nyc pnpm test && nyc report --reporter=text-lcov > coverage.lcov", + "ci:lint": "pnpm build && pnpm lint", + "ci:lint:commits": "commitlint --from=${CIRCLE_BRANCH} --to=${CIRCLE_SHA1}", + "ci:test": "pnpm test -- --verbose && pnpm test:ts", + "prebuild": "del-cli dist", + "prerelease": "pnpm build", + "pretest": "pnpm build", + "release": "pnpm --workspace-root package:release $(pwd)", + "test": "ava", + "test:ts": "tsc types/index.d.ts test/types.ts --noEmit" + } +} \ No newline at end of file diff --git a/node_modules/@rollup/plugin-commonjs/types/index.d.ts b/node_modules/@rollup/plugin-commonjs/types/index.d.ts new file mode 100644 index 0000000..37453bd --- /dev/null +++ b/node_modules/@rollup/plugin-commonjs/types/index.d.ts @@ -0,0 +1,233 @@ +import type { FilterPattern } from '@rollup/pluginutils'; +import type { Plugin } from 'rollup'; + +type RequireReturnsDefaultOption = boolean | 'auto' | 'preferred' | 'namespace'; +type DefaultIsModuleExportsOption = boolean | 'auto'; + +interface RollupCommonJSOptions { + /** + * A picomatch pattern, or array of patterns, which specifies the files in + * the build the plugin should operate on. By default, all files with + * extension `".cjs"` or those in `extensions` are included, but you can + * narrow this list by only including specific files. These files will be + * analyzed and transpiled if either the analysis does not find ES module + * specific statements or `transformMixedEsModules` is `true`. + * @default undefined + */ + include?: FilterPattern; + /** + * A picomatch pattern, or array of patterns, which specifies the files in + * the build the plugin should _ignore_. By default, all files with + * extensions other than those in `extensions` or `".cjs"` are ignored, but you + * can exclude additional files. See also the `include` option. + * @default undefined + */ + exclude?: FilterPattern; + /** + * For extensionless imports, search for extensions other than .js in the + * order specified. Note that you need to make sure that non-JavaScript files + * are transpiled by another plugin first. + * @default [ '.js' ] + */ + extensions?: ReadonlyArray; + /** + * If true then uses of `global` won't be dealt with by this plugin + * @default false + */ + ignoreGlobal?: boolean; + /** + * If false, skips source map generation for CommonJS modules. This will + * improve performance. + * @default true + */ + sourceMap?: boolean; + /** + * Some `require` calls cannot be resolved statically to be translated to + * imports. + * When this option is set to `false`, the generated code will either + * directly throw an error when such a call is encountered or, when + * `dynamicRequireTargets` is used, when such a call cannot be resolved with a + * configured dynamic require target. + * Setting this option to `true` will instead leave the `require` call in the + * code or use it as a fallback for `dynamicRequireTargets`. + * @default false + */ + ignoreDynamicRequires?: boolean; + /** + * Instructs the plugin whether to enable mixed module transformations. This + * is useful in scenarios with modules that contain a mix of ES `import` + * statements and CommonJS `require` expressions. Set to `true` if `require` + * calls should be transformed to imports in mixed modules, or `false` if the + * `require` expressions should survive the transformation. The latter can be + * important if the code contains environment detection, or you are coding + * for an environment with special treatment for `require` calls such as + * ElectronJS. See also the `ignore` option. + * @default false + */ + transformMixedEsModules?: boolean; + /** + * By default, this plugin will try to hoist `require` statements as imports + * to the top of each file. While this works well for many code bases and + * allows for very efficient ESM output, it does not perfectly capture + * CommonJS semantics as the order of side effects like log statements may + * change. But it is especially problematic when there are circular `require` + * calls between CommonJS modules as those often rely on the lazy execution of + * nested `require` calls. + * + * Setting this option to `true` will wrap all CommonJS files in functions + * which are executed when they are required for the first time, preserving + * NodeJS semantics. Note that this can have an impact on the size and + * performance of the generated code. + * + * The default value of `"auto"` will only wrap CommonJS files when they are + * part of a CommonJS dependency cycle, e.g. an index file that is required by + * many of its dependencies. All other CommonJS files are hoisted. This is the + * recommended setting for most code bases. + * + * `false` will entirely prevent wrapping and hoist all files. This may still + * work depending on the nature of cyclic dependencies but will often cause + * problems. + * + * You can also provide a picomatch pattern, or array of patterns, to only + * specify a subset of files which should be wrapped in functions for proper + * `require` semantics. + * + * `"debug"` works like `"auto"` but after bundling, it will display a warning + * containing a list of ids that have been wrapped which can be used as + * picomatch pattern for fine-tuning. + * @default "auto" + */ + strictRequires?: boolean | FilterPattern; + /** + * Sometimes you have to leave require statements unconverted. Pass an array + * containing the IDs or a `id => boolean` function. + * @default [] + */ + ignore?: ReadonlyArray | ((id: string) => boolean); + /** + * In most cases, where `require` calls are inside a `try-catch` clause, + * they should be left unconverted as it requires an optional dependency + * that may or may not be installed beside the rolled up package. + * Due to the conversion of `require` to a static `import` - the call is + * hoisted to the top of the file, outside the `try-catch` clause. + * + * - `true`: Default. All `require` calls inside a `try` will be left unconverted. + * - `false`: All `require` calls inside a `try` will be converted as if the + * `try-catch` clause is not there. + * - `remove`: Remove all `require` calls from inside any `try` block. + * - `string[]`: Pass an array containing the IDs to left unconverted. + * - `((id: string) => boolean|'remove')`: Pass a function that controls + * individual IDs. + * + * @default true + */ + ignoreTryCatch?: + | boolean + | 'remove' + | ReadonlyArray + | ((id: string) => boolean | 'remove'); + /** + * Controls how to render imports from external dependencies. By default, + * this plugin assumes that all external dependencies are CommonJS. This + * means they are rendered as default imports to be compatible with e.g. + * NodeJS where ES modules can only import a default export from a CommonJS + * dependency. + * + * If you set `esmExternals` to `true`, this plugin assumes that all + * external dependencies are ES modules and respect the + * `requireReturnsDefault` option. If that option is not set, they will be + * rendered as namespace imports. + * + * You can also supply an array of ids to be treated as ES modules, or a + * function that will be passed each external id to determine whether it is + * an ES module. + * @default false + */ + esmExternals?: boolean | ReadonlyArray | ((id: string) => boolean); + /** + * Controls what is returned when requiring an ES module from a CommonJS file. + * When using the `esmExternals` option, this will also apply to external + * modules. By default, this plugin will render those imports as namespace + * imports i.e. + * + * ```js + * // input + * const foo = require('foo'); + * + * // output + * import * as foo from 'foo'; + * ``` + * + * However, there are some situations where this may not be desired. + * For these situations, you can change Rollup's behaviour either globally or + * per module. To change it globally, set the `requireReturnsDefault` option + * to one of the following values: + * + * - `false`: This is the default, requiring an ES module returns its + * namespace. This is the only option that will also add a marker + * `__esModule: true` to the namespace to support interop patterns in + * CommonJS modules that are transpiled ES modules. + * - `"namespace"`: Like `false`, requiring an ES module returns its + * namespace, but the plugin does not add the `__esModule` marker and thus + * creates more efficient code. For external dependencies when using + * `esmExternals: true`, no additional interop code is generated. + * - `"auto"`: This is complementary to how `output.exports: "auto"` works in + * Rollup: If a module has a default export and no named exports, requiring + * that module returns the default export. In all other cases, the namespace + * is returned. For external dependencies when using `esmExternals: true`, a + * corresponding interop helper is added. + * - `"preferred"`: If a module has a default export, requiring that module + * always returns the default export, no matter whether additional named + * exports exist. This is similar to how previous versions of this plugin + * worked. Again for external dependencies when using `esmExternals: true`, + * an interop helper is added. + * - `true`: This will always try to return the default export on require + * without checking if it actually exists. This can throw at build time if + * there is no default export. This is how external dependencies are handled + * when `esmExternals` is not used. The advantage over the other options is + * that, like `false`, this does not add an interop helper for external + * dependencies, keeping the code lean. + * + * To change this for individual modules, you can supply a function for + * `requireReturnsDefault` instead. This function will then be called once for + * each required ES module or external dependency with the corresponding id + * and allows you to return different values for different modules. + * @default false + */ + requireReturnsDefault?: + | RequireReturnsDefaultOption + | ((id: string) => RequireReturnsDefaultOption); + + /** + * @default "auto" + */ + defaultIsModuleExports?: + | DefaultIsModuleExportsOption + | ((id: string) => DefaultIsModuleExportsOption); + /** + * Some modules contain dynamic `require` calls, or require modules that + * contain circular dependencies, which are not handled well by static + * imports. Including those modules as `dynamicRequireTargets` will simulate a + * CommonJS (NodeJS-like) environment for them with support for dynamic + * dependencies. It also enables `strictRequires` for those modules. + * + * Note: In extreme cases, this feature may result in some paths being + * rendered as absolute in the final bundle. The plugin tries to avoid + * exposing paths from the local machine, but if you are `dynamicRequirePaths` + * with paths that are far away from your project's folder, that may require + * replacing strings like `"/Users/John/Desktop/foo-project/"` -> `"/"`. + */ + dynamicRequireTargets?: string | ReadonlyArray; + /** + * To avoid long paths when using the `dynamicRequireTargets` option, you can use this option to specify a directory + * that is a common parent for all files that use dynamic require statements. Using a directory higher up such as `/` + * may lead to unnecessarily long paths in the generated code and may expose directory names on your machine like your + * home directory name. By default, it uses the current working directory. + */ + dynamicRequireRoot?: string; +} + +/** + * Convert CommonJS modules to ES6, so they can be included in a Rollup bundle + */ +export default function commonjs(options?: RollupCommonJSOptions): Plugin; diff --git a/node_modules/@rollup/plugin-node-resolve/LICENSE b/node_modules/@rollup/plugin-node-resolve/LICENSE new file mode 100644 index 0000000..5e46702 --- /dev/null +++ b/node_modules/@rollup/plugin-node-resolve/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@rollup/plugin-node-resolve/README.md b/node_modules/@rollup/plugin-node-resolve/README.md new file mode 100755 index 0000000..40425d2 --- /dev/null +++ b/node_modules/@rollup/plugin-node-resolve/README.md @@ -0,0 +1,285 @@ +[npm]: https://img.shields.io/npm/v/@rollup/plugin-node-resolve +[npm-url]: https://www.npmjs.com/package/@rollup/plugin-node-resolve +[size]: https://packagephobia.now.sh/badge?p=@rollup/plugin-node-resolve +[size-url]: https://packagephobia.now.sh/result?p=@rollup/plugin-node-resolve + +[![npm][npm]][npm-url] +[![size][size]][size-url] +[![libera manifesto](https://img.shields.io/badge/libera-manifesto-lightgrey.svg)](https://liberamanifesto.com) + +# @rollup/plugin-node-resolve + +🍣 A Rollup plugin which locates modules using the [Node resolution algorithm](https://nodejs.org/api/modules.html#modules_all_together), for using third party modules in `node_modules` + +## Requirements + +This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v14.0.0+) and Rollup v2.78.0+. + +## Install + +Using npm: + +```console +npm install @rollup/plugin-node-resolve --save-dev +``` + +## Usage + +Create a `rollup.config.js` [configuration file](https://www.rollupjs.org/guide/en/#configuration-files) and import the plugin: + +```js +import { nodeResolve } from '@rollup/plugin-node-resolve'; + +export default { + input: 'src/index.js', + output: { + dir: 'output', + format: 'cjs' + }, + plugins: [nodeResolve()] +}; +``` + +Then call `rollup` either via the [CLI](https://www.rollupjs.org/guide/en/#command-line-reference) or the [API](https://www.rollupjs.org/guide/en/#javascript-api). + +## Package entrypoints + +This plugin supports the package entrypoints feature from node js, specified in the `exports` or `imports` field of a package. Check the [official documentation](https://nodejs.org/api/packages.html#packages_package_entry_points) for more information on how this works. This is the default behavior. In the abscence of these fields, the fields in `mainFields` will be the ones to be used. + +## Options + +### `exportConditions` + +Type: `Array[...String]`
+Default: `[]` + +Additional conditions of the package.json exports field to match when resolving modules. By default, this plugin looks for the `['default', 'module', 'import']` conditions when resolving imports. + +When using `@rollup/plugin-commonjs` v16 or higher, this plugin will use the `['default', 'module', 'require']` conditions when resolving require statements. + +Setting this option will add extra conditions on top of the default conditions. See https://nodejs.org/api/packages.html#packages_conditional_exports for more information. + +In order to get the [resolution behavior of Node.js](https://nodejs.org/api/packages.html#packages_conditional_exports), set this to `['node']`. + +### `browser` + +Type: `Boolean`
+Default: `false` + +If `true`, instructs the plugin to use the browser module resolutions in `package.json` and adds `'browser'` to `exportConditions` if it is not present so browser conditionals in `exports` are applied. If `false`, any browser properties in package files will be ignored. Alternatively, a value of `'browser'` can be added to both the `mainFields` and `exportConditions` options, however this option takes precedence over `mainFields`. + +> This option does not work when a package is using [package entrypoints](https://nodejs.org/api/packages.html#packages_package_entry_points) + +### `moduleDirectories` + +Type: `Array[...String]`
+Default: `['node_modules']` + +A list of directory names in which to recursively look for modules. + +### `modulePaths` + +Type: `Array[...String]`
+Default: `[]` + +A list of absolute paths to additional locations to search for modules. [This is analogous to setting the `NODE_PATH` environment variable for node](https://nodejs.org/api/modules.html#loading-from-the-global-folders). + +### `dedupe` + +Type: `Array[...String]`
+Default: `[]` + +An `Array` of modules names, which instructs the plugin to force resolving for the specified modules to the root `node_modules`. Helps to prevent bundling the same package multiple times if package is imported from dependencies. + +```js +dedupe: ['my-package', '@namespace/my-package']; +``` + +This will deduplicate bare imports such as: + +```js +import 'my-package'; +import '@namespace/my-package'; +``` + +And it will deduplicate deep imports such as: + +```js +import 'my-package/foo.js'; +import '@namespace/my-package/bar.js'; +``` + +### `extensions` + +Type: `Array[...String]`
+Default: `['.mjs', '.js', '.json', '.node']` + +Specifies the extensions of files that the plugin will operate on. + +### `jail` + +Type: `String`
+Default: `'/'` + +Locks the module search within specified path (e.g. chroot). Modules defined outside this path will be ignored by this plugin. + +### `mainFields` + +Type: `Array[...String]`
+Default: `['module', 'main']`
+Valid values: `['browser', 'jsnext:main', 'module', 'main']` + +Specifies the properties to scan within a `package.json`, used to determine the bundle entry point. The order of property names is significant, as the first-found property is used as the resolved entry point. If the array contains `'browser'`, key/values specified in the `package.json` `browser` property will be used. + +### `preferBuiltins` + +Type: `Boolean`
+Default: `true` (with warnings if a builtin module is used over a local version. Set to `true` to disable warning.) + +If `true`, the plugin will prefer built-in modules (e.g. `fs`, `path`). If `false`, the plugin will look for locally installed modules of the same name. + +### `modulesOnly` + +Type: `Boolean`
+Default: `false` + +If `true`, inspect resolved files to assert that they are ES2015 modules. + +### `resolveOnly` + +Type: `Array[...String|RegExp] | (module: string) => boolean`
+Default: `null` + +An `Array` which instructs the plugin to limit module resolution to those whose names match patterns in the array. _Note: Modules not matching any patterns will be marked as external._ + +Alternatively, you may pass in a function that returns a boolean to confirm whether the module should be included or not. + +Examples: + +- `resolveOnly: ['batman', /^@batcave\/.*$/]` +- `resolveOnly: module => !module.includes('joker')` + +### `rootDir` + +Type: `String`
+Default: `process.cwd()` + +Specifies the root directory from which to resolve modules. Typically used when resolving entry-point imports, and when resolving deduplicated modules. Useful when executing rollup in a package of a mono-repository. + +``` +// Set the root directory to be the parent folder +rootDir: path.join(process.cwd(), '..') +``` + +### `ignoreSideEffectsForRoot` + +If you use the `sideEffects` property in the package.json, by default this is respected for files in the root package. Set to `true` to ignore the `sideEffects` configuration for the root package. + +### `allowExportsFolderMapping` + +Older Node versions supported exports mappings of folders like + +```json +{ + "exports": { + "./foo/": "./dist/foo/" + } +} +``` + +This was deprecated with Node 14 and removed in Node 17, instead it is recommended to use exports patterns like + +```json +{ + "exports": { + "./foo/*": "./dist/foo/*" + } +} +``` + +But for backwards compatibility this behavior is still supported by enabling the `allowExportsFolderMapping` (defaults to `true`). +The default value might change in a futur major release. + +## Preserving symlinks + +This plugin honours the rollup [`preserveSymlinks`](https://rollupjs.org/guide/en/#preservesymlinks) option. + +## Using with @rollup/plugin-commonjs + +Since most packages in your node_modules folder are probably legacy CommonJS rather than JavaScript modules, you may need to use [@rollup/plugin-commonjs](https://github.com/rollup/plugins/tree/master/packages/commonjs): + +```js +// rollup.config.js +import { nodeResolve } from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; + +export default { + input: 'main.js', + output: { + file: 'bundle.js', + format: 'iife', + name: 'MyModule' + }, + plugins: [nodeResolve(), commonjs()] +}; +``` + +## Resolving Built-Ins (like `fs`) + +By default this plugin will prefer built-ins over local modules, marking them as external. + +See [`preferBuiltins`](#preferbuiltins). + +To provide stubbed versions of Node built-ins, use a plugin like [rollup-plugin-node-polyfills](https://github.com/ionic-team/rollup-plugin-node-polyfills) and set `preferBuiltins` to `false`. e.g. + +```js +import { nodeResolve } from '@rollup/plugin-node-resolve'; +import nodePolyfills from 'rollup-plugin-node-polyfills'; +export default ({ + input: ..., + plugins: [ + nodePolyfills(), + nodeResolve({ preferBuiltins: false }) + ], + external: builtins, + output: ... +}) +``` + +## Resolving Require Statements + +According to [NodeJS module resolution](https://nodejs.org/api/packages.html#packages_package_entry_points) `require` statements should resolve using the `require` condition in the package exports field, while es modules should use the `import` condition. + +The node resolve plugin uses `import` by default, you can opt into using the `require` semantics by passing an extra option to the resolve function: + +```js +this.resolve(importee, importer, { + skipSelf: true, + custom: { 'node-resolve': { isRequire: true } } +}); +``` + +## Resolve Options + +After this plugin resolved an import id to its target file in `node_modules`, it will invoke `this.resolve` again with the resolved id. It will pass the following information in the resolve options: + +```js +this.resolve(resolved.id, importer, { + custom: { + 'node-resolve': { + resolved, // the object with information from node.js resolve + importee // the original import id + } + } +}); +``` + +Your plugin can use the `importee` information to map an original import to its resolved file in `node_modules`, in a plugin hook such as `resolveId`. + +The `resolved` object contains the resolved id, which is passed as the first parameter. It also has a property `moduleSideEffects`, which may contain the value from the npm `package.json` field `sideEffects` or `null`. + +## Meta + +[CONTRIBUTING](/.github/CONTRIBUTING.md) + +[LICENSE (MIT)](/LICENSE) diff --git a/node_modules/@rollup/plugin-node-resolve/dist/cjs/index.js b/node_modules/@rollup/plugin-node-resolve/dist/cjs/index.js new file mode 100644 index 0000000..ac51c93 --- /dev/null +++ b/node_modules/@rollup/plugin-node-resolve/dist/cjs/index.js @@ -0,0 +1,1362 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var path = require('path'); +var isBuiltinModule = require('is-builtin-module'); +var deepMerge = require('deepmerge'); +var isModule = require('is-module'); +var fs = require('fs'); +var util = require('util'); +var url = require('url'); +var resolve = require('resolve'); +var pluginutils = require('@rollup/pluginutils'); + +var version = "15.2.3"; +var peerDependencies = { + rollup: "^2.78.0||^3.0.0||^4.0.0" +}; + +util.promisify(fs.access); +const readFile$1 = util.promisify(fs.readFile); +const realpath = util.promisify(fs.realpath); +const stat = util.promisify(fs.stat); +async function fileExists(filePath) { + try { + const res = await stat(filePath); + return res.isFile(); + } + catch { + return false; + } +} +async function resolveSymlink(path) { + return (await fileExists(path)) ? realpath(path) : path; +} + +const onError = (error) => { + if (error.code === 'ENOENT') { + return false; + } + throw error; +}; + +const makeCache = (fn) => { + const cache = new Map(); + const wrapped = async (param, done) => { + if (cache.has(param) === false) { + cache.set( + param, + fn(param).catch((err) => { + cache.delete(param); + throw err; + }) + ); + } + + try { + const result = cache.get(param); + const value = await result; + return done(null, value); + } catch (error) { + return done(error); + } + }; + + wrapped.clear = () => cache.clear(); + + return wrapped; +}; + +const isDirCached = makeCache(async (file) => { + try { + const stats = await stat(file); + return stats.isDirectory(); + } catch (error) { + return onError(error); + } +}); + +const isFileCached = makeCache(async (file) => { + try { + const stats = await stat(file); + return stats.isFile(); + } catch (error) { + return onError(error); + } +}); + +const readCachedFile = makeCache(readFile$1); + +function handleDeprecatedOptions(opts) { + const warnings = []; + + if (opts.customResolveOptions) { + const { customResolveOptions } = opts; + if (customResolveOptions.moduleDirectory) { + // eslint-disable-next-line no-param-reassign + opts.moduleDirectories = Array.isArray(customResolveOptions.moduleDirectory) + ? customResolveOptions.moduleDirectory + : [customResolveOptions.moduleDirectory]; + + warnings.push( + 'node-resolve: The `customResolveOptions.moduleDirectory` option has been deprecated. Use `moduleDirectories`, which must be an array.' + ); + } + + if (customResolveOptions.preserveSymlinks) { + throw new Error( + 'node-resolve: `customResolveOptions.preserveSymlinks` is no longer an option. We now always use the rollup `preserveSymlinks` option.' + ); + } + + [ + 'basedir', + 'package', + 'extensions', + 'includeCoreModules', + 'readFile', + 'isFile', + 'isDirectory', + 'realpath', + 'packageFilter', + 'pathFilter', + 'paths', + 'packageIterator' + ].forEach((resolveOption) => { + if (customResolveOptions[resolveOption]) { + throw new Error( + `node-resolve: \`customResolveOptions.${resolveOption}\` is no longer an option. If you need this, please open an issue.` + ); + } + }); + } + + return { warnings }; +} + +// returns the imported package name for bare module imports +function getPackageName(id) { + if (id.startsWith('.') || id.startsWith('/')) { + return null; + } + + const split = id.split('/'); + + // @my-scope/my-package/foo.js -> @my-scope/my-package + // @my-scope/my-package -> @my-scope/my-package + if (split[0][0] === '@') { + return `${split[0]}/${split[1]}`; + } + + // my-package/foo.js -> my-package + // my-package -> my-package + return split[0]; +} + +function getMainFields(options) { + let mainFields; + if (options.mainFields) { + ({ mainFields } = options); + } else { + mainFields = ['module', 'main']; + } + if (options.browser && mainFields.indexOf('browser') === -1) { + return ['browser'].concat(mainFields); + } + if (!mainFields.length) { + throw new Error('Please ensure at least one `mainFields` value is specified'); + } + return mainFields; +} + +function getPackageInfo(options) { + const { + cache, + extensions, + pkg, + mainFields, + preserveSymlinks, + useBrowserOverrides, + rootDir, + ignoreSideEffectsForRoot + } = options; + let { pkgPath } = options; + + if (cache.has(pkgPath)) { + return cache.get(pkgPath); + } + + // browserify/resolve doesn't realpath paths returned in its packageFilter callback + if (!preserveSymlinks) { + pkgPath = fs.realpathSync(pkgPath); + } + + const pkgRoot = path.dirname(pkgPath); + + const packageInfo = { + // copy as we are about to munge the `main` field of `pkg`. + packageJson: { ...pkg }, + + // path to package.json file + packageJsonPath: pkgPath, + + // directory containing the package.json + root: pkgRoot, + + // which main field was used during resolution of this module (main, module, or browser) + resolvedMainField: 'main', + + // whether the browser map was used to resolve the entry point to this module + browserMappedMain: false, + + // the entry point of the module with respect to the selected main field and any + // relevant browser mappings. + resolvedEntryPoint: '' + }; + + let overriddenMain = false; + for (let i = 0; i < mainFields.length; i++) { + const field = mainFields[i]; + if (typeof pkg[field] === 'string') { + pkg.main = pkg[field]; + packageInfo.resolvedMainField = field; + overriddenMain = true; + break; + } + } + + const internalPackageInfo = { + cachedPkg: pkg, + hasModuleSideEffects: () => null, + hasPackageEntry: overriddenMain !== false || mainFields.indexOf('main') !== -1, + packageBrowserField: + useBrowserOverrides && + typeof pkg.browser === 'object' && + Object.keys(pkg.browser).reduce((browser, key) => { + let resolved = pkg.browser[key]; + if (resolved && resolved[0] === '.') { + resolved = path.resolve(pkgRoot, resolved); + } + /* eslint-disable no-param-reassign */ + browser[key] = resolved; + if (key[0] === '.') { + const absoluteKey = path.resolve(pkgRoot, key); + browser[absoluteKey] = resolved; + if (!path.extname(key)) { + extensions.reduce((subBrowser, ext) => { + subBrowser[absoluteKey + ext] = subBrowser[key]; + return subBrowser; + }, browser); + } + } + return browser; + }, {}), + packageInfo + }; + + const browserMap = internalPackageInfo.packageBrowserField; + if ( + useBrowserOverrides && + typeof pkg.browser === 'object' && + // eslint-disable-next-line no-prototype-builtins + browserMap.hasOwnProperty(pkg.main) + ) { + packageInfo.resolvedEntryPoint = browserMap[pkg.main]; + packageInfo.browserMappedMain = true; + } else { + // index.node is technically a valid default entrypoint as well... + packageInfo.resolvedEntryPoint = path.resolve(pkgRoot, pkg.main || 'index.js'); + packageInfo.browserMappedMain = false; + } + + if (!ignoreSideEffectsForRoot || rootDir !== pkgRoot) { + const packageSideEffects = pkg.sideEffects; + if (typeof packageSideEffects === 'boolean') { + internalPackageInfo.hasModuleSideEffects = () => packageSideEffects; + } else if (Array.isArray(packageSideEffects)) { + const finalPackageSideEffects = packageSideEffects.map((sideEffect) => { + /* + * The array accepts simple glob patterns to the relevant files... Patterns like .css, which do not include a /, will be treated like **\/.css. + * https://webpack.js.org/guides/tree-shaking/ + */ + if (sideEffect.includes('/')) { + return sideEffect; + } + return `**/${sideEffect}`; + }); + internalPackageInfo.hasModuleSideEffects = pluginutils.createFilter(finalPackageSideEffects, null, { + resolve: pkgRoot + }); + } + } + + cache.set(pkgPath, internalPackageInfo); + return internalPackageInfo; +} + +function normalizeInput(input) { + if (Array.isArray(input)) { + return input; + } else if (typeof input === 'object') { + return Object.values(input); + } + + // otherwise it's a string + return [input]; +} + +/* eslint-disable no-await-in-loop */ +function isModuleDir(current, moduleDirs) { + return moduleDirs.some((dir) => current.endsWith(dir)); +} +async function findPackageJson(base, moduleDirs) { + const { root } = path.parse(base); + let current = base; + while (current !== root && !isModuleDir(current, moduleDirs)) { + const pkgJsonPath = path.join(current, 'package.json'); + if (await fileExists(pkgJsonPath)) { + const pkgJsonString = fs.readFileSync(pkgJsonPath, 'utf-8'); + return { pkgJson: JSON.parse(pkgJsonString), pkgPath: current, pkgJsonPath }; + } + current = path.resolve(current, '..'); + } + return null; +} +function isUrl(str) { + try { + return !!new URL(str); + } + catch (_) { + return false; + } +} +/** + * Conditions is an export object where all keys are conditions like 'node' (aka do not with '.') + */ +function isConditions(exports) { + return typeof exports === 'object' && Object.keys(exports).every((k) => !k.startsWith('.')); +} +/** + * Mappings is an export object where all keys start with '. + */ +function isMappings(exports) { + return typeof exports === 'object' && !isConditions(exports); +} +/** + * Check for mixed exports, which are exports where some keys start with '.' and some do not + */ +function isMixedExports(exports) { + const keys = Object.keys(exports); + return keys.some((k) => k.startsWith('.')) && keys.some((k) => !k.startsWith('.')); +} +function createBaseErrorMsg(importSpecifier, importer) { + return `Could not resolve import "${importSpecifier}" in ${importer}`; +} +function createErrorMsg(context, reason, isImports) { + const { importSpecifier, importer, pkgJsonPath } = context; + const base = createBaseErrorMsg(importSpecifier, importer); + const field = isImports ? 'imports' : 'exports'; + return `${base} using ${field} defined in ${pkgJsonPath}.${reason ? ` ${reason}` : ''}`; +} +class ResolveError extends Error { +} +class InvalidConfigurationError extends ResolveError { + constructor(context, reason) { + super(createErrorMsg(context, `Invalid "exports" field. ${reason}`)); + } +} +class InvalidModuleSpecifierError extends ResolveError { + constructor(context, isImports, reason) { + super(createErrorMsg(context, reason, isImports)); + } +} +class InvalidPackageTargetError extends ResolveError { + constructor(context, reason) { + super(createErrorMsg(context, reason)); + } +} + +/* eslint-disable no-await-in-loop, no-undefined */ +/** + * Check for invalid path segments + */ +function includesInvalidSegments(pathSegments, moduleDirs) { + const invalidSegments = ['', '.', '..', ...moduleDirs]; + // contains any "", ".", "..", or "node_modules" segments, including percent encoded variants + return pathSegments.some((v) => invalidSegments.includes(v) || invalidSegments.includes(decodeURI(v))); +} +async function resolvePackageTarget(context, { target, patternMatch, isImports }) { + // If target is a String, then + if (typeof target === 'string') { + // If target does not start with "./", then + if (!target.startsWith('./')) { + // If isImports is false, or if target starts with "../" or "/", or if target is a valid URL, then + if (!isImports || ['/', '../'].some((p) => target.startsWith(p)) || isUrl(target)) { + // Throw an Invalid Package Target error. + throw new InvalidPackageTargetError(context, `Invalid mapping: "${target}".`); + } + // If patternMatch is a String, then + if (typeof patternMatch === 'string') { + // Return PACKAGE_RESOLVE(target with every instance of "*" replaced by patternMatch, packageURL + "/") + const result = await context.resolveId(target.replace(/\*/g, patternMatch), context.pkgURL.href); + return result ? url.pathToFileURL(result.location).href : null; + } + // Return PACKAGE_RESOLVE(target, packageURL + "/"). + const result = await context.resolveId(target, context.pkgURL.href); + return result ? url.pathToFileURL(result.location).href : null; + } + // TODO: Drop if we do not support Node <= 16 anymore + // This behavior was removed in Node 17 (deprecated in Node 14), see DEP0148 + if (context.allowExportsFolderMapping) { + target = target.replace(/\/$/, '/*'); + } + // If target split on "/" or "\" + { + const pathSegments = target.split(/\/|\\/); + // after the first "." segment + const firstDot = pathSegments.indexOf('.'); + firstDot !== -1 && pathSegments.slice(firstDot); + if (firstDot !== -1 && + firstDot < pathSegments.length - 1 && + includesInvalidSegments(pathSegments.slice(firstDot + 1), context.moduleDirs)) { + throw new InvalidPackageTargetError(context, `Invalid mapping: "${target}".`); + } + } + // Let resolvedTarget be the URL resolution of the concatenation of packageURL and target. + const resolvedTarget = new URL(target, context.pkgURL); + // Assert: resolvedTarget is contained in packageURL. + if (!resolvedTarget.href.startsWith(context.pkgURL.href)) { + throw new InvalidPackageTargetError(context, `Resolved to ${resolvedTarget.href} which is outside package ${context.pkgURL.href}`); + } + // If patternMatch is null, then + if (!patternMatch) { + // Return resolvedTarget. + return resolvedTarget; + } + // If patternMatch split on "/" or "\" contains invalid segments + if (includesInvalidSegments(patternMatch.split(/\/|\\/), context.moduleDirs)) { + // throw an Invalid Module Specifier error. + throw new InvalidModuleSpecifierError(context); + } + // Return the URL resolution of resolvedTarget with every instance of "*" replaced with patternMatch. + return resolvedTarget.href.replace(/\*/g, patternMatch); + } + // Otherwise, if target is an Array, then + if (Array.isArray(target)) { + // If _target.length is zero, return null. + if (target.length === 0) { + return null; + } + let lastError = null; + // For each item in target, do + for (const item of target) { + // Let resolved be the result of PACKAGE_TARGET_RESOLVE of the item + // continuing the loop on any Invalid Package Target error. + try { + const resolved = await resolvePackageTarget(context, { + target: item, + patternMatch, + isImports + }); + // If resolved is undefined, continue the loop. + // Else Return resolved. + if (resolved !== undefined) { + return resolved; + } + } + catch (error) { + if (!(error instanceof InvalidPackageTargetError)) { + throw error; + } + else { + lastError = error; + } + } + } + // Return or throw the last fallback resolution null return or error + if (lastError) { + throw lastError; + } + return null; + } + // Otherwise, if target is a non-null Object, then + if (target && typeof target === 'object') { + // For each property of target + for (const [key, value] of Object.entries(target)) { + // If exports contains any index property keys, as defined in ECMA-262 6.1.7 Array Index, throw an Invalid Package Configuration error. + // TODO: We do not check if the key is a number here... + // If key equals "default" or conditions contains an entry for the key, then + if (key === 'default' || context.conditions.includes(key)) { + // Let targetValue be the value of the property in target. + // Let resolved be the result of PACKAGE_TARGET_RESOLVE of the targetValue + const resolved = await resolvePackageTarget(context, { + target: value, + patternMatch, + isImports + }); + // If resolved is equal to undefined, continue the loop. + // Return resolved. + if (resolved !== undefined) { + return resolved; + } + } + } + // Return undefined. + return undefined; + } + // Otherwise, if target is null, return null. + if (target === null) { + return null; + } + // Otherwise throw an Invalid Package Target error. + throw new InvalidPackageTargetError(context, `Invalid exports field.`); +} + +/* eslint-disable no-await-in-loop */ +/** + * Implementation of Node's `PATTERN_KEY_COMPARE` function + */ +function nodePatternKeyCompare(keyA, keyB) { + // Let baseLengthA be the index of "*" in keyA plus one, if keyA contains "*", or the length of keyA otherwise. + const baseLengthA = keyA.includes('*') ? keyA.indexOf('*') + 1 : keyA.length; + // Let baseLengthB be the index of "*" in keyB plus one, if keyB contains "*", or the length of keyB otherwise. + const baseLengthB = keyB.includes('*') ? keyB.indexOf('*') + 1 : keyB.length; + // if baseLengthA is greater, return -1, if lower 1 + const rval = baseLengthB - baseLengthA; + if (rval !== 0) + return rval; + // If keyA does not contain "*", return 1. + if (!keyA.includes('*')) + return 1; + // If keyB does not contain "*", return -1. + if (!keyB.includes('*')) + return -1; + // If the length of keyA is greater than the length of keyB, return -1. + // If the length of keyB is greater than the length of keyA, return 1. + // Else Return 0. + return keyB.length - keyA.length; +} +async function resolvePackageImportsExports(context, { matchKey, matchObj, isImports }) { + // If matchKey is a key of matchObj and does not contain "*", then + if (!matchKey.includes('*') && matchKey in matchObj) { + // Let target be the value of matchObj[matchKey]. + const target = matchObj[matchKey]; + // Return the result of PACKAGE_TARGET_RESOLVE(packageURL, target, null, isImports, conditions). + const resolved = await resolvePackageTarget(context, { target, patternMatch: '', isImports }); + return resolved; + } + // Let expansionKeys be the list of keys of matchObj containing only a single "*" + const expansionKeys = Object.keys(matchObj) + // Assert: ends with "/" or contains only a single "*". + .filter((k) => k.endsWith('/') || k.includes('*')) + // sorted by the sorting function PATTERN_KEY_COMPARE which orders in descending order of specificity. + .sort(nodePatternKeyCompare); + // For each key expansionKey in expansionKeys, do + for (const expansionKey of expansionKeys) { + const indexOfAsterisk = expansionKey.indexOf('*'); + // Let patternBase be the substring of expansionKey up to but excluding the first "*" character. + const patternBase = indexOfAsterisk === -1 ? expansionKey : expansionKey.substring(0, indexOfAsterisk); + // If matchKey starts with but is not equal to patternBase, then + if (matchKey.startsWith(patternBase) && matchKey !== patternBase) { + // Let patternTrailer be the substring of expansionKey from the index after the first "*" character. + const patternTrailer = indexOfAsterisk !== -1 ? expansionKey.substring(indexOfAsterisk + 1) : ''; + // If patternTrailer has zero length, + if (patternTrailer.length === 0 || + // or if matchKey ends with patternTrailer and the length of matchKey is greater than or equal to the length of expansionKey, then + (matchKey.endsWith(patternTrailer) && matchKey.length >= expansionKey.length)) { + // Let target be the value of matchObj[expansionKey]. + const target = matchObj[expansionKey]; + // Let patternMatch be the substring of matchKey starting at the index of the length of patternBase up to the length + // of matchKey minus the length of patternTrailer. + const patternMatch = matchKey.substring(patternBase.length, matchKey.length - patternTrailer.length); + // Return the result of PACKAGE_TARGET_RESOLVE + const resolved = await resolvePackageTarget(context, { + target, + patternMatch, + isImports + }); + return resolved; + } + } + } + throw new InvalidModuleSpecifierError(context, isImports); +} + +/** + * Implementation of PACKAGE_EXPORTS_RESOLVE + */ +async function resolvePackageExports(context, subpath, exports) { + // If exports is an Object with both a key starting with "." and a key not starting with "." + if (isMixedExports(exports)) { + // throw an Invalid Package Configuration error. + throw new InvalidConfigurationError(context, 'All keys must either start with ./, or without one.'); + } + // If subpath is equal to ".", then + if (subpath === '.') { + // Let mainExport be undefined. + let mainExport; + // If exports is a String or Array, or an Object containing no keys starting with ".", then + if (typeof exports === 'string' || Array.isArray(exports) || isConditions(exports)) { + // Set mainExport to exports + mainExport = exports; + // Otherwise if exports is an Object containing a "." property, then + } + else if (isMappings(exports)) { + // Set mainExport to exports["."] + mainExport = exports['.']; + } + // If mainExport is not undefined, then + if (mainExport) { + // Let resolved be the result of PACKAGE_TARGET_RESOLVE with target = mainExport + const resolved = await resolvePackageTarget(context, { + target: mainExport, + patternMatch: '', + isImports: false + }); + // If resolved is not null or undefined, return resolved. + if (resolved) { + return resolved; + } + } + // Otherwise, if exports is an Object and all keys of exports start with ".", then + } + else if (isMappings(exports)) { + // Let resolved be the result of PACKAGE_IMPORTS_EXPORTS_RESOLVE + const resolvedMatch = await resolvePackageImportsExports(context, { + matchKey: subpath, + matchObj: exports, + isImports: false + }); + // If resolved is not null or undefined, return resolved. + if (resolvedMatch) { + return resolvedMatch; + } + } + // Throw a Package Path Not Exported error. + throw new InvalidModuleSpecifierError(context); +} + +async function resolvePackageImports({ importSpecifier, importer, moduleDirs, conditions, resolveId }) { + const result = await findPackageJson(importer, moduleDirs); + if (!result) { + throw new Error(`${createBaseErrorMsg(importSpecifier, importer)}. Could not find a parent package.json.`); + } + const { pkgPath, pkgJsonPath, pkgJson } = result; + const pkgURL = url.pathToFileURL(`${pkgPath}/`); + const context = { + importer, + importSpecifier, + moduleDirs, + pkgURL, + pkgJsonPath, + conditions, + resolveId + }; + // Assert: specifier begins with "#". + if (!importSpecifier.startsWith('#')) { + throw new InvalidModuleSpecifierError(context, true, 'Invalid import specifier.'); + } + // If specifier is exactly equal to "#" or starts with "#/", then + if (importSpecifier === '#' || importSpecifier.startsWith('#/')) { + // Throw an Invalid Module Specifier error. + throw new InvalidModuleSpecifierError(context, true, 'Invalid import specifier.'); + } + const { imports } = pkgJson; + if (!imports) { + throw new InvalidModuleSpecifierError(context, true); + } + // Let packageURL be the result of LOOKUP_PACKAGE_SCOPE(parentURL). + // If packageURL is not null, then + return resolvePackageImportsExports(context, { + matchKey: importSpecifier, + matchObj: imports, + isImports: true + }); +} + +const resolveImportPath = util.promisify(resolve); +const readFile = util.promisify(fs.readFile); + +async function getPackageJson(importer, pkgName, resolveOptions, moduleDirectories) { + if (importer) { + const selfPackageJsonResult = await findPackageJson(importer, moduleDirectories); + if (selfPackageJsonResult && selfPackageJsonResult.pkgJson.name === pkgName) { + // the referenced package name is the current package + return selfPackageJsonResult; + } + } + + try { + const pkgJsonPath = await resolveImportPath(`${pkgName}/package.json`, resolveOptions); + const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf-8')); + return { pkgJsonPath, pkgJson, pkgPath: path.dirname(pkgJsonPath) }; + } catch (_) { + return null; + } +} + +async function resolveIdClassic({ + importSpecifier, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot +}) { + let hasModuleSideEffects = () => null; + let hasPackageEntry = true; + let packageBrowserField = false; + let packageInfo; + + const filter = (pkg, pkgPath) => { + const info = getPackageInfo({ + cache: packageInfoCache, + extensions, + pkg, + pkgPath, + mainFields, + preserveSymlinks, + useBrowserOverrides, + rootDir, + ignoreSideEffectsForRoot + }); + + ({ packageInfo, hasModuleSideEffects, hasPackageEntry, packageBrowserField } = info); + + return info.cachedPkg; + }; + + const resolveOptions = { + basedir: baseDir, + readFile: readCachedFile, + isFile: isFileCached, + isDirectory: isDirCached, + extensions, + includeCoreModules: false, + moduleDirectory: moduleDirectories, + paths: modulePaths, + preserveSymlinks, + packageFilter: filter + }; + + let location; + try { + location = await resolveImportPath(importSpecifier, resolveOptions); + } catch (error) { + if (error.code !== 'MODULE_NOT_FOUND') { + throw error; + } + return null; + } + + return { + location: preserveSymlinks ? location : await resolveSymlink(location), + hasModuleSideEffects, + hasPackageEntry, + packageBrowserField, + packageInfo + }; +} + +async function resolveWithExportMap({ + importer, + importSpecifier, + exportConditions, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot, + allowExportsFolderMapping +}) { + if (importSpecifier.startsWith('#')) { + // this is a package internal import, resolve using package imports field + const resolveResult = await resolvePackageImports({ + importSpecifier, + importer, + moduleDirs: moduleDirectories, + conditions: exportConditions, + resolveId(id /* , parent*/) { + return resolveIdClassic({ + importSpecifier: id, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths + }); + } + }); + + const location = url.fileURLToPath(resolveResult); + return { + location: preserveSymlinks ? location : await resolveSymlink(location), + hasModuleSideEffects: () => null, + hasPackageEntry: true, + packageBrowserField: false, + // eslint-disable-next-line no-undefined + packageInfo: undefined + }; + } + + const pkgName = getPackageName(importSpecifier); + if (pkgName) { + // it's a bare import, find the package.json and resolve using package exports if available + let hasModuleSideEffects = () => null; + let hasPackageEntry = true; + let packageBrowserField = false; + let packageInfo; + + const filter = (pkg, pkgPath) => { + const info = getPackageInfo({ + cache: packageInfoCache, + extensions, + pkg, + pkgPath, + mainFields, + preserveSymlinks, + useBrowserOverrides, + rootDir, + ignoreSideEffectsForRoot + }); + + ({ packageInfo, hasModuleSideEffects, hasPackageEntry, packageBrowserField } = info); + + return info.cachedPkg; + }; + + const resolveOptions = { + basedir: baseDir, + readFile: readCachedFile, + isFile: isFileCached, + isDirectory: isDirCached, + extensions, + includeCoreModules: false, + moduleDirectory: moduleDirectories, + paths: modulePaths, + preserveSymlinks, + packageFilter: filter + }; + + const result = await getPackageJson(importer, pkgName, resolveOptions, moduleDirectories); + + if (result && result.pkgJson.exports) { + const { pkgJson, pkgJsonPath } = result; + const subpath = + pkgName === importSpecifier ? '.' : `.${importSpecifier.substring(pkgName.length)}`; + const pkgDr = pkgJsonPath.replace('package.json', ''); + const pkgURL = url.pathToFileURL(pkgDr); + + const context = { + importer, + importSpecifier, + moduleDirs: moduleDirectories, + pkgURL, + pkgJsonPath, + allowExportsFolderMapping, + conditions: exportConditions + }; + const resolvedPackageExport = await resolvePackageExports(context, subpath, pkgJson.exports); + const location = url.fileURLToPath(resolvedPackageExport); + if (location) { + return { + location: preserveSymlinks ? location : await resolveSymlink(location), + hasModuleSideEffects, + hasPackageEntry, + packageBrowserField, + packageInfo + }; + } + } + } + + return null; +} + +async function resolveWithClassic({ + importer, + importSpecifierList, + exportConditions, + warn, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot +}) { + for (let i = 0; i < importSpecifierList.length; i++) { + // eslint-disable-next-line no-await-in-loop + const result = await resolveIdClassic({ + importer, + importSpecifier: importSpecifierList[i], + exportConditions, + warn, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot + }); + + if (result) { + return result; + } + } + + return null; +} + +// Resolves to the module if found or `null`. +// The first import specifier will first be attempted with the exports algorithm. +// If this is unsuccessful because export maps are not being used, then all of `importSpecifierList` +// will be tried with the classic resolution algorithm +async function resolveImportSpecifiers({ + importer, + importSpecifierList, + exportConditions, + warn, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot, + allowExportsFolderMapping +}) { + try { + const exportMapRes = await resolveWithExportMap({ + importer, + importSpecifier: importSpecifierList[0], + exportConditions, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot, + allowExportsFolderMapping + }); + if (exportMapRes) return exportMapRes; + } catch (error) { + if (error instanceof ResolveError) { + warn(error); + return null; + } + throw error; + } + + // package has no imports or exports, use classic node resolve + return resolveWithClassic({ + importer, + importSpecifierList, + exportConditions, + warn, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot + }); +} + +const versionRegexp = /\^(\d+\.\d+\.\d+)/g; + +function validateVersion(actualVersion, peerDependencyVersion) { + let minMajor = Infinity; + let minMinor = Infinity; + let minPatch = Infinity; + let foundVersion; + // eslint-disable-next-line no-cond-assign + while ((foundVersion = versionRegexp.exec(peerDependencyVersion))) { + const [foundMajor, foundMinor, foundPatch] = foundVersion[1].split('.').map(Number); + if (foundMajor < minMajor) { + minMajor = foundMajor; + minMinor = foundMinor; + minPatch = foundPatch; + } + } + if (!actualVersion) { + throw new Error( + `Insufficient Rollup version: "@rollup/plugin-node-resolve" requires at least rollup@${minMajor}.${minMinor}.${minPatch}.` + ); + } + const [major, minor, patch] = actualVersion.split('.').map(Number); + if ( + major < minMajor || + (major === minMajor && (minor < minMinor || (minor === minMinor && patch < minPatch))) + ) { + throw new Error( + `Insufficient rollup version: "@rollup/plugin-node-resolve" requires at least rollup@${minMajor}.${minMinor}.${minPatch} but found rollup@${actualVersion}.` + ); + } +} + +/* eslint-disable no-param-reassign, no-shadow, no-undefined */ + +const ES6_BROWSER_EMPTY = '\0node-resolve:empty.js'; +const deepFreeze = (object) => { + Object.freeze(object); + + for (const value of Object.values(object)) { + if (typeof value === 'object' && !Object.isFrozen(value)) { + deepFreeze(value); + } + } + + return object; +}; + +const baseConditions = ['default', 'module']; +const baseConditionsEsm = [...baseConditions, 'import']; +const baseConditionsCjs = [...baseConditions, 'require']; +const defaults = { + dedupe: [], + // It's important that .mjs is listed before .js so that Rollup will interpret npm modules + // which deploy both ESM .mjs and CommonJS .js files as ESM. + extensions: ['.mjs', '.js', '.json', '.node'], + resolveOnly: [], + moduleDirectories: ['node_modules'], + modulePaths: [], + ignoreSideEffectsForRoot: false, + // TODO: set to false in next major release or remove + allowExportsFolderMapping: true +}; +const DEFAULTS = deepFreeze(deepMerge({}, defaults)); + +function nodeResolve(opts = {}) { + const { warnings } = handleDeprecatedOptions(opts); + + const options = { ...defaults, ...opts }; + const { extensions, jail, moduleDirectories, modulePaths, ignoreSideEffectsForRoot } = options; + const conditionsEsm = [...baseConditionsEsm, ...(options.exportConditions || [])]; + const conditionsCjs = [...baseConditionsCjs, ...(options.exportConditions || [])]; + const packageInfoCache = new Map(); + const idToPackageInfo = new Map(); + const mainFields = getMainFields(options); + const useBrowserOverrides = mainFields.indexOf('browser') !== -1; + const isPreferBuiltinsSet = options.preferBuiltins === true || options.preferBuiltins === false; + const preferBuiltins = isPreferBuiltinsSet ? options.preferBuiltins : true; + const rootDir = path.resolve(options.rootDir || process.cwd()); + let { dedupe } = options; + let rollupOptions; + + if (moduleDirectories.some((name) => name.includes('/'))) { + throw new Error( + '`moduleDirectories` option must only contain directory names. If you want to load modules from somewhere not supported by the default module resolution algorithm, see `modulePaths`.' + ); + } + + if (typeof dedupe !== 'function') { + dedupe = (importee) => + options.dedupe.includes(importee) || options.dedupe.includes(getPackageName(importee)); + } + + // creates a function from the patterns to test if a particular module should be bundled. + const allowPatterns = (patterns) => { + const regexPatterns = patterns.map((pattern) => { + if (pattern instanceof RegExp) { + return pattern; + } + const normalized = pattern.replace(/[\\^$*+?.()|[\]{}]/g, '\\$&'); + return new RegExp(`^${normalized}$`); + }); + return (id) => !regexPatterns.length || regexPatterns.some((pattern) => pattern.test(id)); + }; + + const resolveOnly = + typeof options.resolveOnly === 'function' + ? options.resolveOnly + : allowPatterns(options.resolveOnly); + + const browserMapCache = new Map(); + let preserveSymlinks; + + const resolveLikeNode = async (context, importee, importer, custom) => { + // strip query params from import + const [importPath, params] = importee.split('?'); + const importSuffix = `${params ? `?${params}` : ''}`; + importee = importPath; + + const baseDir = !importer || dedupe(importee) ? rootDir : path.dirname(importer); + + // https://github.com/defunctzombie/package-browser-field-spec + const browser = browserMapCache.get(importer); + if (useBrowserOverrides && browser) { + const resolvedImportee = path.resolve(baseDir, importee); + if (browser[importee] === false || browser[resolvedImportee] === false) { + return { id: ES6_BROWSER_EMPTY }; + } + const browserImportee = + (importee[0] !== '.' && browser[importee]) || + browser[resolvedImportee] || + browser[`${resolvedImportee}.js`] || + browser[`${resolvedImportee}.json`]; + if (browserImportee) { + importee = browserImportee; + } + } + + const parts = importee.split(/[/\\]/); + let id = parts.shift(); + let isRelativeImport = false; + + if (id[0] === '@' && parts.length > 0) { + // scoped packages + id += `/${parts.shift()}`; + } else if (id[0] === '.') { + // an import relative to the parent dir of the importer + id = path.resolve(baseDir, importee); + isRelativeImport = true; + } + + // if it's not a relative import, and it's not requested, reject it. + if (!isRelativeImport && !resolveOnly(id)) { + if (normalizeInput(rollupOptions.input).includes(importee)) { + return null; + } + return false; + } + + const importSpecifierList = [importee]; + + if (importer === undefined && !importee[0].match(/^\.?\.?\//)) { + // For module graph roots (i.e. when importer is undefined), we + // need to handle 'path fragments` like `foo/bar` that are commonly + // found in rollup config files. If importee doesn't look like a + // relative or absolute path, we make it relative and attempt to + // resolve it. + importSpecifierList.push(`./${importee}`); + } + + // TypeScript files may import '.mjs' or '.cjs' to refer to either '.mts' or '.cts'. + // They may also import .js to refer to either .ts or .tsx, and .jsx to refer to .tsx. + if (importer && /\.(ts|mts|cts|tsx)$/.test(importer)) { + for (const [importeeExt, resolvedExt] of [ + ['.js', '.ts'], + ['.js', '.tsx'], + ['.jsx', '.tsx'], + ['.mjs', '.mts'], + ['.cjs', '.cts'] + ]) { + if (importee.endsWith(importeeExt) && extensions.includes(resolvedExt)) { + importSpecifierList.push(importee.slice(0, -importeeExt.length) + resolvedExt); + } + } + } + + const warn = (...args) => context.warn(...args); + const isRequire = custom && custom['node-resolve'] && custom['node-resolve'].isRequire; + const exportConditions = isRequire ? conditionsCjs : conditionsEsm; + + if (useBrowserOverrides && !exportConditions.includes('browser')) + exportConditions.push('browser'); + + const resolvedWithoutBuiltins = await resolveImportSpecifiers({ + importer, + importSpecifierList, + exportConditions, + warn, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot, + allowExportsFolderMapping: options.allowExportsFolderMapping + }); + + const importeeIsBuiltin = isBuiltinModule(importee); + const resolved = + importeeIsBuiltin && preferBuiltins + ? { + packageInfo: undefined, + hasModuleSideEffects: () => null, + hasPackageEntry: true, + packageBrowserField: false + } + : resolvedWithoutBuiltins; + if (!resolved) { + return null; + } + + const { packageInfo, hasModuleSideEffects, hasPackageEntry, packageBrowserField } = resolved; + let { location } = resolved; + if (packageBrowserField) { + if (Object.prototype.hasOwnProperty.call(packageBrowserField, location)) { + if (!packageBrowserField[location]) { + browserMapCache.set(location, packageBrowserField); + return { id: ES6_BROWSER_EMPTY }; + } + location = packageBrowserField[location]; + } + browserMapCache.set(location, packageBrowserField); + } + + if (hasPackageEntry && !preserveSymlinks) { + const exists = await fileExists(location); + if (exists) { + location = await realpath(location); + } + } + + idToPackageInfo.set(location, packageInfo); + + if (hasPackageEntry) { + if (importeeIsBuiltin && preferBuiltins) { + if (!isPreferBuiltinsSet && resolvedWithoutBuiltins && resolved !== importee) { + context.warn( + `preferring built-in module '${importee}' over local alternative at '${resolvedWithoutBuiltins.location}', pass 'preferBuiltins: false' to disable this behavior or 'preferBuiltins: true' to disable this warning` + ); + } + return false; + } else if (jail && location.indexOf(path.normalize(jail.trim(path.sep))) !== 0) { + return null; + } + } + + if (options.modulesOnly && (await fileExists(location))) { + const code = await readFile$1(location, 'utf-8'); + if (isModule(code)) { + return { + id: `${location}${importSuffix}`, + moduleSideEffects: hasModuleSideEffects(location) + }; + } + return null; + } + return { + id: `${location}${importSuffix}`, + moduleSideEffects: hasModuleSideEffects(location) + }; + }; + + return { + name: 'node-resolve', + + version, + + buildStart(buildOptions) { + validateVersion(this.meta.rollupVersion, peerDependencies.rollup); + rollupOptions = buildOptions; + + for (const warning of warnings) { + this.warn(warning); + } + + ({ preserveSymlinks } = buildOptions); + }, + + generateBundle() { + readCachedFile.clear(); + isFileCached.clear(); + isDirCached.clear(); + }, + + resolveId: { + order: 'post', + async handler(importee, importer, resolveOptions) { + if (importee === ES6_BROWSER_EMPTY) { + return importee; + } + // ignore IDs with null character, these belong to other plugins + if (/\0/.test(importee)) return null; + + const { custom = {} } = resolveOptions; + const { 'node-resolve': { resolved: alreadyResolved } = {} } = custom; + if (alreadyResolved) { + return alreadyResolved; + } + + if (/\0/.test(importer)) { + importer = undefined; + } + + const resolved = await resolveLikeNode(this, importee, importer, custom); + if (resolved) { + // This way, plugins may attach additional meta information to the + // resolved id or make it external. We do not skip node-resolve here + // because another plugin might again use `this.resolve` in its + // `resolveId` hook, in which case we want to add the correct + // `moduleSideEffects` information. + const resolvedResolved = await this.resolve(resolved.id, importer, { + ...resolveOptions, + skipSelf: false, + custom: { ...custom, 'node-resolve': { ...custom['node-resolve'], resolved, importee } } + }); + if (resolvedResolved) { + // Handle plugins that manually make the result external + if (resolvedResolved.external) { + return false; + } + // Allow other plugins to take over resolution. Rollup core will not + // change the id if it corresponds to an existing file + if (resolvedResolved.id !== resolved.id) { + return resolvedResolved; + } + // Pass on meta information added by other plugins + return { ...resolved, meta: resolvedResolved.meta }; + } + } + return resolved; + } + }, + + load(importee) { + if (importee === ES6_BROWSER_EMPTY) { + return 'export default {};'; + } + return null; + }, + + getPackageInfoForId(id) { + return idToPackageInfo.get(id); + } + }; +} + +exports.DEFAULTS = DEFAULTS; +exports.default = nodeResolve; +exports.nodeResolve = nodeResolve; +module.exports = Object.assign(exports.default, exports); +//# sourceMappingURL=index.js.map diff --git a/node_modules/@rollup/plugin-node-resolve/dist/es/index.js b/node_modules/@rollup/plugin-node-resolve/dist/es/index.js new file mode 100644 index 0000000..e4ce4c4 --- /dev/null +++ b/node_modules/@rollup/plugin-node-resolve/dist/es/index.js @@ -0,0 +1,1355 @@ +import path, { dirname, resolve, extname, normalize, sep } from 'path'; +import isBuiltinModule from 'is-builtin-module'; +import deepMerge from 'deepmerge'; +import isModule from 'is-module'; +import fs, { realpathSync } from 'fs'; +import { promisify } from 'util'; +import { pathToFileURL, fileURLToPath } from 'url'; +import resolve$1 from 'resolve'; +import { createFilter } from '@rollup/pluginutils'; + +var version = "15.2.3"; +var peerDependencies = { + rollup: "^2.78.0||^3.0.0||^4.0.0" +}; + +promisify(fs.access); +const readFile$1 = promisify(fs.readFile); +const realpath = promisify(fs.realpath); +const stat = promisify(fs.stat); +async function fileExists(filePath) { + try { + const res = await stat(filePath); + return res.isFile(); + } + catch { + return false; + } +} +async function resolveSymlink(path) { + return (await fileExists(path)) ? realpath(path) : path; +} + +const onError = (error) => { + if (error.code === 'ENOENT') { + return false; + } + throw error; +}; + +const makeCache = (fn) => { + const cache = new Map(); + const wrapped = async (param, done) => { + if (cache.has(param) === false) { + cache.set( + param, + fn(param).catch((err) => { + cache.delete(param); + throw err; + }) + ); + } + + try { + const result = cache.get(param); + const value = await result; + return done(null, value); + } catch (error) { + return done(error); + } + }; + + wrapped.clear = () => cache.clear(); + + return wrapped; +}; + +const isDirCached = makeCache(async (file) => { + try { + const stats = await stat(file); + return stats.isDirectory(); + } catch (error) { + return onError(error); + } +}); + +const isFileCached = makeCache(async (file) => { + try { + const stats = await stat(file); + return stats.isFile(); + } catch (error) { + return onError(error); + } +}); + +const readCachedFile = makeCache(readFile$1); + +function handleDeprecatedOptions(opts) { + const warnings = []; + + if (opts.customResolveOptions) { + const { customResolveOptions } = opts; + if (customResolveOptions.moduleDirectory) { + // eslint-disable-next-line no-param-reassign + opts.moduleDirectories = Array.isArray(customResolveOptions.moduleDirectory) + ? customResolveOptions.moduleDirectory + : [customResolveOptions.moduleDirectory]; + + warnings.push( + 'node-resolve: The `customResolveOptions.moduleDirectory` option has been deprecated. Use `moduleDirectories`, which must be an array.' + ); + } + + if (customResolveOptions.preserveSymlinks) { + throw new Error( + 'node-resolve: `customResolveOptions.preserveSymlinks` is no longer an option. We now always use the rollup `preserveSymlinks` option.' + ); + } + + [ + 'basedir', + 'package', + 'extensions', + 'includeCoreModules', + 'readFile', + 'isFile', + 'isDirectory', + 'realpath', + 'packageFilter', + 'pathFilter', + 'paths', + 'packageIterator' + ].forEach((resolveOption) => { + if (customResolveOptions[resolveOption]) { + throw new Error( + `node-resolve: \`customResolveOptions.${resolveOption}\` is no longer an option. If you need this, please open an issue.` + ); + } + }); + } + + return { warnings }; +} + +// returns the imported package name for bare module imports +function getPackageName(id) { + if (id.startsWith('.') || id.startsWith('/')) { + return null; + } + + const split = id.split('/'); + + // @my-scope/my-package/foo.js -> @my-scope/my-package + // @my-scope/my-package -> @my-scope/my-package + if (split[0][0] === '@') { + return `${split[0]}/${split[1]}`; + } + + // my-package/foo.js -> my-package + // my-package -> my-package + return split[0]; +} + +function getMainFields(options) { + let mainFields; + if (options.mainFields) { + ({ mainFields } = options); + } else { + mainFields = ['module', 'main']; + } + if (options.browser && mainFields.indexOf('browser') === -1) { + return ['browser'].concat(mainFields); + } + if (!mainFields.length) { + throw new Error('Please ensure at least one `mainFields` value is specified'); + } + return mainFields; +} + +function getPackageInfo(options) { + const { + cache, + extensions, + pkg, + mainFields, + preserveSymlinks, + useBrowserOverrides, + rootDir, + ignoreSideEffectsForRoot + } = options; + let { pkgPath } = options; + + if (cache.has(pkgPath)) { + return cache.get(pkgPath); + } + + // browserify/resolve doesn't realpath paths returned in its packageFilter callback + if (!preserveSymlinks) { + pkgPath = realpathSync(pkgPath); + } + + const pkgRoot = dirname(pkgPath); + + const packageInfo = { + // copy as we are about to munge the `main` field of `pkg`. + packageJson: { ...pkg }, + + // path to package.json file + packageJsonPath: pkgPath, + + // directory containing the package.json + root: pkgRoot, + + // which main field was used during resolution of this module (main, module, or browser) + resolvedMainField: 'main', + + // whether the browser map was used to resolve the entry point to this module + browserMappedMain: false, + + // the entry point of the module with respect to the selected main field and any + // relevant browser mappings. + resolvedEntryPoint: '' + }; + + let overriddenMain = false; + for (let i = 0; i < mainFields.length; i++) { + const field = mainFields[i]; + if (typeof pkg[field] === 'string') { + pkg.main = pkg[field]; + packageInfo.resolvedMainField = field; + overriddenMain = true; + break; + } + } + + const internalPackageInfo = { + cachedPkg: pkg, + hasModuleSideEffects: () => null, + hasPackageEntry: overriddenMain !== false || mainFields.indexOf('main') !== -1, + packageBrowserField: + useBrowserOverrides && + typeof pkg.browser === 'object' && + Object.keys(pkg.browser).reduce((browser, key) => { + let resolved = pkg.browser[key]; + if (resolved && resolved[0] === '.') { + resolved = resolve(pkgRoot, resolved); + } + /* eslint-disable no-param-reassign */ + browser[key] = resolved; + if (key[0] === '.') { + const absoluteKey = resolve(pkgRoot, key); + browser[absoluteKey] = resolved; + if (!extname(key)) { + extensions.reduce((subBrowser, ext) => { + subBrowser[absoluteKey + ext] = subBrowser[key]; + return subBrowser; + }, browser); + } + } + return browser; + }, {}), + packageInfo + }; + + const browserMap = internalPackageInfo.packageBrowserField; + if ( + useBrowserOverrides && + typeof pkg.browser === 'object' && + // eslint-disable-next-line no-prototype-builtins + browserMap.hasOwnProperty(pkg.main) + ) { + packageInfo.resolvedEntryPoint = browserMap[pkg.main]; + packageInfo.browserMappedMain = true; + } else { + // index.node is technically a valid default entrypoint as well... + packageInfo.resolvedEntryPoint = resolve(pkgRoot, pkg.main || 'index.js'); + packageInfo.browserMappedMain = false; + } + + if (!ignoreSideEffectsForRoot || rootDir !== pkgRoot) { + const packageSideEffects = pkg.sideEffects; + if (typeof packageSideEffects === 'boolean') { + internalPackageInfo.hasModuleSideEffects = () => packageSideEffects; + } else if (Array.isArray(packageSideEffects)) { + const finalPackageSideEffects = packageSideEffects.map((sideEffect) => { + /* + * The array accepts simple glob patterns to the relevant files... Patterns like .css, which do not include a /, will be treated like **\/.css. + * https://webpack.js.org/guides/tree-shaking/ + */ + if (sideEffect.includes('/')) { + return sideEffect; + } + return `**/${sideEffect}`; + }); + internalPackageInfo.hasModuleSideEffects = createFilter(finalPackageSideEffects, null, { + resolve: pkgRoot + }); + } + } + + cache.set(pkgPath, internalPackageInfo); + return internalPackageInfo; +} + +function normalizeInput(input) { + if (Array.isArray(input)) { + return input; + } else if (typeof input === 'object') { + return Object.values(input); + } + + // otherwise it's a string + return [input]; +} + +/* eslint-disable no-await-in-loop */ +function isModuleDir(current, moduleDirs) { + return moduleDirs.some((dir) => current.endsWith(dir)); +} +async function findPackageJson(base, moduleDirs) { + const { root } = path.parse(base); + let current = base; + while (current !== root && !isModuleDir(current, moduleDirs)) { + const pkgJsonPath = path.join(current, 'package.json'); + if (await fileExists(pkgJsonPath)) { + const pkgJsonString = fs.readFileSync(pkgJsonPath, 'utf-8'); + return { pkgJson: JSON.parse(pkgJsonString), pkgPath: current, pkgJsonPath }; + } + current = path.resolve(current, '..'); + } + return null; +} +function isUrl(str) { + try { + return !!new URL(str); + } + catch (_) { + return false; + } +} +/** + * Conditions is an export object where all keys are conditions like 'node' (aka do not with '.') + */ +function isConditions(exports) { + return typeof exports === 'object' && Object.keys(exports).every((k) => !k.startsWith('.')); +} +/** + * Mappings is an export object where all keys start with '. + */ +function isMappings(exports) { + return typeof exports === 'object' && !isConditions(exports); +} +/** + * Check for mixed exports, which are exports where some keys start with '.' and some do not + */ +function isMixedExports(exports) { + const keys = Object.keys(exports); + return keys.some((k) => k.startsWith('.')) && keys.some((k) => !k.startsWith('.')); +} +function createBaseErrorMsg(importSpecifier, importer) { + return `Could not resolve import "${importSpecifier}" in ${importer}`; +} +function createErrorMsg(context, reason, isImports) { + const { importSpecifier, importer, pkgJsonPath } = context; + const base = createBaseErrorMsg(importSpecifier, importer); + const field = isImports ? 'imports' : 'exports'; + return `${base} using ${field} defined in ${pkgJsonPath}.${reason ? ` ${reason}` : ''}`; +} +class ResolveError extends Error { +} +class InvalidConfigurationError extends ResolveError { + constructor(context, reason) { + super(createErrorMsg(context, `Invalid "exports" field. ${reason}`)); + } +} +class InvalidModuleSpecifierError extends ResolveError { + constructor(context, isImports, reason) { + super(createErrorMsg(context, reason, isImports)); + } +} +class InvalidPackageTargetError extends ResolveError { + constructor(context, reason) { + super(createErrorMsg(context, reason)); + } +} + +/* eslint-disable no-await-in-loop, no-undefined */ +/** + * Check for invalid path segments + */ +function includesInvalidSegments(pathSegments, moduleDirs) { + const invalidSegments = ['', '.', '..', ...moduleDirs]; + // contains any "", ".", "..", or "node_modules" segments, including percent encoded variants + return pathSegments.some((v) => invalidSegments.includes(v) || invalidSegments.includes(decodeURI(v))); +} +async function resolvePackageTarget(context, { target, patternMatch, isImports }) { + // If target is a String, then + if (typeof target === 'string') { + // If target does not start with "./", then + if (!target.startsWith('./')) { + // If isImports is false, or if target starts with "../" or "/", or if target is a valid URL, then + if (!isImports || ['/', '../'].some((p) => target.startsWith(p)) || isUrl(target)) { + // Throw an Invalid Package Target error. + throw new InvalidPackageTargetError(context, `Invalid mapping: "${target}".`); + } + // If patternMatch is a String, then + if (typeof patternMatch === 'string') { + // Return PACKAGE_RESOLVE(target with every instance of "*" replaced by patternMatch, packageURL + "/") + const result = await context.resolveId(target.replace(/\*/g, patternMatch), context.pkgURL.href); + return result ? pathToFileURL(result.location).href : null; + } + // Return PACKAGE_RESOLVE(target, packageURL + "/"). + const result = await context.resolveId(target, context.pkgURL.href); + return result ? pathToFileURL(result.location).href : null; + } + // TODO: Drop if we do not support Node <= 16 anymore + // This behavior was removed in Node 17 (deprecated in Node 14), see DEP0148 + if (context.allowExportsFolderMapping) { + target = target.replace(/\/$/, '/*'); + } + // If target split on "/" or "\" + { + const pathSegments = target.split(/\/|\\/); + // after the first "." segment + const firstDot = pathSegments.indexOf('.'); + firstDot !== -1 && pathSegments.slice(firstDot); + if (firstDot !== -1 && + firstDot < pathSegments.length - 1 && + includesInvalidSegments(pathSegments.slice(firstDot + 1), context.moduleDirs)) { + throw new InvalidPackageTargetError(context, `Invalid mapping: "${target}".`); + } + } + // Let resolvedTarget be the URL resolution of the concatenation of packageURL and target. + const resolvedTarget = new URL(target, context.pkgURL); + // Assert: resolvedTarget is contained in packageURL. + if (!resolvedTarget.href.startsWith(context.pkgURL.href)) { + throw new InvalidPackageTargetError(context, `Resolved to ${resolvedTarget.href} which is outside package ${context.pkgURL.href}`); + } + // If patternMatch is null, then + if (!patternMatch) { + // Return resolvedTarget. + return resolvedTarget; + } + // If patternMatch split on "/" or "\" contains invalid segments + if (includesInvalidSegments(patternMatch.split(/\/|\\/), context.moduleDirs)) { + // throw an Invalid Module Specifier error. + throw new InvalidModuleSpecifierError(context); + } + // Return the URL resolution of resolvedTarget with every instance of "*" replaced with patternMatch. + return resolvedTarget.href.replace(/\*/g, patternMatch); + } + // Otherwise, if target is an Array, then + if (Array.isArray(target)) { + // If _target.length is zero, return null. + if (target.length === 0) { + return null; + } + let lastError = null; + // For each item in target, do + for (const item of target) { + // Let resolved be the result of PACKAGE_TARGET_RESOLVE of the item + // continuing the loop on any Invalid Package Target error. + try { + const resolved = await resolvePackageTarget(context, { + target: item, + patternMatch, + isImports + }); + // If resolved is undefined, continue the loop. + // Else Return resolved. + if (resolved !== undefined) { + return resolved; + } + } + catch (error) { + if (!(error instanceof InvalidPackageTargetError)) { + throw error; + } + else { + lastError = error; + } + } + } + // Return or throw the last fallback resolution null return or error + if (lastError) { + throw lastError; + } + return null; + } + // Otherwise, if target is a non-null Object, then + if (target && typeof target === 'object') { + // For each property of target + for (const [key, value] of Object.entries(target)) { + // If exports contains any index property keys, as defined in ECMA-262 6.1.7 Array Index, throw an Invalid Package Configuration error. + // TODO: We do not check if the key is a number here... + // If key equals "default" or conditions contains an entry for the key, then + if (key === 'default' || context.conditions.includes(key)) { + // Let targetValue be the value of the property in target. + // Let resolved be the result of PACKAGE_TARGET_RESOLVE of the targetValue + const resolved = await resolvePackageTarget(context, { + target: value, + patternMatch, + isImports + }); + // If resolved is equal to undefined, continue the loop. + // Return resolved. + if (resolved !== undefined) { + return resolved; + } + } + } + // Return undefined. + return undefined; + } + // Otherwise, if target is null, return null. + if (target === null) { + return null; + } + // Otherwise throw an Invalid Package Target error. + throw new InvalidPackageTargetError(context, `Invalid exports field.`); +} + +/* eslint-disable no-await-in-loop */ +/** + * Implementation of Node's `PATTERN_KEY_COMPARE` function + */ +function nodePatternKeyCompare(keyA, keyB) { + // Let baseLengthA be the index of "*" in keyA plus one, if keyA contains "*", or the length of keyA otherwise. + const baseLengthA = keyA.includes('*') ? keyA.indexOf('*') + 1 : keyA.length; + // Let baseLengthB be the index of "*" in keyB plus one, if keyB contains "*", or the length of keyB otherwise. + const baseLengthB = keyB.includes('*') ? keyB.indexOf('*') + 1 : keyB.length; + // if baseLengthA is greater, return -1, if lower 1 + const rval = baseLengthB - baseLengthA; + if (rval !== 0) + return rval; + // If keyA does not contain "*", return 1. + if (!keyA.includes('*')) + return 1; + // If keyB does not contain "*", return -1. + if (!keyB.includes('*')) + return -1; + // If the length of keyA is greater than the length of keyB, return -1. + // If the length of keyB is greater than the length of keyA, return 1. + // Else Return 0. + return keyB.length - keyA.length; +} +async function resolvePackageImportsExports(context, { matchKey, matchObj, isImports }) { + // If matchKey is a key of matchObj and does not contain "*", then + if (!matchKey.includes('*') && matchKey in matchObj) { + // Let target be the value of matchObj[matchKey]. + const target = matchObj[matchKey]; + // Return the result of PACKAGE_TARGET_RESOLVE(packageURL, target, null, isImports, conditions). + const resolved = await resolvePackageTarget(context, { target, patternMatch: '', isImports }); + return resolved; + } + // Let expansionKeys be the list of keys of matchObj containing only a single "*" + const expansionKeys = Object.keys(matchObj) + // Assert: ends with "/" or contains only a single "*". + .filter((k) => k.endsWith('/') || k.includes('*')) + // sorted by the sorting function PATTERN_KEY_COMPARE which orders in descending order of specificity. + .sort(nodePatternKeyCompare); + // For each key expansionKey in expansionKeys, do + for (const expansionKey of expansionKeys) { + const indexOfAsterisk = expansionKey.indexOf('*'); + // Let patternBase be the substring of expansionKey up to but excluding the first "*" character. + const patternBase = indexOfAsterisk === -1 ? expansionKey : expansionKey.substring(0, indexOfAsterisk); + // If matchKey starts with but is not equal to patternBase, then + if (matchKey.startsWith(patternBase) && matchKey !== patternBase) { + // Let patternTrailer be the substring of expansionKey from the index after the first "*" character. + const patternTrailer = indexOfAsterisk !== -1 ? expansionKey.substring(indexOfAsterisk + 1) : ''; + // If patternTrailer has zero length, + if (patternTrailer.length === 0 || + // or if matchKey ends with patternTrailer and the length of matchKey is greater than or equal to the length of expansionKey, then + (matchKey.endsWith(patternTrailer) && matchKey.length >= expansionKey.length)) { + // Let target be the value of matchObj[expansionKey]. + const target = matchObj[expansionKey]; + // Let patternMatch be the substring of matchKey starting at the index of the length of patternBase up to the length + // of matchKey minus the length of patternTrailer. + const patternMatch = matchKey.substring(patternBase.length, matchKey.length - patternTrailer.length); + // Return the result of PACKAGE_TARGET_RESOLVE + const resolved = await resolvePackageTarget(context, { + target, + patternMatch, + isImports + }); + return resolved; + } + } + } + throw new InvalidModuleSpecifierError(context, isImports); +} + +/** + * Implementation of PACKAGE_EXPORTS_RESOLVE + */ +async function resolvePackageExports(context, subpath, exports) { + // If exports is an Object with both a key starting with "." and a key not starting with "." + if (isMixedExports(exports)) { + // throw an Invalid Package Configuration error. + throw new InvalidConfigurationError(context, 'All keys must either start with ./, or without one.'); + } + // If subpath is equal to ".", then + if (subpath === '.') { + // Let mainExport be undefined. + let mainExport; + // If exports is a String or Array, or an Object containing no keys starting with ".", then + if (typeof exports === 'string' || Array.isArray(exports) || isConditions(exports)) { + // Set mainExport to exports + mainExport = exports; + // Otherwise if exports is an Object containing a "." property, then + } + else if (isMappings(exports)) { + // Set mainExport to exports["."] + mainExport = exports['.']; + } + // If mainExport is not undefined, then + if (mainExport) { + // Let resolved be the result of PACKAGE_TARGET_RESOLVE with target = mainExport + const resolved = await resolvePackageTarget(context, { + target: mainExport, + patternMatch: '', + isImports: false + }); + // If resolved is not null or undefined, return resolved. + if (resolved) { + return resolved; + } + } + // Otherwise, if exports is an Object and all keys of exports start with ".", then + } + else if (isMappings(exports)) { + // Let resolved be the result of PACKAGE_IMPORTS_EXPORTS_RESOLVE + const resolvedMatch = await resolvePackageImportsExports(context, { + matchKey: subpath, + matchObj: exports, + isImports: false + }); + // If resolved is not null or undefined, return resolved. + if (resolvedMatch) { + return resolvedMatch; + } + } + // Throw a Package Path Not Exported error. + throw new InvalidModuleSpecifierError(context); +} + +async function resolvePackageImports({ importSpecifier, importer, moduleDirs, conditions, resolveId }) { + const result = await findPackageJson(importer, moduleDirs); + if (!result) { + throw new Error(`${createBaseErrorMsg(importSpecifier, importer)}. Could not find a parent package.json.`); + } + const { pkgPath, pkgJsonPath, pkgJson } = result; + const pkgURL = pathToFileURL(`${pkgPath}/`); + const context = { + importer, + importSpecifier, + moduleDirs, + pkgURL, + pkgJsonPath, + conditions, + resolveId + }; + // Assert: specifier begins with "#". + if (!importSpecifier.startsWith('#')) { + throw new InvalidModuleSpecifierError(context, true, 'Invalid import specifier.'); + } + // If specifier is exactly equal to "#" or starts with "#/", then + if (importSpecifier === '#' || importSpecifier.startsWith('#/')) { + // Throw an Invalid Module Specifier error. + throw new InvalidModuleSpecifierError(context, true, 'Invalid import specifier.'); + } + const { imports } = pkgJson; + if (!imports) { + throw new InvalidModuleSpecifierError(context, true); + } + // Let packageURL be the result of LOOKUP_PACKAGE_SCOPE(parentURL). + // If packageURL is not null, then + return resolvePackageImportsExports(context, { + matchKey: importSpecifier, + matchObj: imports, + isImports: true + }); +} + +const resolveImportPath = promisify(resolve$1); +const readFile = promisify(fs.readFile); + +async function getPackageJson(importer, pkgName, resolveOptions, moduleDirectories) { + if (importer) { + const selfPackageJsonResult = await findPackageJson(importer, moduleDirectories); + if (selfPackageJsonResult && selfPackageJsonResult.pkgJson.name === pkgName) { + // the referenced package name is the current package + return selfPackageJsonResult; + } + } + + try { + const pkgJsonPath = await resolveImportPath(`${pkgName}/package.json`, resolveOptions); + const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf-8')); + return { pkgJsonPath, pkgJson, pkgPath: dirname(pkgJsonPath) }; + } catch (_) { + return null; + } +} + +async function resolveIdClassic({ + importSpecifier, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot +}) { + let hasModuleSideEffects = () => null; + let hasPackageEntry = true; + let packageBrowserField = false; + let packageInfo; + + const filter = (pkg, pkgPath) => { + const info = getPackageInfo({ + cache: packageInfoCache, + extensions, + pkg, + pkgPath, + mainFields, + preserveSymlinks, + useBrowserOverrides, + rootDir, + ignoreSideEffectsForRoot + }); + + ({ packageInfo, hasModuleSideEffects, hasPackageEntry, packageBrowserField } = info); + + return info.cachedPkg; + }; + + const resolveOptions = { + basedir: baseDir, + readFile: readCachedFile, + isFile: isFileCached, + isDirectory: isDirCached, + extensions, + includeCoreModules: false, + moduleDirectory: moduleDirectories, + paths: modulePaths, + preserveSymlinks, + packageFilter: filter + }; + + let location; + try { + location = await resolveImportPath(importSpecifier, resolveOptions); + } catch (error) { + if (error.code !== 'MODULE_NOT_FOUND') { + throw error; + } + return null; + } + + return { + location: preserveSymlinks ? location : await resolveSymlink(location), + hasModuleSideEffects, + hasPackageEntry, + packageBrowserField, + packageInfo + }; +} + +async function resolveWithExportMap({ + importer, + importSpecifier, + exportConditions, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot, + allowExportsFolderMapping +}) { + if (importSpecifier.startsWith('#')) { + // this is a package internal import, resolve using package imports field + const resolveResult = await resolvePackageImports({ + importSpecifier, + importer, + moduleDirs: moduleDirectories, + conditions: exportConditions, + resolveId(id /* , parent*/) { + return resolveIdClassic({ + importSpecifier: id, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths + }); + } + }); + + const location = fileURLToPath(resolveResult); + return { + location: preserveSymlinks ? location : await resolveSymlink(location), + hasModuleSideEffects: () => null, + hasPackageEntry: true, + packageBrowserField: false, + // eslint-disable-next-line no-undefined + packageInfo: undefined + }; + } + + const pkgName = getPackageName(importSpecifier); + if (pkgName) { + // it's a bare import, find the package.json and resolve using package exports if available + let hasModuleSideEffects = () => null; + let hasPackageEntry = true; + let packageBrowserField = false; + let packageInfo; + + const filter = (pkg, pkgPath) => { + const info = getPackageInfo({ + cache: packageInfoCache, + extensions, + pkg, + pkgPath, + mainFields, + preserveSymlinks, + useBrowserOverrides, + rootDir, + ignoreSideEffectsForRoot + }); + + ({ packageInfo, hasModuleSideEffects, hasPackageEntry, packageBrowserField } = info); + + return info.cachedPkg; + }; + + const resolveOptions = { + basedir: baseDir, + readFile: readCachedFile, + isFile: isFileCached, + isDirectory: isDirCached, + extensions, + includeCoreModules: false, + moduleDirectory: moduleDirectories, + paths: modulePaths, + preserveSymlinks, + packageFilter: filter + }; + + const result = await getPackageJson(importer, pkgName, resolveOptions, moduleDirectories); + + if (result && result.pkgJson.exports) { + const { pkgJson, pkgJsonPath } = result; + const subpath = + pkgName === importSpecifier ? '.' : `.${importSpecifier.substring(pkgName.length)}`; + const pkgDr = pkgJsonPath.replace('package.json', ''); + const pkgURL = pathToFileURL(pkgDr); + + const context = { + importer, + importSpecifier, + moduleDirs: moduleDirectories, + pkgURL, + pkgJsonPath, + allowExportsFolderMapping, + conditions: exportConditions + }; + const resolvedPackageExport = await resolvePackageExports(context, subpath, pkgJson.exports); + const location = fileURLToPath(resolvedPackageExport); + if (location) { + return { + location: preserveSymlinks ? location : await resolveSymlink(location), + hasModuleSideEffects, + hasPackageEntry, + packageBrowserField, + packageInfo + }; + } + } + } + + return null; +} + +async function resolveWithClassic({ + importer, + importSpecifierList, + exportConditions, + warn, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot +}) { + for (let i = 0; i < importSpecifierList.length; i++) { + // eslint-disable-next-line no-await-in-loop + const result = await resolveIdClassic({ + importer, + importSpecifier: importSpecifierList[i], + exportConditions, + warn, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot + }); + + if (result) { + return result; + } + } + + return null; +} + +// Resolves to the module if found or `null`. +// The first import specifier will first be attempted with the exports algorithm. +// If this is unsuccessful because export maps are not being used, then all of `importSpecifierList` +// will be tried with the classic resolution algorithm +async function resolveImportSpecifiers({ + importer, + importSpecifierList, + exportConditions, + warn, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot, + allowExportsFolderMapping +}) { + try { + const exportMapRes = await resolveWithExportMap({ + importer, + importSpecifier: importSpecifierList[0], + exportConditions, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot, + allowExportsFolderMapping + }); + if (exportMapRes) return exportMapRes; + } catch (error) { + if (error instanceof ResolveError) { + warn(error); + return null; + } + throw error; + } + + // package has no imports or exports, use classic node resolve + return resolveWithClassic({ + importer, + importSpecifierList, + exportConditions, + warn, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot + }); +} + +const versionRegexp = /\^(\d+\.\d+\.\d+)/g; + +function validateVersion(actualVersion, peerDependencyVersion) { + let minMajor = Infinity; + let minMinor = Infinity; + let minPatch = Infinity; + let foundVersion; + // eslint-disable-next-line no-cond-assign + while ((foundVersion = versionRegexp.exec(peerDependencyVersion))) { + const [foundMajor, foundMinor, foundPatch] = foundVersion[1].split('.').map(Number); + if (foundMajor < minMajor) { + minMajor = foundMajor; + minMinor = foundMinor; + minPatch = foundPatch; + } + } + if (!actualVersion) { + throw new Error( + `Insufficient Rollup version: "@rollup/plugin-node-resolve" requires at least rollup@${minMajor}.${minMinor}.${minPatch}.` + ); + } + const [major, minor, patch] = actualVersion.split('.').map(Number); + if ( + major < minMajor || + (major === minMajor && (minor < minMinor || (minor === minMinor && patch < minPatch))) + ) { + throw new Error( + `Insufficient rollup version: "@rollup/plugin-node-resolve" requires at least rollup@${minMajor}.${minMinor}.${minPatch} but found rollup@${actualVersion}.` + ); + } +} + +/* eslint-disable no-param-reassign, no-shadow, no-undefined */ + +const ES6_BROWSER_EMPTY = '\0node-resolve:empty.js'; +const deepFreeze = (object) => { + Object.freeze(object); + + for (const value of Object.values(object)) { + if (typeof value === 'object' && !Object.isFrozen(value)) { + deepFreeze(value); + } + } + + return object; +}; + +const baseConditions = ['default', 'module']; +const baseConditionsEsm = [...baseConditions, 'import']; +const baseConditionsCjs = [...baseConditions, 'require']; +const defaults = { + dedupe: [], + // It's important that .mjs is listed before .js so that Rollup will interpret npm modules + // which deploy both ESM .mjs and CommonJS .js files as ESM. + extensions: ['.mjs', '.js', '.json', '.node'], + resolveOnly: [], + moduleDirectories: ['node_modules'], + modulePaths: [], + ignoreSideEffectsForRoot: false, + // TODO: set to false in next major release or remove + allowExportsFolderMapping: true +}; +const DEFAULTS = deepFreeze(deepMerge({}, defaults)); + +function nodeResolve(opts = {}) { + const { warnings } = handleDeprecatedOptions(opts); + + const options = { ...defaults, ...opts }; + const { extensions, jail, moduleDirectories, modulePaths, ignoreSideEffectsForRoot } = options; + const conditionsEsm = [...baseConditionsEsm, ...(options.exportConditions || [])]; + const conditionsCjs = [...baseConditionsCjs, ...(options.exportConditions || [])]; + const packageInfoCache = new Map(); + const idToPackageInfo = new Map(); + const mainFields = getMainFields(options); + const useBrowserOverrides = mainFields.indexOf('browser') !== -1; + const isPreferBuiltinsSet = options.preferBuiltins === true || options.preferBuiltins === false; + const preferBuiltins = isPreferBuiltinsSet ? options.preferBuiltins : true; + const rootDir = resolve(options.rootDir || process.cwd()); + let { dedupe } = options; + let rollupOptions; + + if (moduleDirectories.some((name) => name.includes('/'))) { + throw new Error( + '`moduleDirectories` option must only contain directory names. If you want to load modules from somewhere not supported by the default module resolution algorithm, see `modulePaths`.' + ); + } + + if (typeof dedupe !== 'function') { + dedupe = (importee) => + options.dedupe.includes(importee) || options.dedupe.includes(getPackageName(importee)); + } + + // creates a function from the patterns to test if a particular module should be bundled. + const allowPatterns = (patterns) => { + const regexPatterns = patterns.map((pattern) => { + if (pattern instanceof RegExp) { + return pattern; + } + const normalized = pattern.replace(/[\\^$*+?.()|[\]{}]/g, '\\$&'); + return new RegExp(`^${normalized}$`); + }); + return (id) => !regexPatterns.length || regexPatterns.some((pattern) => pattern.test(id)); + }; + + const resolveOnly = + typeof options.resolveOnly === 'function' + ? options.resolveOnly + : allowPatterns(options.resolveOnly); + + const browserMapCache = new Map(); + let preserveSymlinks; + + const resolveLikeNode = async (context, importee, importer, custom) => { + // strip query params from import + const [importPath, params] = importee.split('?'); + const importSuffix = `${params ? `?${params}` : ''}`; + importee = importPath; + + const baseDir = !importer || dedupe(importee) ? rootDir : dirname(importer); + + // https://github.com/defunctzombie/package-browser-field-spec + const browser = browserMapCache.get(importer); + if (useBrowserOverrides && browser) { + const resolvedImportee = resolve(baseDir, importee); + if (browser[importee] === false || browser[resolvedImportee] === false) { + return { id: ES6_BROWSER_EMPTY }; + } + const browserImportee = + (importee[0] !== '.' && browser[importee]) || + browser[resolvedImportee] || + browser[`${resolvedImportee}.js`] || + browser[`${resolvedImportee}.json`]; + if (browserImportee) { + importee = browserImportee; + } + } + + const parts = importee.split(/[/\\]/); + let id = parts.shift(); + let isRelativeImport = false; + + if (id[0] === '@' && parts.length > 0) { + // scoped packages + id += `/${parts.shift()}`; + } else if (id[0] === '.') { + // an import relative to the parent dir of the importer + id = resolve(baseDir, importee); + isRelativeImport = true; + } + + // if it's not a relative import, and it's not requested, reject it. + if (!isRelativeImport && !resolveOnly(id)) { + if (normalizeInput(rollupOptions.input).includes(importee)) { + return null; + } + return false; + } + + const importSpecifierList = [importee]; + + if (importer === undefined && !importee[0].match(/^\.?\.?\//)) { + // For module graph roots (i.e. when importer is undefined), we + // need to handle 'path fragments` like `foo/bar` that are commonly + // found in rollup config files. If importee doesn't look like a + // relative or absolute path, we make it relative and attempt to + // resolve it. + importSpecifierList.push(`./${importee}`); + } + + // TypeScript files may import '.mjs' or '.cjs' to refer to either '.mts' or '.cts'. + // They may also import .js to refer to either .ts or .tsx, and .jsx to refer to .tsx. + if (importer && /\.(ts|mts|cts|tsx)$/.test(importer)) { + for (const [importeeExt, resolvedExt] of [ + ['.js', '.ts'], + ['.js', '.tsx'], + ['.jsx', '.tsx'], + ['.mjs', '.mts'], + ['.cjs', '.cts'] + ]) { + if (importee.endsWith(importeeExt) && extensions.includes(resolvedExt)) { + importSpecifierList.push(importee.slice(0, -importeeExt.length) + resolvedExt); + } + } + } + + const warn = (...args) => context.warn(...args); + const isRequire = custom && custom['node-resolve'] && custom['node-resolve'].isRequire; + const exportConditions = isRequire ? conditionsCjs : conditionsEsm; + + if (useBrowserOverrides && !exportConditions.includes('browser')) + exportConditions.push('browser'); + + const resolvedWithoutBuiltins = await resolveImportSpecifiers({ + importer, + importSpecifierList, + exportConditions, + warn, + packageInfoCache, + extensions, + mainFields, + preserveSymlinks, + useBrowserOverrides, + baseDir, + moduleDirectories, + modulePaths, + rootDir, + ignoreSideEffectsForRoot, + allowExportsFolderMapping: options.allowExportsFolderMapping + }); + + const importeeIsBuiltin = isBuiltinModule(importee); + const resolved = + importeeIsBuiltin && preferBuiltins + ? { + packageInfo: undefined, + hasModuleSideEffects: () => null, + hasPackageEntry: true, + packageBrowserField: false + } + : resolvedWithoutBuiltins; + if (!resolved) { + return null; + } + + const { packageInfo, hasModuleSideEffects, hasPackageEntry, packageBrowserField } = resolved; + let { location } = resolved; + if (packageBrowserField) { + if (Object.prototype.hasOwnProperty.call(packageBrowserField, location)) { + if (!packageBrowserField[location]) { + browserMapCache.set(location, packageBrowserField); + return { id: ES6_BROWSER_EMPTY }; + } + location = packageBrowserField[location]; + } + browserMapCache.set(location, packageBrowserField); + } + + if (hasPackageEntry && !preserveSymlinks) { + const exists = await fileExists(location); + if (exists) { + location = await realpath(location); + } + } + + idToPackageInfo.set(location, packageInfo); + + if (hasPackageEntry) { + if (importeeIsBuiltin && preferBuiltins) { + if (!isPreferBuiltinsSet && resolvedWithoutBuiltins && resolved !== importee) { + context.warn( + `preferring built-in module '${importee}' over local alternative at '${resolvedWithoutBuiltins.location}', pass 'preferBuiltins: false' to disable this behavior or 'preferBuiltins: true' to disable this warning` + ); + } + return false; + } else if (jail && location.indexOf(normalize(jail.trim(sep))) !== 0) { + return null; + } + } + + if (options.modulesOnly && (await fileExists(location))) { + const code = await readFile$1(location, 'utf-8'); + if (isModule(code)) { + return { + id: `${location}${importSuffix}`, + moduleSideEffects: hasModuleSideEffects(location) + }; + } + return null; + } + return { + id: `${location}${importSuffix}`, + moduleSideEffects: hasModuleSideEffects(location) + }; + }; + + return { + name: 'node-resolve', + + version, + + buildStart(buildOptions) { + validateVersion(this.meta.rollupVersion, peerDependencies.rollup); + rollupOptions = buildOptions; + + for (const warning of warnings) { + this.warn(warning); + } + + ({ preserveSymlinks } = buildOptions); + }, + + generateBundle() { + readCachedFile.clear(); + isFileCached.clear(); + isDirCached.clear(); + }, + + resolveId: { + order: 'post', + async handler(importee, importer, resolveOptions) { + if (importee === ES6_BROWSER_EMPTY) { + return importee; + } + // ignore IDs with null character, these belong to other plugins + if (/\0/.test(importee)) return null; + + const { custom = {} } = resolveOptions; + const { 'node-resolve': { resolved: alreadyResolved } = {} } = custom; + if (alreadyResolved) { + return alreadyResolved; + } + + if (/\0/.test(importer)) { + importer = undefined; + } + + const resolved = await resolveLikeNode(this, importee, importer, custom); + if (resolved) { + // This way, plugins may attach additional meta information to the + // resolved id or make it external. We do not skip node-resolve here + // because another plugin might again use `this.resolve` in its + // `resolveId` hook, in which case we want to add the correct + // `moduleSideEffects` information. + const resolvedResolved = await this.resolve(resolved.id, importer, { + ...resolveOptions, + skipSelf: false, + custom: { ...custom, 'node-resolve': { ...custom['node-resolve'], resolved, importee } } + }); + if (resolvedResolved) { + // Handle plugins that manually make the result external + if (resolvedResolved.external) { + return false; + } + // Allow other plugins to take over resolution. Rollup core will not + // change the id if it corresponds to an existing file + if (resolvedResolved.id !== resolved.id) { + return resolvedResolved; + } + // Pass on meta information added by other plugins + return { ...resolved, meta: resolvedResolved.meta }; + } + } + return resolved; + } + }, + + load(importee) { + if (importee === ES6_BROWSER_EMPTY) { + return 'export default {};'; + } + return null; + }, + + getPackageInfoForId(id) { + return idToPackageInfo.get(id); + } + }; +} + +export { DEFAULTS, nodeResolve as default, nodeResolve }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@rollup/plugin-node-resolve/dist/es/package.json b/node_modules/@rollup/plugin-node-resolve/dist/es/package.json new file mode 100644 index 0000000..7c34deb --- /dev/null +++ b/node_modules/@rollup/plugin-node-resolve/dist/es/package.json @@ -0,0 +1 @@ +{"type":"module"} \ No newline at end of file diff --git a/node_modules/@rollup/plugin-node-resolve/package.json b/node_modules/@rollup/plugin-node-resolve/package.json new file mode 100644 index 0000000..7972858 --- /dev/null +++ b/node_modules/@rollup/plugin-node-resolve/package.json @@ -0,0 +1,92 @@ +{ + "name": "@rollup/plugin-node-resolve", + "version": "15.2.3", + "publishConfig": { + "access": "public" + }, + "description": "Locate and bundle third-party dependencies in node_modules", + "license": "MIT", + "repository": { + "url": "rollup/plugins", + "directory": "packages/node-resolve" + }, + "author": "Rich Harris ", + "homepage": "https://github.com/rollup/plugins/tree/master/packages/node-resolve/#readme", + "bugs": "https://github.com/rollup/plugins/issues", + "main": "./dist/cjs/index.js", + "module": "./dist/es/index.js", + "exports": { + "types": "./types/index.d.ts", + "import": "./dist/es/index.js", + "default": "./dist/cjs/index.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "scripts": { + "build": "rollup -c", + "ci:coverage": "nyc pnpm test && nyc report --reporter=text-lcov > coverage.lcov", + "ci:lint": "pnpm build && pnpm lint", + "ci:lint:commits": "commitlint --from=${CIRCLE_BRANCH} --to=${CIRCLE_SHA1}", + "ci:test": "pnpm test -- --verbose", + "prebuild": "del-cli dist", + "prepare": "if [ ! -d 'dist' ]; then pnpm build; fi", + "prepublishOnly": "pnpm build", + "prerelease": "pnpm build", + "pretest": "pnpm build", + "release": "pnpm --workspace-root plugin:release --pkg $npm_package_name", + "test": "pnpm test:ts && ava", + "test:ts": "tsc types/index.d.ts test/types.ts --noEmit" + }, + "files": [ + "dist", + "!dist/**/*.map", + "types", + "README.md", + "LICENSE" + ], + "keywords": [ + "rollup", + "plugin", + "es2015", + "npm", + "modules" + ], + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + }, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "devDependencies": { + "@babel/core": "^7.19.1", + "@babel/plugin-transform-typescript": "^7.10.5", + "@rollup/plugin-babel": "^6.0.0", + "@rollup/plugin-commonjs": "^23.0.0", + "@rollup/plugin-json": "^5.0.0", + "es5-ext": "^0.10.62", + "rollup": "^4.0.0-24", + "source-map": "^0.7.4", + "string-capitalize": "^1.0.1" + }, + "types": "./types/index.d.ts", + "ava": { + "workerThreads": false, + "files": [ + "!**/fixtures/**", + "!**/helpers/**", + "!**/recipes/**", + "!**/types.ts" + ] + } +} diff --git a/node_modules/@rollup/plugin-node-resolve/types/index.d.ts b/node_modules/@rollup/plugin-node-resolve/types/index.d.ts new file mode 100755 index 0000000..6bd5db3 --- /dev/null +++ b/node_modules/@rollup/plugin-node-resolve/types/index.d.ts @@ -0,0 +1,113 @@ +import type { Plugin } from 'rollup'; + +export const DEFAULTS: { + customResolveOptions: {}; + dedupe: []; + extensions: ['.mjs', '.js', '.json', '.node']; + resolveOnly: []; +}; + +export interface RollupNodeResolveOptions { + /** + * Additional conditions of the package.json exports field to match when resolving modules. + * By default, this plugin looks for the `'default', 'module', 'import']` conditions when resolving imports. + * + * When using `@rollup/plugin-commonjs` v16 or higher, this plugin will use the + * `['default', 'module', 'import']` conditions when resolving require statements. + * + * Setting this option will add extra conditions on top of the default conditions. + * See https://nodejs.org/api/packages.html#packages_conditional_exports for more information. + */ + exportConditions?: string[]; + + /** + * If `true`, instructs the plugin to use the `"browser"` property in `package.json` + * files to specify alternative files to load for bundling. This is useful when + * bundling for a browser environment. Alternatively, a value of `'browser'` can be + * added to the `mainFields` option. If `false`, any `"browser"` properties in + * package files will be ignored. This option takes precedence over `mainFields`. + * @default false + */ + browser?: boolean; + + /** + * A list of directory names in which to recursively look for modules. + * @default ['node_modules'] + */ + moduleDirectories?: string[]; + + /** + * A list of absolute paths to additional locations to search for modules. + * This is analogous to setting the `NODE_PATH` environment variable for node. + * @default [] + */ + modulePaths?: string[]; + + /** + * An `Array` of modules names, which instructs the plugin to force resolving for the + * specified modules to the root `node_modules`. Helps to prevent bundling the same + * package multiple times if package is imported from dependencies. + */ + dedupe?: string[] | ((importee: string) => boolean); + + /** + * Specifies the extensions of files that the plugin will operate on. + * @default [ '.mjs', '.js', '.json', '.node' ] + */ + extensions?: readonly string[]; + + /** + * Locks the module search within specified path (e.g. chroot). Modules defined + * outside this path will be marked as external. + * @default '/' + */ + jail?: string; + + /** + * Specifies the properties to scan within a `package.json`, used to determine the + * bundle entry point. + * @default ['module', 'main'] + */ + mainFields?: readonly string[]; + + /** + * If `true`, inspect resolved files to assert that they are ES2015 modules. + * @default false + */ + modulesOnly?: boolean; + + /** + * If `true`, the plugin will prefer built-in modules (e.g. `fs`, `path`). If `false`, + * the plugin will look for locally installed modules of the same name. + * @default true + */ + preferBuiltins?: boolean; + + /** + * An `Array` which instructs the plugin to limit module resolution to those whose + * names match patterns in the array. + * @default [] + */ + resolveOnly?: ReadonlyArray | null | ((module: string) => boolean); + + /** + * Specifies the root directory from which to resolve modules. Typically used when + * resolving entry-point imports, and when resolving deduplicated modules. + * @default process.cwd() + */ + rootDir?: string; + + /** + * Allow folder mappings in package exports (trailing /) + * This was deprecated in Node 14 and removed with Node 17, see DEP0148. + * So this option might be changed to default to `false` in a future release. + * @default true + */ + allowExportsFolderMapping?: boolean; +} + +/** + * Locate modules using the Node resolution algorithm, for using third party modules in node_modules + */ +export function nodeResolve(options?: RollupNodeResolveOptions): Plugin; +export default nodeResolve; diff --git a/node_modules/@rollup/plugin-typescript/LICENSE b/node_modules/@rollup/plugin-typescript/LICENSE new file mode 100644 index 0000000..5e46702 --- /dev/null +++ b/node_modules/@rollup/plugin-typescript/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@rollup/plugin-typescript/README.md b/node_modules/@rollup/plugin-typescript/README.md new file mode 100644 index 0000000..8350f9a --- /dev/null +++ b/node_modules/@rollup/plugin-typescript/README.md @@ -0,0 +1,307 @@ +[npm]: https://img.shields.io/npm/v/@rollup/plugin-typescript +[npm-url]: https://www.npmjs.com/package/@rollup/plugin-typescript +[size]: https://packagephobia.now.sh/badge?p=@rollup/plugin-typescript +[size-url]: https://packagephobia.now.sh/result?p=@rollup/plugin-typescript + +[![npm][npm]][npm-url] +[![size][size]][size-url] +[![libera manifesto](https://img.shields.io/badge/libera-manifesto-lightgrey.svg)](https://liberamanifesto.com) + +# @rollup/plugin-typescript + +🍣 A Rollup plugin for seamless integration between Rollup and Typescript. + +## Requirements + +This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v14.0.0+) and Rollup v2.14.0+. This plugin also requires at least [TypeScript 3.7](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html). + +## Install + +Using npm: + +```console +npm install @rollup/plugin-typescript --save-dev +``` + +Note that both `typescript` and `tslib` are peer dependencies of this plugin that need to be installed separately. + +## Why? + +See [@rollup/plugin-babel](https://github.com/rollup/plugins/tree/master/packages/babel). + +## Usage + +Create a `rollup.config.js` [configuration file](https://www.rollupjs.org/guide/en/#configuration-files) and import the plugin: + +```js +// rollup.config.js +import typescript from '@rollup/plugin-typescript'; + +export default { + input: 'src/index.ts', + output: { + dir: 'output', + format: 'cjs' + }, + plugins: [typescript()] +}; +``` + +Then call `rollup` either via the [CLI](https://www.rollupjs.org/guide/en/#command-line-reference) or the [API](https://www.rollupjs.org/guide/en/#javascript-api). + +## Options + +The plugin loads any [`compilerOptions`](http://www.typescriptlang.org/docs/handbook/compiler-options.html) from the `tsconfig.json` file by default. Passing options to the plugin directly overrides those options: + +```js +... +export default { + input: './main.ts', + plugins: [ + typescript({ compilerOptions: {lib: ["es5", "es6", "dom"], target: "es5"}}) + ] +} +``` + +The following options are unique to `@rollup/plugin-typescript`: + +### `exclude` + +Type: `String` | `Array[...String]`
+Default: `null` + +A [picomatch pattern](https://github.com/micromatch/picomatch), or array of patterns, which specifies the files in the build the plugin should _ignore_. By default no files are ignored. + +### `include` + +Type: `String` | `Array[...String]`
+Default: `null` + +A [picomatch pattern](https://github.com/micromatch/picomatch), or array of patterns, which specifies the files in the build the plugin should operate on. By default all `.ts` and `.tsx` files are targeted. + +### `filterRoot` + +Type: `String` | `Boolean`
+Default: `rootDir` ?? `tsConfig.compilerOptions.rootDir` ?? `process.cwd()` + +Optionally resolves the include and exclude patterns against a directory other than `process.cwd()`. If a String is specified, then the value will be used as the base directory. Relative paths will be resolved against `process.cwd()` first. If `false`, then the patterns will not be resolved against any directory. + +By default, patterns resolve against the rootDir set in your TS config file. + +This can fix plugin errors when parsing files outside the current working directory (process.cwd()). + +### `tsconfig` + +Type: `String` | `Boolean`
+Default: `true` + +When set to false, ignores any options specified in the config file. If set to a string that corresponds to a file path, the specified file will be used as config file. + +### `typescript` + +Type: `import('typescript')`
+Default: _peer dependency_ + +Overrides the TypeScript module used for transpilation. + +```js +typescript({ + typescript: require('some-fork-of-typescript') +}); +``` + +### `tslib` + +Type: `String`
+Default: _peer dependency_ + +Overrides the injected TypeScript helpers with a custom version. + +```js +typescript({ + tslib: require.resolve('some-fork-of-tslib') +}); +``` + +### `transformers` + +Type: `{ [before | after | afterDeclarations]: TransformerFactory[] }`
+Default: `undefined` + +Allows registration of TypeScript custom transformers at any of the supported stages: + +- **before**: transformers will execute before the TypeScript's own transformers on raw TypeScript files +- **after**: transformers will execute after the TypeScript transformers on transpiled code +- **afterDeclarations**: transformers will execute after declaration file generation allowing to modify existing declaration files + +Supported transformer factories: + +- all **built-in** TypeScript custom transformer factories: + + - `import('typescript').TransformerFactory` annotated **TransformerFactory** bellow + - `import('typescript').CustomTransformerFactory` annotated **CustomTransformerFactory** bellow + +- **ProgramTransformerFactory** represents a transformer factory allowing the resulting transformer to grab a reference to the **Program** instance + + ```js + { + type: 'program', + factory: (program: Program) => TransformerFactory | CustomTransformerFactory + } + ``` + +- **TypeCheckerTransformerFactory** represents a transformer factory allowing the resulting transformer to grab a reference to the **TypeChecker** instance + ```js + { + type: 'typeChecker', + factory: (typeChecker: TypeChecker) => TransformerFactory | CustomTransformerFactory + } + ``` + +```js +typescript({ + transformers: { + before: [ + { + // Allow the transformer to get a Program reference in it's factory + type: 'program', + factory: (program) => { + return ProgramRequiringTransformerFactory(program); + } + }, + { + type: 'typeChecker', + factory: (typeChecker) => { + // Allow the transformer to get a TypeChecker reference in it's factory + return TypeCheckerRequiringTransformerFactory(typeChecker); + } + } + ], + after: [ + // You can use normal transformers directly + require('custom-transformer-based-on-Context') + ], + afterDeclarations: [ + // Or even define in place + function fixDeclarationFactory(context) { + return function fixDeclaration(source) { + function visitor(node) { + // Do real work here + + return ts.visitEachChild(node, visitor, context); + } + + return ts.visitEachChild(source, visitor, context); + }; + } + ] + } +}); +``` + +### `cacheDir` + +Type: `String`
+Default: _.rollup.cache_ + +When compiling with `incremental` or `composite` options the plugin will +store compiled files in this folder. This allows the use of incremental +compilation. + +```js +typescript({ + cacheDir: '.rollup.tscache' +}); +``` + +### `noForceEmit` + +Type: `Boolean`
+Default: `false` + +Earlier version of `@rollup/plugin-typescript` required that the `compilerOptions` `noEmit` and `emitDeclarationOnly` both false to guarantee that source code was fed into the next plugin/output. This is no longer true. This option disables the plugin forcing the values of those options and instead defers to the values set in `tsconfig.json`. + +`noForceEmit` can be very useful if you use with `@rollup/plugin-babel` and `@babel/preset-typescript`. Having `@rollup/plugin-typescript` only do typechecking / declarations with `"emitDeclarationOnly": true` while deferring to `@rollup/plugin-babel` for transpilation can dramatically reduce `rollup` build times for large projects. + +### Typescript compiler options + +Some of Typescript's [CompilerOptions](https://www.typescriptlang.org/docs/handbook/compiler-options.html) affect how Rollup builds files. + +#### `noEmitOnError` + +Type: `Boolean`
+Default: `false` + +If a type error is detected, the Rollup build is aborted when this option is set to true. + +#### `files`, `include`, `exclude` + +Type: `Array[...String]`
+Default: `[]` + +Declaration files are automatically included if they are listed in the `files` field in your `tsconfig.json` file. Source files in these fields are ignored as Rollup's configuration is used instead. + +#### Ignored options + +These compiler options are ignored by Rollup: + +- `noEmitHelpers`, `importHelpers`: The `tslib` helper module always must be used. +- `noEmit`, `emitDeclarationOnly`: Typescript needs to emit code for the plugin to work with. + - _Note: While this was true for early iterations of `@rollup/plugin-typescript`, it is no longer. To override this behavior, and defer to `tsconfig.json` for these options, see the [`noForceEmit`](#noForceEmit) option_ +- `noResolve`: Preventing Typescript from resolving code may break compilation + +### Importing CommonJS + +Though it is not recommended, it is possible to configure this plugin to handle imports of CommonJS files from TypeScript. For this, you need to specify `CommonJS` as the module format and add [`@rollup/plugin-commonjs`](https://github.com/rollup/plugins/tree/master/packages/commonjs) to transpile the CommonJS output generated by TypeScript to ES Modules so that rollup can process it. + +```js +// rollup.config.js +import typescript from '@rollup/plugin-typescript'; +import commonjs from '@rollup/plugin-commonjs'; + +export default { + input: './main.ts', + plugins: [ + typescript({ compilerOptions: { module: 'CommonJS' } }), + commonjs({ extensions: ['.js', '.ts'] }) // the ".ts" extension is required + ] +}; +``` + +Note that this will often result in less optimal output. + +### Preserving JSX output + +Whenever choosing to preserve JSX output to be further consumed by another transform step via `tsconfig` `compilerOptions` by setting `jsx: 'preserve'` or [overriding options](#options), please bear in mind that, by itself, this plugin won't be able to preserve JSX output, usually failing with: + +```sh +[!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript) +file.tsx (1:15) +1: export default Foobar + ^ +``` + +To prevent that, make sure to use the acorn plugin, namely `acorn-jsx`, which will make Rollup's parser acorn handle JSX tokens. (See https://rollupjs.org/guide/en/#acorninjectplugins) + +After adding `acorn-jsx` plugin, your Rollup config would look like the following, correctly preserving your JSX output. + +```js +import jsx from 'acorn-jsx'; +import typescript from '@rollup/plugin-typescript'; + +export default { + // … other options … + acornInjectPlugins: [jsx()], + plugins: [typescript({ compilerOptions: { jsx: 'preserve' } })] +}; +``` + +### Faster compiling + +Previous versions of this plugin used Typescript's `transpileModule` API, which is faster but does not perform typechecking and does not support cross-file features like `const enum`s and emit-less types. If you want this behaviour, you can use [@rollup/plugin-sucrase](https://github.com/rollup/plugins/tree/master/packages/sucrase) instead. + +## Meta + +[CONTRIBUTING](/.github/CONTRIBUTING.md) + +[LICENSE (MIT)](/LICENSE) diff --git a/node_modules/@rollup/plugin-typescript/dist/cjs/index.js b/node_modules/@rollup/plugin-typescript/dist/cjs/index.js new file mode 100644 index 0000000..ed9b1a0 --- /dev/null +++ b/node_modules/@rollup/plugin-typescript/dist/cjs/index.js @@ -0,0 +1,924 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var path = require('path'); +var pluginutils = require('@rollup/pluginutils'); +var typescript$1 = require('typescript'); +var url = require('url'); +var resolve = require('resolve'); +var fs = require('fs'); + +var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null; +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + } + n.default = e; + return Object.freeze(n); +} + +var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path); + +/** + * Create a format diagnostics host to use with the Typescript type checking APIs. + * Typescript hosts are used to represent the user's system, + * with an API for checking case sensitivity etc. + * @param compilerOptions Typescript compiler options. Affects functions such as `getNewLine`. + * @see https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API + */ +function createFormattingHost(ts, compilerOptions) { + return { + /** Returns the compiler options for the project. */ + getCompilationSettings: () => compilerOptions, + /** Returns the current working directory. */ + getCurrentDirectory: () => process.cwd(), + /** Returns the string that corresponds with the selected `NewLineKind`. */ + getNewLine() { + switch (compilerOptions.newLine) { + case ts.NewLineKind.CarriageReturnLineFeed: + return '\r\n'; + case ts.NewLineKind.LineFeed: + return '\n'; + default: + return ts.sys.newLine; + } + }, + /** Returns a lower case name on case insensitive systems, otherwise the original name. */ + getCanonicalFileName: (fileName) => ts.sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase() + }; +} + +/** + * Create a helper for resolving modules using Typescript. + * @param host Typescript host that extends `ModuleResolutionHost` + * with methods for sanitizing filenames and getting compiler options. + */ +function createModuleResolver(ts, host, filter) { + const compilerOptions = host.getCompilationSettings(); + const cache = ts.createModuleResolutionCache(process.cwd(), host.getCanonicalFileName, compilerOptions); + const moduleHost = { ...ts.sys, ...host }; + return (moduleName, containingFile, redirectedReference, mode) => { + const { resolvedModule } = ts.resolveModuleName(moduleName, containingFile, compilerOptions, moduleHost, cache, redirectedReference, mode); + /** + * If the module's path contains 'node_modules', ts considers it an external library and refuses to compile it, + * so we have to change the value of `isExternalLibraryImport` to false if it's true + * */ + if ((resolvedModule === null || resolvedModule === void 0 ? void 0 : resolvedModule.isExternalLibraryImport) && filter(resolvedModule === null || resolvedModule === void 0 ? void 0 : resolvedModule.resolvedFileName)) { + resolvedModule.isExternalLibraryImport = false; + } + return resolvedModule; + }; +} + +// const resolveIdAsync = (file: string, opts: AsyncOpts) => +// new Promise((fulfil, reject) => +// resolveId(file, opts, (err, contents) => +// err || typeof contents === 'undefined' ? reject(err) : fulfil(contents) +// ) +// ); +const resolveId = (file, opts) => resolve.sync(file, opts); +/** + * Returns code asynchronously for the tslib helper library. + */ +const getTsLibPath = () => { + // Note: This isn't preferable, but we've no other way to test this bit. Removing the tslib devDep + // during the test run doesn't work due to the nature of the pnpm flat node_modules, and + // other workspace dependencies that depenend upon tslib. + try { + // eslint-disable-next-line no-underscore-dangle + return resolveId(process.env.__TSLIB_TEST_PATH__ || 'tslib/tslib.es6.js', { + // @ts-ignore import.meta.url is allowed because the Rollup plugin injects the correct module format + basedir: url.fileURLToPath(new URL('.', (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)))) + }); + } + catch (_) { + return null; + } +}; + +/** + * Separate the Rollup plugin options from the Typescript compiler options, + * and normalize the Rollup options. + * @returns Object with normalized options: + * - `filter`: Checks if a file should be included. + * - `tsconfig`: Path to a tsconfig, or directive to ignore tsconfig. + * - `compilerOptions`: Custom Typescript compiler options that override tsconfig. + * - `typescript`: Instance of Typescript library (possibly custom). + * - `tslib`: ESM code from the tslib helper library (possibly custom). + */ +const getPluginOptions = (options) => { + const { cacheDir, exclude, include, filterRoot, noForceEmit, transformers, tsconfig, tslib, typescript, outputToFilesystem, compilerOptions, + // previously was compilerOptions + ...extra } = options; + return { + cacheDir, + include, + exclude, + filterRoot, + noForceEmit: noForceEmit || false, + tsconfig, + compilerOptions: { ...extra, ...compilerOptions }, + typescript: typescript || typescript$1, + tslib: tslib || getTsLibPath(), + transformers, + outputToFilesystem + }; +}; + +/** + * Converts a Typescript type error into an equivalent Rollup warning object. + */ +function diagnosticToWarning(ts, host, diagnostic) { + const pluginCode = `TS${diagnostic.code}`; + const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'); + // Build a Rollup warning object from the diagnostics object. + const warning = { + pluginCode, + message: `@rollup/plugin-typescript ${pluginCode}: ${message}` + }; + if (diagnostic.file) { + // Add information about the file location + const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); + warning.loc = { + column: character + 1, + line: line + 1, + file: diagnostic.file.fileName + }; + if (host) { + // Extract a code frame from Typescript + const formatted = ts.formatDiagnosticsWithColorAndContext([diagnostic], host); + // Typescript only exposes this formatter as a string prefixed with the flattened message. + // We need to remove it here since Rollup treats the properties as separate parts. + let frame = formatted.slice(formatted.indexOf(message) + message.length); + const newLine = host.getNewLine(); + if (frame.startsWith(newLine)) { + frame = frame.slice(frame.indexOf(newLine) + newLine.length); + } + warning.frame = frame; + } + } + return warning; +} + +const DEFAULT_COMPILER_OPTIONS = { + module: 'esnext', + skipLibCheck: true +}; +const OVERRIDABLE_EMIT_COMPILER_OPTIONS = { + noEmit: false, + emitDeclarationOnly: false +}; +const FORCED_COMPILER_OPTIONS = { + // Always use tslib + noEmitHelpers: true, + importHelpers: true, + // Preventing Typescript from resolving code may break compilation + noResolve: false +}; + +/* eslint-disable no-param-reassign */ +const DIRECTORY_PROPS = ['outDir', 'declarationDir']; +/** + * Mutates the compiler options to convert paths from relative to absolute. + * This should be used with compiler options passed through the Rollup plugin options, + * not those found from loading a tsconfig.json file. + * @param compilerOptions Compiler options to _mutate_. + * @param relativeTo Paths are resolved relative to this path. + */ +function makePathsAbsolute(compilerOptions, relativeTo) { + for (const pathProp of DIRECTORY_PROPS) { + if (compilerOptions[pathProp]) { + compilerOptions[pathProp] = path.resolve(relativeTo, compilerOptions[pathProp]); + } + } +} +/** + * Mutates the compiler options to normalize some values for Rollup. + * @param compilerOptions Compiler options to _mutate_. + * @returns True if the source map compiler option was not initially set. + */ +function normalizeCompilerOptions(ts, compilerOptions) { + let autoSetSourceMap = false; + if (compilerOptions.inlineSourceMap) { + // Force separate source map files for Rollup to work with. + compilerOptions.sourceMap = true; + compilerOptions.inlineSourceMap = false; + } + else if (typeof compilerOptions.sourceMap !== 'boolean') { + // Default to using source maps. + // If the plugin user sets sourceMap to false we keep that option. + compilerOptions.sourceMap = true; + // Using inlineSources to make sure typescript generate source content + // instead of source path. + compilerOptions.inlineSources = true; + autoSetSourceMap = true; + } + switch (compilerOptions.module) { + case ts.ModuleKind.ES2015: + case ts.ModuleKind.ESNext: + case ts.ModuleKind.Node16: + case ts.ModuleKind.NodeNext: + case ts.ModuleKind.CommonJS: + // OK module type + return autoSetSourceMap; + case ts.ModuleKind.None: + case ts.ModuleKind.AMD: + case ts.ModuleKind.UMD: + case ts.ModuleKind.System: { + // Invalid module type + const moduleType = ts.ModuleKind[compilerOptions.module]; + throw new Error(`@rollup/plugin-typescript: The module kind should be 'ES2015', 'ESNext', 'node16' or 'nodenext', found: '${moduleType}'`); + } + default: + // Unknown or unspecified module type, force ESNext + compilerOptions.module = ts.ModuleKind.ESNext; + } + return autoSetSourceMap; +} + +const { ModuleKind: ModuleKind$1, ModuleResolutionKind } = typescript$1; +function makeForcedCompilerOptions(noForceEmit) { + return { ...FORCED_COMPILER_OPTIONS, ...(noForceEmit ? {} : OVERRIDABLE_EMIT_COMPILER_OPTIONS) }; +} +/** + * Finds the path to the tsconfig file relative to the current working directory. + * @param relativePath Relative tsconfig path given by the user. + * If `false` is passed, then a null path is returned. + * @returns The absolute path, or null if the file does not exist. + */ +function getTsConfigPath(ts, relativePath) { + if (relativePath === false) + return null; + // Resolve path to file. `tsConfigOption` defaults to 'tsconfig.json'. + const tsConfigPath = path.resolve(process.cwd(), relativePath || 'tsconfig.json'); + if (!ts.sys.fileExists(tsConfigPath)) { + if (relativePath) { + // If an explicit path was provided but no file was found, throw + throw new Error(`Could not find specified tsconfig.json at ${tsConfigPath}`); + } + else { + return null; + } + } + return tsConfigPath; +} +/** + * Tries to read the tsconfig file at `tsConfigPath`. + * @param tsConfigPath Absolute path to tsconfig JSON file. + * @param explicitPath If true, the path was set by the plugin user. + * If false, the path was computed automatically. + */ +function readTsConfigFile(ts, tsConfigPath) { + const { config, error } = ts.readConfigFile(tsConfigPath, (path) => fs.readFileSync(path, 'utf8')); + if (error) { + throw Object.assign(Error(), diagnosticToWarning(ts, null, error)); + } + return config || {}; +} +/** + * Returns true if any of the `compilerOptions` contain an enum value (i.e.: ts.ScriptKind) rather than a string. + * This indicates that the internal CompilerOptions type is used rather than the JsonCompilerOptions. + */ +function containsEnumOptions(compilerOptions) { + const enums = [ + 'module', + 'target', + 'jsx', + 'moduleResolution', + 'newLine' + ]; + return enums.some((prop) => prop in compilerOptions && typeof compilerOptions[prop] === 'number'); +} +/** + * The module resolution kind is a function of the resolved `compilerOptions.module`. + * This needs to be set explicitly for `resolveModuleName` to select the correct resolution method + */ +function setModuleResolutionKind(parsedConfig) { + const moduleKind = parsedConfig.options.module; + // Fallback if `parsedConfig.options.moduleResolution` is not set + const moduleResolution = moduleKind === ModuleKind$1.Node16 + ? ModuleResolutionKind.Node16 + : moduleKind === ModuleKind$1.NodeNext + ? ModuleResolutionKind.NodeNext + : ModuleResolutionKind.NodeJs; + return { + ...parsedConfig, + options: { + moduleResolution, + ...parsedConfig.options + } + }; +} +const configCache = new Map(); +/** + * Parse the Typescript config to use with the plugin. + * @param ts Typescript library instance. + * @param tsconfig Path to the tsconfig file, or `false` to ignore the file. + * @param compilerOptions Options passed to the plugin directly for Typescript. + * + * @returns Parsed tsconfig.json file with some important properties: + * - `options`: Parsed compiler options. + * - `fileNames` Type definition files that should be included in the build. + * - `errors`: Any errors from parsing the config file. + */ +function parseTypescriptConfig(ts, tsconfig, compilerOptions, noForceEmit) { + /* eslint-disable no-undefined */ + const cwd = process.cwd(); + makePathsAbsolute(compilerOptions, cwd); + let parsedConfig; + // Resolve path to file. If file is not found, pass undefined path to `parseJsonConfigFileContent`. + // eslint-disable-next-line no-undefined + const tsConfigPath = getTsConfigPath(ts, tsconfig) || undefined; + const tsConfigFile = tsConfigPath ? readTsConfigFile(ts, tsConfigPath) : {}; + const basePath = tsConfigPath ? path.dirname(tsConfigPath) : cwd; + // If compilerOptions has enums, it represents an CompilerOptions object instead of parsed JSON. + // This determines where the data is passed to the parser. + if (containsEnumOptions(compilerOptions)) { + parsedConfig = setModuleResolutionKind(ts.parseJsonConfigFileContent({ + ...tsConfigFile, + compilerOptions: { + ...DEFAULT_COMPILER_OPTIONS, + ...tsConfigFile.compilerOptions + } + }, ts.sys, basePath, { ...compilerOptions, ...makeForcedCompilerOptions(noForceEmit) }, tsConfigPath, undefined, undefined, configCache)); + } + else { + parsedConfig = setModuleResolutionKind(ts.parseJsonConfigFileContent({ + ...tsConfigFile, + compilerOptions: { + ...DEFAULT_COMPILER_OPTIONS, + ...tsConfigFile.compilerOptions, + ...compilerOptions + } + }, ts.sys, basePath, makeForcedCompilerOptions(noForceEmit), tsConfigPath, undefined, undefined, configCache)); + } + const autoSetSourceMap = normalizeCompilerOptions(ts, parsedConfig.options); + return { + ...parsedConfig, + autoSetSourceMap + }; +} +/** + * If errors are detected in the parsed options, + * display all of them as warnings then emit an error. + */ +function emitParsedOptionsErrors(ts, context, parsedOptions) { + if (parsedOptions.errors.length > 0) { + parsedOptions.errors.forEach((error) => context.warn(diagnosticToWarning(ts, null, error))); + context.error(`@rollup/plugin-typescript: Couldn't process compiler options`); + } +} + +/** + * Validate that the `compilerOptions.sourceMap` option matches `outputOptions.sourcemap`. + * @param context Rollup plugin context used to emit warnings. + * @param compilerOptions Typescript compiler options. + * @param outputOptions Rollup output options. + * @param autoSetSourceMap True if the `compilerOptions.sourceMap` property was set to `true` + * by the plugin, not the user. + */ +function validateSourceMap(context, compilerOptions, outputOptions, autoSetSourceMap) { + if (compilerOptions.sourceMap && !outputOptions.sourcemap && !autoSetSourceMap) { + context.warn(`@rollup/plugin-typescript: Rollup 'sourcemap' option must be set to generate source maps.`); + } + else if (!compilerOptions.sourceMap && outputOptions.sourcemap) { + context.warn(`@rollup/plugin-typescript: Typescript 'sourceMap' compiler option must be set to generate source maps.`); + } +} +/** + * Validate that the out directory used by Typescript can be controlled by Rollup. + * @param context Rollup plugin context used to emit errors. + * @param compilerOptions Typescript compiler options. + * @param outputOptions Rollup output options. + */ +function validatePaths(context, compilerOptions, outputOptions) { + if (compilerOptions.out) { + context.error(`@rollup/plugin-typescript: Deprecated Typescript compiler option 'out' is not supported. Use 'outDir' instead.`); + } + else if (compilerOptions.outFile) { + context.error(`@rollup/plugin-typescript: Typescript compiler option 'outFile' is not supported. Use 'outDir' instead.`); + } + for (const dirProperty of DIRECTORY_PROPS) { + if (compilerOptions[dirProperty] && outputOptions.dir) { + // Checks if the given path lies within Rollup output dir + const fromRollupDirToTs = path.relative(outputOptions.dir, compilerOptions[dirProperty]); + if (fromRollupDirToTs.startsWith('..')) { + context.error(`@rollup/plugin-typescript: Path of Typescript compiler option '${dirProperty}' must be located inside Rollup 'dir' option.`); + } + } + } + if (compilerOptions.declaration || compilerOptions.declarationMap || compilerOptions.composite) { + if (DIRECTORY_PROPS.every((dirProperty) => !compilerOptions[dirProperty])) { + context.error(`@rollup/plugin-typescript: You are using one of Typescript's compiler options 'declaration', 'declarationMap' or 'composite'. ` + + `In this case 'outDir' or 'declarationDir' must be specified to generate declaration files.`); + } + } +} + +/** + * Checks if the given OutputFile represents some code + */ +function isCodeOutputFile(name) { + return !isMapOutputFile(name) && !isDeclarationOutputFile(name); +} +/** + * Checks if the given OutputFile represents some source map + */ +function isMapOutputFile(name) { + return name.endsWith('.map'); +} +/** + * Checks if the given OutputFile represents some TypeScript source map + */ +function isTypeScriptMapOutputFile(name) { + return name.endsWith('ts.map'); +} +/** + * Checks if the given OutputFile represents some declaration + */ +function isDeclarationOutputFile(name) { + return /\.d\.[cm]?ts$/.test(name); +} +/** + * Returns the content of a filename either from the current + * typescript compiler instance or from the cached content. + * @param fileName The filename for the contents to retrieve + * @param emittedFiles The files emitted in the current typescript instance + * @param tsCache A cache to files cached by Typescript + */ +function getEmittedFile(fileName, emittedFiles, tsCache) { + let code; + if (fileName) { + if (emittedFiles.has(fileName)) { + code = emittedFiles.get(fileName); + } + else { + code = tsCache.getCached(fileName); + } + } + return code; +} +/** + * Finds the corresponding emitted Javascript files for a given Typescript file. + * @param id Path to the Typescript file. + * @param emittedFiles Map of file names to source code, + * containing files emitted by the Typescript compiler. + */ +function findTypescriptOutput(ts, parsedOptions, id, emittedFiles, tsCache) { + const emittedFileNames = ts.getOutputFileNames(parsedOptions, id, !ts.sys.useCaseSensitiveFileNames); + const codeFile = emittedFileNames.find(isCodeOutputFile); + const mapFile = emittedFileNames.find(isMapOutputFile); + return { + code: getEmittedFile(codeFile, emittedFiles, tsCache), + map: getEmittedFile(mapFile, emittedFiles, tsCache), + declarations: emittedFileNames.filter((name) => name !== codeFile && name !== mapFile) + }; +} +function normalizePath(fileName) { + return fileName.split(path__namespace.win32.sep).join(path__namespace.posix.sep); +} +async function emitFile({ dir }, outputToFilesystem, context, filePath, fileSource) { + const normalizedFilePath = normalizePath(filePath); + // const normalizedPath = normalizePath(filePath); + // Note: `dir` can be a value like `dist` in which case, `path.relative` could result in a value + // of something like `'../.tsbuildinfo'. Our else-case below needs to mimic `path.relative` + // returning a dot-notated relative path, so the first if-then branch is entered into + const relativePath = dir ? path__namespace.relative(dir, normalizedFilePath) : '..'; + // legal paths do not start with . nor .. : https://github.com/rollup/rollup/issues/3507#issuecomment-616495912 + if (relativePath.startsWith('..')) { + if (outputToFilesystem == null) { + context.warn(`@rollup/plugin-typescript: outputToFilesystem option is defaulting to true.`); + } + if (outputToFilesystem !== false) { + await fs.promises.mkdir(path__namespace.dirname(normalizedFilePath), { recursive: true }); + await fs.promises.writeFile(normalizedFilePath, fileSource); + } + } + else { + context.emitFile({ + type: 'asset', + fileName: relativePath, + source: fileSource + }); + } +} + +// import { resolveIdAsync } from './tslib'; +const { ModuleKind } = typescript$1; +const pluginName = '@rollup/plugin-typescript'; +const moduleErrorMessage = ` +${pluginName}: Rollup requires that TypeScript produces ES Modules. Unfortunately your configuration specifies a + "module" other than "esnext". Unless you know what you're doing, please change "module" to "esnext" + in the target tsconfig.json file or plugin options.`.replace(/\n/g, ''); +const tsLibErrorMessage = `${pluginName}: Could not find module 'tslib', which is required by this plugin. Is it installed?`; +let undef; +const validModules = [ + ModuleKind.ES2015, + ModuleKind.ES2020, + ModuleKind.ESNext, + ModuleKind.Node16, + ModuleKind.NodeNext, + undef +]; +// eslint-disable-next-line import/prefer-default-export +const preflight = ({ config, context, inputPreserveModules, tslib }) => { + if (!validModules.includes(config.options.module)) { + context.warn(moduleErrorMessage); + } + if (!inputPreserveModules && tslib === null) { + context.error(tsLibErrorMessage); + } +}; + +// `Cannot compile modules into 'es6' when targeting 'ES5' or lower.` +const CANNOT_COMPILE_ESM = 1204; +/** + * Emit a Rollup warning or error for a Typescript type error. + */ +function emitDiagnostic(ts, context, host, diagnostic) { + if (diagnostic.code === CANNOT_COMPILE_ESM) + return; + const { noEmitOnError } = host.getCompilationSettings(); + // Build a Rollup warning object from the diagnostics object. + const warning = diagnosticToWarning(ts, host, diagnostic); + // Errors are fatal. Otherwise emit warnings. + if (noEmitOnError && diagnostic.category === ts.DiagnosticCategory.Error) { + context.error(warning); + } + else { + context.warn(warning); + } +} +function buildDiagnosticReporter(ts, context, host) { + return function reportDiagnostics(diagnostic) { + emitDiagnostic(ts, context, host, diagnostic); + }; +} + +/** + * Merges all received custom transformer definitions into a single CustomTransformers object + */ +function mergeTransformers(builder, ...input) { + // List of all transformer stages + const transformerTypes = ['after', 'afterDeclarations', 'before']; + const accumulator = { + after: [], + afterDeclarations: [], + before: [] + }; + let program; + let typeChecker; + input.forEach((transformers) => { + if (!transformers) { + // Skip empty arguments lists + return; + } + transformerTypes.forEach((stage) => { + getTransformers(transformers[stage]).forEach((transformer) => { + if (!transformer) { + // Skip empty + return; + } + if ('type' in transformer) { + if (typeof transformer.factory === 'function') { + // Allow custom factories to grab the extra information required + program = program || builder.getProgram(); + typeChecker = typeChecker || program.getTypeChecker(); + let factory; + if (transformer.type === 'program') { + program = program || builder.getProgram(); + factory = transformer.factory(program); + } + else { + program = program || builder.getProgram(); + typeChecker = typeChecker || program.getTypeChecker(); + factory = transformer.factory(typeChecker); + } + // Forward the requested reference to the custom transformer factory + if (factory) { + accumulator[stage].push(factory); + } + } + } + else { + // Add normal transformer factories as is + accumulator[stage].push(transformer); + } + }); + }); + }); + return accumulator; +} +function getTransformers(transformers) { + return transformers || []; +} + +const { DiagnosticCategory } = typescript$1; +// @see https://github.com/microsoft/TypeScript/blob/master/src/compiler/diagnosticMessages.json +// eslint-disable-next-line no-shadow +var DiagnosticCode; +(function (DiagnosticCode) { + DiagnosticCode[DiagnosticCode["FILE_CHANGE_DETECTED"] = 6032] = "FILE_CHANGE_DETECTED"; + DiagnosticCode[DiagnosticCode["FOUND_1_ERROR_WATCHING_FOR_FILE_CHANGES"] = 6193] = "FOUND_1_ERROR_WATCHING_FOR_FILE_CHANGES"; + DiagnosticCode[DiagnosticCode["FOUND_N_ERRORS_WATCHING_FOR_FILE_CHANGES"] = 6194] = "FOUND_N_ERRORS_WATCHING_FOR_FILE_CHANGES"; +})(DiagnosticCode || (DiagnosticCode = {})); +function createDeferred(timeout) { + let promise; + let resolve = () => { }; + if (timeout) { + promise = Promise.race([ + new Promise((r) => setTimeout(r, timeout, true)), + new Promise((r) => (resolve = r)) + ]); + } + else { + promise = new Promise((r) => (resolve = r)); + } + return { promise, resolve }; +} +/** + * Typescript watch program helper to sync Typescript watch status with Rollup hooks. + */ +class WatchProgramHelper { + constructor() { + this._startDeferred = null; + this._finishDeferred = null; + } + watch(timeout = 1000) { + // Race watcher start promise against a timeout in case Typescript and Rollup change detection is not in sync. + this._startDeferred = createDeferred(timeout); + this._finishDeferred = createDeferred(); + } + handleStatus(diagnostic) { + // Fullfil deferred promises by Typescript diagnostic message codes. + if (diagnostic.category === DiagnosticCategory.Message) { + switch (diagnostic.code) { + case DiagnosticCode.FILE_CHANGE_DETECTED: + this.resolveStart(); + break; + case DiagnosticCode.FOUND_1_ERROR_WATCHING_FOR_FILE_CHANGES: + case DiagnosticCode.FOUND_N_ERRORS_WATCHING_FOR_FILE_CHANGES: + this.resolveFinish(); + break; + } + } + } + resolveStart() { + if (this._startDeferred) { + this._startDeferred.resolve(false); + this._startDeferred = null; + } + } + resolveFinish() { + if (this._finishDeferred) { + this._finishDeferred.resolve(false); + this._finishDeferred = null; + } + } + async wait() { + var _a; + if (this._startDeferred) { + const timeout = await this._startDeferred.promise; + // If there is no file change detected by Typescript skip deferred promises. + if (timeout) { + this._startDeferred = null; + this._finishDeferred = null; + } + await ((_a = this._finishDeferred) === null || _a === void 0 ? void 0 : _a.promise); + } + } +} +/** + * Create a language service host to use with the Typescript compiler & type checking APIs. + * Typescript hosts are used to represent the user's system, + * with an API for reading files, checking directories and case sensitivity etc. + * @see https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API + */ +function createWatchHost(ts, context, { formatHost, parsedOptions, writeFile, status, resolveModule, transformers }) { + const createProgram = ts.createEmitAndSemanticDiagnosticsBuilderProgram; + const baseHost = ts.createWatchCompilerHost(parsedOptions.fileNames, parsedOptions.options, ts.sys, createProgram, buildDiagnosticReporter(ts, context, formatHost), status, parsedOptions.projectReferences); + return { + ...baseHost, + /** Override the created program so an in-memory emit is used */ + afterProgramCreate(program) { + const origEmit = program.emit; + // eslint-disable-next-line no-param-reassign + program.emit = (targetSourceFile, _, ...args) => origEmit(targetSourceFile, writeFile, + // cancellationToken + args[0], + // emitOnlyDtsFiles + args[1], mergeTransformers(program, transformers, args[2])); + return baseHost.afterProgramCreate(program); + }, + /** Add helper to deal with module resolution */ + resolveModuleNames(moduleNames, containingFile, _reusedNames, redirectedReference, _optionsOnlyWithNewerTsVersions, containingSourceFile) { + return moduleNames.map((moduleName, i) => { + var _a; + const mode = containingSourceFile + ? (_a = ts.getModeForResolutionAtIndex) === null || _a === void 0 ? void 0 : _a.call(ts, containingSourceFile, i) + : undefined; // eslint-disable-line no-undefined + return resolveModule(moduleName, containingFile, redirectedReference, mode); + }); + } + }; +} +function createWatchProgram(ts, context, options) { + return ts.createWatchProgram(createWatchHost(ts, context, options)); +} + +/** Creates the folders needed given a path to a file to be saved*/ +const createFileFolder = (filePath) => { + const folderPath = path.dirname(filePath); + fs.mkdirSync(folderPath, { recursive: true }); +}; +class TSCache { + constructor(cacheFolder = '.rollup.cache') { + this._cacheFolder = cacheFolder; + } + /** Returns the path to the cached file */ + cachedFilename(fileName) { + return path.join(this._cacheFolder, fileName.replace(/^([a-zA-Z]+):/, '$1')); + } + /** Emits a file in the cache folder */ + cacheCode(fileName, code) { + const cachedPath = this.cachedFilename(fileName); + createFileFolder(cachedPath); + fs.writeFileSync(cachedPath, code); + } + /** Checks if a file is in the cache */ + isCached(fileName) { + return fs.existsSync(this.cachedFilename(fileName)); + } + /** Read a file from the cache given the output name*/ + getCached(fileName) { + let code; + if (this.isCached(fileName)) { + code = fs.readFileSync(this.cachedFilename(fileName), { encoding: 'utf-8' }); + } + return code; + } +} + +function typescript(options = {}) { + const { cacheDir, compilerOptions, exclude, filterRoot, include, outputToFilesystem, noForceEmit, transformers, tsconfig, tslib, typescript: ts } = getPluginOptions(options); + const tsCache = new TSCache(cacheDir); + const emittedFiles = new Map(); + const watchProgramHelper = new WatchProgramHelper(); + const parsedOptions = parseTypescriptConfig(ts, tsconfig, compilerOptions, noForceEmit); + const filter = pluginutils.createFilter(include || '{,**/}*.(cts|mts|ts|tsx)', exclude, { + resolve: filterRoot !== null && filterRoot !== void 0 ? filterRoot : parsedOptions.options.rootDir + }); + parsedOptions.fileNames = parsedOptions.fileNames.filter(filter); + const formatHost = createFormattingHost(ts, parsedOptions.options); + const resolveModule = createModuleResolver(ts, formatHost, filter); + let program = null; + return { + name: 'typescript', + buildStart(rollupOptions) { + emitParsedOptionsErrors(ts, this, parsedOptions); + preflight({ + config: parsedOptions, + context: this, + // TODO drop rollup@3 support and remove + inputPreserveModules: rollupOptions + .preserveModules, + tslib + }); + // Fixes a memory leak https://github.com/rollup/plugins/issues/322 + if (this.meta.watchMode !== true) { + // eslint-disable-next-line + program === null || program === void 0 ? void 0 : program.close(); + program = null; + } + if (!program) { + program = createWatchProgram(ts, this, { + formatHost, + resolveModule, + parsedOptions, + writeFile(fileName, data) { + if (parsedOptions.options.composite || parsedOptions.options.incremental) { + tsCache.cacheCode(fileName, data); + } + emittedFiles.set(fileName, data); + }, + status(diagnostic) { + watchProgramHelper.handleStatus(diagnostic); + }, + transformers + }); + } + }, + watchChange(id) { + if (!filter(id)) + return; + watchProgramHelper.watch(); + }, + buildEnd() { + if (this.meta.watchMode !== true) { + // ESLint doesn't understand optional chaining + // eslint-disable-next-line + program === null || program === void 0 ? void 0 : program.close(); + } + }, + renderStart(outputOptions) { + validateSourceMap(this, parsedOptions.options, outputOptions, parsedOptions.autoSetSourceMap); + validatePaths(this, parsedOptions.options, outputOptions); + }, + resolveId(importee, importer) { + if (importee === 'tslib') { + return tslib; + } + if (!importer) + return null; + // Convert path from windows separators to posix separators + const containingFile = normalizePath(importer); + // when using node16 or nodenext module resolution, we need to tell ts if + // we are resolving to a commonjs or esnext module + const mode = typeof ts.getImpliedNodeFormatForFile === 'function' + ? ts.getImpliedNodeFormatForFile( + // @ts-expect-error + containingFile, undefined, // eslint-disable-line no-undefined + { ...ts.sys, ...formatHost }, parsedOptions.options) + : undefined; // eslint-disable-line no-undefined + // eslint-disable-next-line no-undefined + const resolved = resolveModule(importee, containingFile, undefined, mode); + if (resolved) { + if (/\.d\.[cm]?ts/.test(resolved.extension)) + return null; + if (!filter(resolved.resolvedFileName)) + return null; + return path__namespace.normalize(resolved.resolvedFileName); + } + return null; + }, + async load(id) { + if (!filter(id)) + return null; + this.addWatchFile(id); + await watchProgramHelper.wait(); + const fileName = normalizePath(id); + if (!parsedOptions.fileNames.includes(fileName)) { + // Discovered new file that was not known when originally parsing the TypeScript config + parsedOptions.fileNames.push(fileName); + } + const output = findTypescriptOutput(ts, parsedOptions, id, emittedFiles, tsCache); + return output.code != null ? output : null; + }, + async generateBundle(outputOptions) { + const declarationAndTypeScriptMapFiles = [...emittedFiles.keys()].filter((fileName) => isDeclarationOutputFile(fileName) || isTypeScriptMapOutputFile(fileName)); + declarationAndTypeScriptMapFiles.forEach((id) => { + const code = getEmittedFile(id, emittedFiles, tsCache); + if (!code || !parsedOptions.options.declaration) { + return; + } + let baseDir; + if (outputOptions.dir) { + baseDir = outputOptions.dir; + } + else if (outputOptions.file) { + // find common path of output.file and configured declation output + const outputDir = path__namespace.dirname(outputOptions.file); + const configured = path__namespace.resolve(parsedOptions.options.declarationDir || + parsedOptions.options.outDir || + tsconfig || + process.cwd()); + const backwards = path__namespace + .relative(outputDir, configured) + .split(path__namespace.sep) + .filter((v) => v === '..') + .join(path__namespace.sep); + baseDir = path__namespace.normalize(`${outputDir}/${backwards}`); + } + if (!baseDir) + return; + this.emitFile({ + type: 'asset', + fileName: normalizePath(path__namespace.relative(baseDir, id)), + source: code + }); + }); + const tsBuildInfoPath = ts.getTsBuildInfoEmitOutputFilePath(parsedOptions.options); + if (tsBuildInfoPath) { + const tsBuildInfoSource = emittedFiles.get(tsBuildInfoPath); + // https://github.com/rollup/plugins/issues/681 + if (tsBuildInfoSource) { + await emitFile(outputOptions, outputToFilesystem, this, tsBuildInfoPath, tsBuildInfoSource); + } + } + } + }; +} + +exports.default = typescript; +module.exports = Object.assign(exports.default, exports); +//# sourceMappingURL=index.js.map diff --git a/node_modules/@rollup/plugin-typescript/dist/es/index.js b/node_modules/@rollup/plugin-typescript/dist/es/index.js new file mode 100644 index 0000000..eba9b05 --- /dev/null +++ b/node_modules/@rollup/plugin-typescript/dist/es/index.js @@ -0,0 +1,900 @@ +import * as path from 'path'; +import path__default, { resolve as resolve$1, dirname, relative } from 'path'; +import { createFilter } from '@rollup/pluginutils'; +import typescript$1 from 'typescript'; +import { fileURLToPath } from 'url'; +import resolve from 'resolve'; +import fs, { readFileSync, promises } from 'fs'; + +/** + * Create a format diagnostics host to use with the Typescript type checking APIs. + * Typescript hosts are used to represent the user's system, + * with an API for checking case sensitivity etc. + * @param compilerOptions Typescript compiler options. Affects functions such as `getNewLine`. + * @see https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API + */ +function createFormattingHost(ts, compilerOptions) { + return { + /** Returns the compiler options for the project. */ + getCompilationSettings: () => compilerOptions, + /** Returns the current working directory. */ + getCurrentDirectory: () => process.cwd(), + /** Returns the string that corresponds with the selected `NewLineKind`. */ + getNewLine() { + switch (compilerOptions.newLine) { + case ts.NewLineKind.CarriageReturnLineFeed: + return '\r\n'; + case ts.NewLineKind.LineFeed: + return '\n'; + default: + return ts.sys.newLine; + } + }, + /** Returns a lower case name on case insensitive systems, otherwise the original name. */ + getCanonicalFileName: (fileName) => ts.sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase() + }; +} + +/** + * Create a helper for resolving modules using Typescript. + * @param host Typescript host that extends `ModuleResolutionHost` + * with methods for sanitizing filenames and getting compiler options. + */ +function createModuleResolver(ts, host, filter) { + const compilerOptions = host.getCompilationSettings(); + const cache = ts.createModuleResolutionCache(process.cwd(), host.getCanonicalFileName, compilerOptions); + const moduleHost = { ...ts.sys, ...host }; + return (moduleName, containingFile, redirectedReference, mode) => { + const { resolvedModule } = ts.resolveModuleName(moduleName, containingFile, compilerOptions, moduleHost, cache, redirectedReference, mode); + /** + * If the module's path contains 'node_modules', ts considers it an external library and refuses to compile it, + * so we have to change the value of `isExternalLibraryImport` to false if it's true + * */ + if ((resolvedModule === null || resolvedModule === void 0 ? void 0 : resolvedModule.isExternalLibraryImport) && filter(resolvedModule === null || resolvedModule === void 0 ? void 0 : resolvedModule.resolvedFileName)) { + resolvedModule.isExternalLibraryImport = false; + } + return resolvedModule; + }; +} + +// const resolveIdAsync = (file: string, opts: AsyncOpts) => +// new Promise((fulfil, reject) => +// resolveId(file, opts, (err, contents) => +// err || typeof contents === 'undefined' ? reject(err) : fulfil(contents) +// ) +// ); +const resolveId = (file, opts) => resolve.sync(file, opts); +/** + * Returns code asynchronously for the tslib helper library. + */ +const getTsLibPath = () => { + // Note: This isn't preferable, but we've no other way to test this bit. Removing the tslib devDep + // during the test run doesn't work due to the nature of the pnpm flat node_modules, and + // other workspace dependencies that depenend upon tslib. + try { + // eslint-disable-next-line no-underscore-dangle + return resolveId(process.env.__TSLIB_TEST_PATH__ || 'tslib/tslib.es6.js', { + // @ts-ignore import.meta.url is allowed because the Rollup plugin injects the correct module format + basedir: fileURLToPath(new URL('.', import.meta.url)) + }); + } + catch (_) { + return null; + } +}; + +/** + * Separate the Rollup plugin options from the Typescript compiler options, + * and normalize the Rollup options. + * @returns Object with normalized options: + * - `filter`: Checks if a file should be included. + * - `tsconfig`: Path to a tsconfig, or directive to ignore tsconfig. + * - `compilerOptions`: Custom Typescript compiler options that override tsconfig. + * - `typescript`: Instance of Typescript library (possibly custom). + * - `tslib`: ESM code from the tslib helper library (possibly custom). + */ +const getPluginOptions = (options) => { + const { cacheDir, exclude, include, filterRoot, noForceEmit, transformers, tsconfig, tslib, typescript, outputToFilesystem, compilerOptions, + // previously was compilerOptions + ...extra } = options; + return { + cacheDir, + include, + exclude, + filterRoot, + noForceEmit: noForceEmit || false, + tsconfig, + compilerOptions: { ...extra, ...compilerOptions }, + typescript: typescript || typescript$1, + tslib: tslib || getTsLibPath(), + transformers, + outputToFilesystem + }; +}; + +/** + * Converts a Typescript type error into an equivalent Rollup warning object. + */ +function diagnosticToWarning(ts, host, diagnostic) { + const pluginCode = `TS${diagnostic.code}`; + const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'); + // Build a Rollup warning object from the diagnostics object. + const warning = { + pluginCode, + message: `@rollup/plugin-typescript ${pluginCode}: ${message}` + }; + if (diagnostic.file) { + // Add information about the file location + const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); + warning.loc = { + column: character + 1, + line: line + 1, + file: diagnostic.file.fileName + }; + if (host) { + // Extract a code frame from Typescript + const formatted = ts.formatDiagnosticsWithColorAndContext([diagnostic], host); + // Typescript only exposes this formatter as a string prefixed with the flattened message. + // We need to remove it here since Rollup treats the properties as separate parts. + let frame = formatted.slice(formatted.indexOf(message) + message.length); + const newLine = host.getNewLine(); + if (frame.startsWith(newLine)) { + frame = frame.slice(frame.indexOf(newLine) + newLine.length); + } + warning.frame = frame; + } + } + return warning; +} + +const DEFAULT_COMPILER_OPTIONS = { + module: 'esnext', + skipLibCheck: true +}; +const OVERRIDABLE_EMIT_COMPILER_OPTIONS = { + noEmit: false, + emitDeclarationOnly: false +}; +const FORCED_COMPILER_OPTIONS = { + // Always use tslib + noEmitHelpers: true, + importHelpers: true, + // Preventing Typescript from resolving code may break compilation + noResolve: false +}; + +/* eslint-disable no-param-reassign */ +const DIRECTORY_PROPS = ['outDir', 'declarationDir']; +/** + * Mutates the compiler options to convert paths from relative to absolute. + * This should be used with compiler options passed through the Rollup plugin options, + * not those found from loading a tsconfig.json file. + * @param compilerOptions Compiler options to _mutate_. + * @param relativeTo Paths are resolved relative to this path. + */ +function makePathsAbsolute(compilerOptions, relativeTo) { + for (const pathProp of DIRECTORY_PROPS) { + if (compilerOptions[pathProp]) { + compilerOptions[pathProp] = resolve$1(relativeTo, compilerOptions[pathProp]); + } + } +} +/** + * Mutates the compiler options to normalize some values for Rollup. + * @param compilerOptions Compiler options to _mutate_. + * @returns True if the source map compiler option was not initially set. + */ +function normalizeCompilerOptions(ts, compilerOptions) { + let autoSetSourceMap = false; + if (compilerOptions.inlineSourceMap) { + // Force separate source map files for Rollup to work with. + compilerOptions.sourceMap = true; + compilerOptions.inlineSourceMap = false; + } + else if (typeof compilerOptions.sourceMap !== 'boolean') { + // Default to using source maps. + // If the plugin user sets sourceMap to false we keep that option. + compilerOptions.sourceMap = true; + // Using inlineSources to make sure typescript generate source content + // instead of source path. + compilerOptions.inlineSources = true; + autoSetSourceMap = true; + } + switch (compilerOptions.module) { + case ts.ModuleKind.ES2015: + case ts.ModuleKind.ESNext: + case ts.ModuleKind.Node16: + case ts.ModuleKind.NodeNext: + case ts.ModuleKind.CommonJS: + // OK module type + return autoSetSourceMap; + case ts.ModuleKind.None: + case ts.ModuleKind.AMD: + case ts.ModuleKind.UMD: + case ts.ModuleKind.System: { + // Invalid module type + const moduleType = ts.ModuleKind[compilerOptions.module]; + throw new Error(`@rollup/plugin-typescript: The module kind should be 'ES2015', 'ESNext', 'node16' or 'nodenext', found: '${moduleType}'`); + } + default: + // Unknown or unspecified module type, force ESNext + compilerOptions.module = ts.ModuleKind.ESNext; + } + return autoSetSourceMap; +} + +const { ModuleKind: ModuleKind$1, ModuleResolutionKind } = typescript$1; +function makeForcedCompilerOptions(noForceEmit) { + return { ...FORCED_COMPILER_OPTIONS, ...(noForceEmit ? {} : OVERRIDABLE_EMIT_COMPILER_OPTIONS) }; +} +/** + * Finds the path to the tsconfig file relative to the current working directory. + * @param relativePath Relative tsconfig path given by the user. + * If `false` is passed, then a null path is returned. + * @returns The absolute path, or null if the file does not exist. + */ +function getTsConfigPath(ts, relativePath) { + if (relativePath === false) + return null; + // Resolve path to file. `tsConfigOption` defaults to 'tsconfig.json'. + const tsConfigPath = resolve$1(process.cwd(), relativePath || 'tsconfig.json'); + if (!ts.sys.fileExists(tsConfigPath)) { + if (relativePath) { + // If an explicit path was provided but no file was found, throw + throw new Error(`Could not find specified tsconfig.json at ${tsConfigPath}`); + } + else { + return null; + } + } + return tsConfigPath; +} +/** + * Tries to read the tsconfig file at `tsConfigPath`. + * @param tsConfigPath Absolute path to tsconfig JSON file. + * @param explicitPath If true, the path was set by the plugin user. + * If false, the path was computed automatically. + */ +function readTsConfigFile(ts, tsConfigPath) { + const { config, error } = ts.readConfigFile(tsConfigPath, (path) => readFileSync(path, 'utf8')); + if (error) { + throw Object.assign(Error(), diagnosticToWarning(ts, null, error)); + } + return config || {}; +} +/** + * Returns true if any of the `compilerOptions` contain an enum value (i.e.: ts.ScriptKind) rather than a string. + * This indicates that the internal CompilerOptions type is used rather than the JsonCompilerOptions. + */ +function containsEnumOptions(compilerOptions) { + const enums = [ + 'module', + 'target', + 'jsx', + 'moduleResolution', + 'newLine' + ]; + return enums.some((prop) => prop in compilerOptions && typeof compilerOptions[prop] === 'number'); +} +/** + * The module resolution kind is a function of the resolved `compilerOptions.module`. + * This needs to be set explicitly for `resolveModuleName` to select the correct resolution method + */ +function setModuleResolutionKind(parsedConfig) { + const moduleKind = parsedConfig.options.module; + // Fallback if `parsedConfig.options.moduleResolution` is not set + const moduleResolution = moduleKind === ModuleKind$1.Node16 + ? ModuleResolutionKind.Node16 + : moduleKind === ModuleKind$1.NodeNext + ? ModuleResolutionKind.NodeNext + : ModuleResolutionKind.NodeJs; + return { + ...parsedConfig, + options: { + moduleResolution, + ...parsedConfig.options + } + }; +} +const configCache = new Map(); +/** + * Parse the Typescript config to use with the plugin. + * @param ts Typescript library instance. + * @param tsconfig Path to the tsconfig file, or `false` to ignore the file. + * @param compilerOptions Options passed to the plugin directly for Typescript. + * + * @returns Parsed tsconfig.json file with some important properties: + * - `options`: Parsed compiler options. + * - `fileNames` Type definition files that should be included in the build. + * - `errors`: Any errors from parsing the config file. + */ +function parseTypescriptConfig(ts, tsconfig, compilerOptions, noForceEmit) { + /* eslint-disable no-undefined */ + const cwd = process.cwd(); + makePathsAbsolute(compilerOptions, cwd); + let parsedConfig; + // Resolve path to file. If file is not found, pass undefined path to `parseJsonConfigFileContent`. + // eslint-disable-next-line no-undefined + const tsConfigPath = getTsConfigPath(ts, tsconfig) || undefined; + const tsConfigFile = tsConfigPath ? readTsConfigFile(ts, tsConfigPath) : {}; + const basePath = tsConfigPath ? dirname(tsConfigPath) : cwd; + // If compilerOptions has enums, it represents an CompilerOptions object instead of parsed JSON. + // This determines where the data is passed to the parser. + if (containsEnumOptions(compilerOptions)) { + parsedConfig = setModuleResolutionKind(ts.parseJsonConfigFileContent({ + ...tsConfigFile, + compilerOptions: { + ...DEFAULT_COMPILER_OPTIONS, + ...tsConfigFile.compilerOptions + } + }, ts.sys, basePath, { ...compilerOptions, ...makeForcedCompilerOptions(noForceEmit) }, tsConfigPath, undefined, undefined, configCache)); + } + else { + parsedConfig = setModuleResolutionKind(ts.parseJsonConfigFileContent({ + ...tsConfigFile, + compilerOptions: { + ...DEFAULT_COMPILER_OPTIONS, + ...tsConfigFile.compilerOptions, + ...compilerOptions + } + }, ts.sys, basePath, makeForcedCompilerOptions(noForceEmit), tsConfigPath, undefined, undefined, configCache)); + } + const autoSetSourceMap = normalizeCompilerOptions(ts, parsedConfig.options); + return { + ...parsedConfig, + autoSetSourceMap + }; +} +/** + * If errors are detected in the parsed options, + * display all of them as warnings then emit an error. + */ +function emitParsedOptionsErrors(ts, context, parsedOptions) { + if (parsedOptions.errors.length > 0) { + parsedOptions.errors.forEach((error) => context.warn(diagnosticToWarning(ts, null, error))); + context.error(`@rollup/plugin-typescript: Couldn't process compiler options`); + } +} + +/** + * Validate that the `compilerOptions.sourceMap` option matches `outputOptions.sourcemap`. + * @param context Rollup plugin context used to emit warnings. + * @param compilerOptions Typescript compiler options. + * @param outputOptions Rollup output options. + * @param autoSetSourceMap True if the `compilerOptions.sourceMap` property was set to `true` + * by the plugin, not the user. + */ +function validateSourceMap(context, compilerOptions, outputOptions, autoSetSourceMap) { + if (compilerOptions.sourceMap && !outputOptions.sourcemap && !autoSetSourceMap) { + context.warn(`@rollup/plugin-typescript: Rollup 'sourcemap' option must be set to generate source maps.`); + } + else if (!compilerOptions.sourceMap && outputOptions.sourcemap) { + context.warn(`@rollup/plugin-typescript: Typescript 'sourceMap' compiler option must be set to generate source maps.`); + } +} +/** + * Validate that the out directory used by Typescript can be controlled by Rollup. + * @param context Rollup plugin context used to emit errors. + * @param compilerOptions Typescript compiler options. + * @param outputOptions Rollup output options. + */ +function validatePaths(context, compilerOptions, outputOptions) { + if (compilerOptions.out) { + context.error(`@rollup/plugin-typescript: Deprecated Typescript compiler option 'out' is not supported. Use 'outDir' instead.`); + } + else if (compilerOptions.outFile) { + context.error(`@rollup/plugin-typescript: Typescript compiler option 'outFile' is not supported. Use 'outDir' instead.`); + } + for (const dirProperty of DIRECTORY_PROPS) { + if (compilerOptions[dirProperty] && outputOptions.dir) { + // Checks if the given path lies within Rollup output dir + const fromRollupDirToTs = relative(outputOptions.dir, compilerOptions[dirProperty]); + if (fromRollupDirToTs.startsWith('..')) { + context.error(`@rollup/plugin-typescript: Path of Typescript compiler option '${dirProperty}' must be located inside Rollup 'dir' option.`); + } + } + } + if (compilerOptions.declaration || compilerOptions.declarationMap || compilerOptions.composite) { + if (DIRECTORY_PROPS.every((dirProperty) => !compilerOptions[dirProperty])) { + context.error(`@rollup/plugin-typescript: You are using one of Typescript's compiler options 'declaration', 'declarationMap' or 'composite'. ` + + `In this case 'outDir' or 'declarationDir' must be specified to generate declaration files.`); + } + } +} + +/** + * Checks if the given OutputFile represents some code + */ +function isCodeOutputFile(name) { + return !isMapOutputFile(name) && !isDeclarationOutputFile(name); +} +/** + * Checks if the given OutputFile represents some source map + */ +function isMapOutputFile(name) { + return name.endsWith('.map'); +} +/** + * Checks if the given OutputFile represents some TypeScript source map + */ +function isTypeScriptMapOutputFile(name) { + return name.endsWith('ts.map'); +} +/** + * Checks if the given OutputFile represents some declaration + */ +function isDeclarationOutputFile(name) { + return /\.d\.[cm]?ts$/.test(name); +} +/** + * Returns the content of a filename either from the current + * typescript compiler instance or from the cached content. + * @param fileName The filename for the contents to retrieve + * @param emittedFiles The files emitted in the current typescript instance + * @param tsCache A cache to files cached by Typescript + */ +function getEmittedFile(fileName, emittedFiles, tsCache) { + let code; + if (fileName) { + if (emittedFiles.has(fileName)) { + code = emittedFiles.get(fileName); + } + else { + code = tsCache.getCached(fileName); + } + } + return code; +} +/** + * Finds the corresponding emitted Javascript files for a given Typescript file. + * @param id Path to the Typescript file. + * @param emittedFiles Map of file names to source code, + * containing files emitted by the Typescript compiler. + */ +function findTypescriptOutput(ts, parsedOptions, id, emittedFiles, tsCache) { + const emittedFileNames = ts.getOutputFileNames(parsedOptions, id, !ts.sys.useCaseSensitiveFileNames); + const codeFile = emittedFileNames.find(isCodeOutputFile); + const mapFile = emittedFileNames.find(isMapOutputFile); + return { + code: getEmittedFile(codeFile, emittedFiles, tsCache), + map: getEmittedFile(mapFile, emittedFiles, tsCache), + declarations: emittedFileNames.filter((name) => name !== codeFile && name !== mapFile) + }; +} +function normalizePath(fileName) { + return fileName.split(path.win32.sep).join(path.posix.sep); +} +async function emitFile({ dir }, outputToFilesystem, context, filePath, fileSource) { + const normalizedFilePath = normalizePath(filePath); + // const normalizedPath = normalizePath(filePath); + // Note: `dir` can be a value like `dist` in which case, `path.relative` could result in a value + // of something like `'../.tsbuildinfo'. Our else-case below needs to mimic `path.relative` + // returning a dot-notated relative path, so the first if-then branch is entered into + const relativePath = dir ? path.relative(dir, normalizedFilePath) : '..'; + // legal paths do not start with . nor .. : https://github.com/rollup/rollup/issues/3507#issuecomment-616495912 + if (relativePath.startsWith('..')) { + if (outputToFilesystem == null) { + context.warn(`@rollup/plugin-typescript: outputToFilesystem option is defaulting to true.`); + } + if (outputToFilesystem !== false) { + await promises.mkdir(path.dirname(normalizedFilePath), { recursive: true }); + await promises.writeFile(normalizedFilePath, fileSource); + } + } + else { + context.emitFile({ + type: 'asset', + fileName: relativePath, + source: fileSource + }); + } +} + +// import { resolveIdAsync } from './tslib'; +const { ModuleKind } = typescript$1; +const pluginName = '@rollup/plugin-typescript'; +const moduleErrorMessage = ` +${pluginName}: Rollup requires that TypeScript produces ES Modules. Unfortunately your configuration specifies a + "module" other than "esnext". Unless you know what you're doing, please change "module" to "esnext" + in the target tsconfig.json file or plugin options.`.replace(/\n/g, ''); +const tsLibErrorMessage = `${pluginName}: Could not find module 'tslib', which is required by this plugin. Is it installed?`; +let undef; +const validModules = [ + ModuleKind.ES2015, + ModuleKind.ES2020, + ModuleKind.ESNext, + ModuleKind.Node16, + ModuleKind.NodeNext, + undef +]; +// eslint-disable-next-line import/prefer-default-export +const preflight = ({ config, context, inputPreserveModules, tslib }) => { + if (!validModules.includes(config.options.module)) { + context.warn(moduleErrorMessage); + } + if (!inputPreserveModules && tslib === null) { + context.error(tsLibErrorMessage); + } +}; + +// `Cannot compile modules into 'es6' when targeting 'ES5' or lower.` +const CANNOT_COMPILE_ESM = 1204; +/** + * Emit a Rollup warning or error for a Typescript type error. + */ +function emitDiagnostic(ts, context, host, diagnostic) { + if (diagnostic.code === CANNOT_COMPILE_ESM) + return; + const { noEmitOnError } = host.getCompilationSettings(); + // Build a Rollup warning object from the diagnostics object. + const warning = diagnosticToWarning(ts, host, diagnostic); + // Errors are fatal. Otherwise emit warnings. + if (noEmitOnError && diagnostic.category === ts.DiagnosticCategory.Error) { + context.error(warning); + } + else { + context.warn(warning); + } +} +function buildDiagnosticReporter(ts, context, host) { + return function reportDiagnostics(diagnostic) { + emitDiagnostic(ts, context, host, diagnostic); + }; +} + +/** + * Merges all received custom transformer definitions into a single CustomTransformers object + */ +function mergeTransformers(builder, ...input) { + // List of all transformer stages + const transformerTypes = ['after', 'afterDeclarations', 'before']; + const accumulator = { + after: [], + afterDeclarations: [], + before: [] + }; + let program; + let typeChecker; + input.forEach((transformers) => { + if (!transformers) { + // Skip empty arguments lists + return; + } + transformerTypes.forEach((stage) => { + getTransformers(transformers[stage]).forEach((transformer) => { + if (!transformer) { + // Skip empty + return; + } + if ('type' in transformer) { + if (typeof transformer.factory === 'function') { + // Allow custom factories to grab the extra information required + program = program || builder.getProgram(); + typeChecker = typeChecker || program.getTypeChecker(); + let factory; + if (transformer.type === 'program') { + program = program || builder.getProgram(); + factory = transformer.factory(program); + } + else { + program = program || builder.getProgram(); + typeChecker = typeChecker || program.getTypeChecker(); + factory = transformer.factory(typeChecker); + } + // Forward the requested reference to the custom transformer factory + if (factory) { + accumulator[stage].push(factory); + } + } + } + else { + // Add normal transformer factories as is + accumulator[stage].push(transformer); + } + }); + }); + }); + return accumulator; +} +function getTransformers(transformers) { + return transformers || []; +} + +const { DiagnosticCategory } = typescript$1; +// @see https://github.com/microsoft/TypeScript/blob/master/src/compiler/diagnosticMessages.json +// eslint-disable-next-line no-shadow +var DiagnosticCode; +(function (DiagnosticCode) { + DiagnosticCode[DiagnosticCode["FILE_CHANGE_DETECTED"] = 6032] = "FILE_CHANGE_DETECTED"; + DiagnosticCode[DiagnosticCode["FOUND_1_ERROR_WATCHING_FOR_FILE_CHANGES"] = 6193] = "FOUND_1_ERROR_WATCHING_FOR_FILE_CHANGES"; + DiagnosticCode[DiagnosticCode["FOUND_N_ERRORS_WATCHING_FOR_FILE_CHANGES"] = 6194] = "FOUND_N_ERRORS_WATCHING_FOR_FILE_CHANGES"; +})(DiagnosticCode || (DiagnosticCode = {})); +function createDeferred(timeout) { + let promise; + let resolve = () => { }; + if (timeout) { + promise = Promise.race([ + new Promise((r) => setTimeout(r, timeout, true)), + new Promise((r) => (resolve = r)) + ]); + } + else { + promise = new Promise((r) => (resolve = r)); + } + return { promise, resolve }; +} +/** + * Typescript watch program helper to sync Typescript watch status with Rollup hooks. + */ +class WatchProgramHelper { + constructor() { + this._startDeferred = null; + this._finishDeferred = null; + } + watch(timeout = 1000) { + // Race watcher start promise against a timeout in case Typescript and Rollup change detection is not in sync. + this._startDeferred = createDeferred(timeout); + this._finishDeferred = createDeferred(); + } + handleStatus(diagnostic) { + // Fullfil deferred promises by Typescript diagnostic message codes. + if (diagnostic.category === DiagnosticCategory.Message) { + switch (diagnostic.code) { + case DiagnosticCode.FILE_CHANGE_DETECTED: + this.resolveStart(); + break; + case DiagnosticCode.FOUND_1_ERROR_WATCHING_FOR_FILE_CHANGES: + case DiagnosticCode.FOUND_N_ERRORS_WATCHING_FOR_FILE_CHANGES: + this.resolveFinish(); + break; + } + } + } + resolveStart() { + if (this._startDeferred) { + this._startDeferred.resolve(false); + this._startDeferred = null; + } + } + resolveFinish() { + if (this._finishDeferred) { + this._finishDeferred.resolve(false); + this._finishDeferred = null; + } + } + async wait() { + var _a; + if (this._startDeferred) { + const timeout = await this._startDeferred.promise; + // If there is no file change detected by Typescript skip deferred promises. + if (timeout) { + this._startDeferred = null; + this._finishDeferred = null; + } + await ((_a = this._finishDeferred) === null || _a === void 0 ? void 0 : _a.promise); + } + } +} +/** + * Create a language service host to use with the Typescript compiler & type checking APIs. + * Typescript hosts are used to represent the user's system, + * with an API for reading files, checking directories and case sensitivity etc. + * @see https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API + */ +function createWatchHost(ts, context, { formatHost, parsedOptions, writeFile, status, resolveModule, transformers }) { + const createProgram = ts.createEmitAndSemanticDiagnosticsBuilderProgram; + const baseHost = ts.createWatchCompilerHost(parsedOptions.fileNames, parsedOptions.options, ts.sys, createProgram, buildDiagnosticReporter(ts, context, formatHost), status, parsedOptions.projectReferences); + return { + ...baseHost, + /** Override the created program so an in-memory emit is used */ + afterProgramCreate(program) { + const origEmit = program.emit; + // eslint-disable-next-line no-param-reassign + program.emit = (targetSourceFile, _, ...args) => origEmit(targetSourceFile, writeFile, + // cancellationToken + args[0], + // emitOnlyDtsFiles + args[1], mergeTransformers(program, transformers, args[2])); + return baseHost.afterProgramCreate(program); + }, + /** Add helper to deal with module resolution */ + resolveModuleNames(moduleNames, containingFile, _reusedNames, redirectedReference, _optionsOnlyWithNewerTsVersions, containingSourceFile) { + return moduleNames.map((moduleName, i) => { + var _a; + const mode = containingSourceFile + ? (_a = ts.getModeForResolutionAtIndex) === null || _a === void 0 ? void 0 : _a.call(ts, containingSourceFile, i) + : undefined; // eslint-disable-line no-undefined + return resolveModule(moduleName, containingFile, redirectedReference, mode); + }); + } + }; +} +function createWatchProgram(ts, context, options) { + return ts.createWatchProgram(createWatchHost(ts, context, options)); +} + +/** Creates the folders needed given a path to a file to be saved*/ +const createFileFolder = (filePath) => { + const folderPath = path__default.dirname(filePath); + fs.mkdirSync(folderPath, { recursive: true }); +}; +class TSCache { + constructor(cacheFolder = '.rollup.cache') { + this._cacheFolder = cacheFolder; + } + /** Returns the path to the cached file */ + cachedFilename(fileName) { + return path__default.join(this._cacheFolder, fileName.replace(/^([a-zA-Z]+):/, '$1')); + } + /** Emits a file in the cache folder */ + cacheCode(fileName, code) { + const cachedPath = this.cachedFilename(fileName); + createFileFolder(cachedPath); + fs.writeFileSync(cachedPath, code); + } + /** Checks if a file is in the cache */ + isCached(fileName) { + return fs.existsSync(this.cachedFilename(fileName)); + } + /** Read a file from the cache given the output name*/ + getCached(fileName) { + let code; + if (this.isCached(fileName)) { + code = fs.readFileSync(this.cachedFilename(fileName), { encoding: 'utf-8' }); + } + return code; + } +} + +function typescript(options = {}) { + const { cacheDir, compilerOptions, exclude, filterRoot, include, outputToFilesystem, noForceEmit, transformers, tsconfig, tslib, typescript: ts } = getPluginOptions(options); + const tsCache = new TSCache(cacheDir); + const emittedFiles = new Map(); + const watchProgramHelper = new WatchProgramHelper(); + const parsedOptions = parseTypescriptConfig(ts, tsconfig, compilerOptions, noForceEmit); + const filter = createFilter(include || '{,**/}*.(cts|mts|ts|tsx)', exclude, { + resolve: filterRoot !== null && filterRoot !== void 0 ? filterRoot : parsedOptions.options.rootDir + }); + parsedOptions.fileNames = parsedOptions.fileNames.filter(filter); + const formatHost = createFormattingHost(ts, parsedOptions.options); + const resolveModule = createModuleResolver(ts, formatHost, filter); + let program = null; + return { + name: 'typescript', + buildStart(rollupOptions) { + emitParsedOptionsErrors(ts, this, parsedOptions); + preflight({ + config: parsedOptions, + context: this, + // TODO drop rollup@3 support and remove + inputPreserveModules: rollupOptions + .preserveModules, + tslib + }); + // Fixes a memory leak https://github.com/rollup/plugins/issues/322 + if (this.meta.watchMode !== true) { + // eslint-disable-next-line + program === null || program === void 0 ? void 0 : program.close(); + program = null; + } + if (!program) { + program = createWatchProgram(ts, this, { + formatHost, + resolveModule, + parsedOptions, + writeFile(fileName, data) { + if (parsedOptions.options.composite || parsedOptions.options.incremental) { + tsCache.cacheCode(fileName, data); + } + emittedFiles.set(fileName, data); + }, + status(diagnostic) { + watchProgramHelper.handleStatus(diagnostic); + }, + transformers + }); + } + }, + watchChange(id) { + if (!filter(id)) + return; + watchProgramHelper.watch(); + }, + buildEnd() { + if (this.meta.watchMode !== true) { + // ESLint doesn't understand optional chaining + // eslint-disable-next-line + program === null || program === void 0 ? void 0 : program.close(); + } + }, + renderStart(outputOptions) { + validateSourceMap(this, parsedOptions.options, outputOptions, parsedOptions.autoSetSourceMap); + validatePaths(this, parsedOptions.options, outputOptions); + }, + resolveId(importee, importer) { + if (importee === 'tslib') { + return tslib; + } + if (!importer) + return null; + // Convert path from windows separators to posix separators + const containingFile = normalizePath(importer); + // when using node16 or nodenext module resolution, we need to tell ts if + // we are resolving to a commonjs or esnext module + const mode = typeof ts.getImpliedNodeFormatForFile === 'function' + ? ts.getImpliedNodeFormatForFile( + // @ts-expect-error + containingFile, undefined, // eslint-disable-line no-undefined + { ...ts.sys, ...formatHost }, parsedOptions.options) + : undefined; // eslint-disable-line no-undefined + // eslint-disable-next-line no-undefined + const resolved = resolveModule(importee, containingFile, undefined, mode); + if (resolved) { + if (/\.d\.[cm]?ts/.test(resolved.extension)) + return null; + if (!filter(resolved.resolvedFileName)) + return null; + return path.normalize(resolved.resolvedFileName); + } + return null; + }, + async load(id) { + if (!filter(id)) + return null; + this.addWatchFile(id); + await watchProgramHelper.wait(); + const fileName = normalizePath(id); + if (!parsedOptions.fileNames.includes(fileName)) { + // Discovered new file that was not known when originally parsing the TypeScript config + parsedOptions.fileNames.push(fileName); + } + const output = findTypescriptOutput(ts, parsedOptions, id, emittedFiles, tsCache); + return output.code != null ? output : null; + }, + async generateBundle(outputOptions) { + const declarationAndTypeScriptMapFiles = [...emittedFiles.keys()].filter((fileName) => isDeclarationOutputFile(fileName) || isTypeScriptMapOutputFile(fileName)); + declarationAndTypeScriptMapFiles.forEach((id) => { + const code = getEmittedFile(id, emittedFiles, tsCache); + if (!code || !parsedOptions.options.declaration) { + return; + } + let baseDir; + if (outputOptions.dir) { + baseDir = outputOptions.dir; + } + else if (outputOptions.file) { + // find common path of output.file and configured declation output + const outputDir = path.dirname(outputOptions.file); + const configured = path.resolve(parsedOptions.options.declarationDir || + parsedOptions.options.outDir || + tsconfig || + process.cwd()); + const backwards = path + .relative(outputDir, configured) + .split(path.sep) + .filter((v) => v === '..') + .join(path.sep); + baseDir = path.normalize(`${outputDir}/${backwards}`); + } + if (!baseDir) + return; + this.emitFile({ + type: 'asset', + fileName: normalizePath(path.relative(baseDir, id)), + source: code + }); + }); + const tsBuildInfoPath = ts.getTsBuildInfoEmitOutputFilePath(parsedOptions.options); + if (tsBuildInfoPath) { + const tsBuildInfoSource = emittedFiles.get(tsBuildInfoPath); + // https://github.com/rollup/plugins/issues/681 + if (tsBuildInfoSource) { + await emitFile(outputOptions, outputToFilesystem, this, tsBuildInfoPath, tsBuildInfoSource); + } + } + } + }; +} + +export { typescript as default }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@rollup/plugin-typescript/dist/es/package.json b/node_modules/@rollup/plugin-typescript/dist/es/package.json new file mode 100644 index 0000000..7c34deb --- /dev/null +++ b/node_modules/@rollup/plugin-typescript/dist/es/package.json @@ -0,0 +1 @@ +{"type":"module"} \ No newline at end of file diff --git a/node_modules/@rollup/plugin-typescript/package.json b/node_modules/@rollup/plugin-typescript/package.json new file mode 100644 index 0000000..5390efe --- /dev/null +++ b/node_modules/@rollup/plugin-typescript/package.json @@ -0,0 +1,79 @@ +{ + "name": "@rollup/plugin-typescript", + "version": "11.1.6", + "publishConfig": { + "access": "public" + }, + "description": "Seamless integration between Rollup and TypeScript.", + "license": "MIT", + "repository": { + "url": "rollup/plugins", + "directory": "packages/typescript" + }, + "author": "Oskar Segersvärd", + "homepage": "https://github.com/rollup/plugins/tree/master/packages/typescript/#readme", + "bugs": "https://github.com/rollup/plugins/issues", + "main": "./dist/cjs/index.js", + "module": "./dist/es/index.js", + "exports": { + "types": "./types/index.d.ts", + "import": "./dist/es/index.js", + "default": "./dist/cjs/index.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "files": [ + "dist", + "!dist/**/*.map", + "types", + "README.md", + "LICENSE" + ], + "keywords": [ + "rollup", + "plugin", + "typescript", + "es2015" + ], + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0||^4.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } + }, + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "resolve": "^1.22.1" + }, + "devDependencies": { + "@rollup/plugin-buble": "^1.0.0", + "@rollup/plugin-commonjs": "^23.0.0", + "@types/node": "^14.18.30", + "@types/resolve": "^1.20.2", + "buble": "^0.20.0", + "rollup": "^4.0.0-24", + "typescript": "^4.8.3" + }, + "types": "./types/index.d.ts", + "scripts": { + "build": "rollup -c", + "ci:coverage": "nyc pnpm test && nyc report --reporter=text-lcov > coverage.lcov", + "ci:lint": "pnpm build && pnpm lint", + "ci:lint:commits": "commitlint --from=${CIRCLE_BRANCH} --to=${CIRCLE_SHA1}", + "ci:test": "pnpm test -- --verbose --serial", + "prebuild": "del-cli dist", + "prerelease": "pnpm build", + "pretest": "pnpm build", + "release": "pnpm --workspace-root package:release $(pwd)", + "test": "ava", + "test:ts": "tsc --noEmit" + } +} \ No newline at end of file diff --git a/node_modules/@rollup/plugin-typescript/types/index.d.ts b/node_modules/@rollup/plugin-typescript/types/index.d.ts new file mode 100644 index 0000000..6d4a30f --- /dev/null +++ b/node_modules/@rollup/plugin-typescript/types/index.d.ts @@ -0,0 +1,115 @@ +/* eslint-disable no-use-before-define */ +import type _typescript from 'typescript'; + +import type { FilterPattern } from '@rollup/pluginutils'; +import type { Plugin } from 'rollup'; +import type { + CompilerOptions, + CompilerOptionsValue, + CustomTransformers, + Program, + TsConfigSourceFile, + TypeChecker +} from 'typescript'; + +type ElementType | undefined> = T extends (infer U)[] ? U : never; + +export type TransformerStage = keyof CustomTransformers; +type StagedTransformerFactory = ElementType; +type TransformerFactory = + | StagedTransformerFactory + | ProgramTransformerFactory + | TypeCheckerTransformerFactory; + +export type CustomTransformerFactories = { + [stage in TransformerStage]?: Array>; +}; + +interface ProgramTransformerFactory { + type: 'program'; + + factory(program: Program): StagedTransformerFactory; +} + +interface TypeCheckerTransformerFactory { + type: 'typeChecker'; + + factory(typeChecker: TypeChecker): StagedTransformerFactory; +} + +export interface RollupTypescriptPluginOptions { + /** + * If using incremental this is the folder where the cached + * files will be created and kept for Typescript incremental + * compilation. + */ + cacheDir?: string; + /** + * Determine which files are transpiled by Typescript (all `.ts` and + * `.tsx` files by default). + */ + include?: FilterPattern; + /** + * Determine which files are ignored by Typescript + */ + exclude?: FilterPattern; + /** + * Sets the `resolve` value for the underlying filter function. If not set will use the `rootDir` property + * @see {@link https://github.com/rollup/plugins/tree/master/packages/pluginutils#createfilter} @rollup/pluginutils `createFilter` + */ + filterRoot?: string | false; + /** + * When set to false, ignores any options specified in the config file. + * If set to a string that corresponds to a file path, the specified file + * will be used as config file. + */ + tsconfig?: string | false; + /** + * Overrides TypeScript used for transpilation + */ + typescript?: typeof _typescript; + /** + * Overrides the injected TypeScript helpers with a custom version. + */ + tslib?: Promise | string; + /** + * TypeScript custom transformers + */ + transformers?: CustomTransformerFactories; + /** + * When set to false, force non-cached files to always be emitted in the output directory.output + * If not set, will default to true with a warning. + */ + outputToFilesystem?: boolean; + /** + * Pass additional compiler options to the plugin. + */ + compilerOptions?: PartialCompilerOptions; + /** + * Override force setting of `noEmit` and `emitDeclarationOnly` and use what is defined in `tsconfig.json` + */ + noForceEmit?: boolean; +} + +export interface FlexibleCompilerOptions extends CompilerOptions { + [option: string]: CompilerOptionsValue | TsConfigSourceFile | undefined | any; +} + +/** Properties of `CompilerOptions` that are normally enums */ +export type EnumCompilerOptions = 'module' | 'moduleResolution' | 'newLine' | 'jsx' | 'target'; + +/** JSON representation of Typescript compiler options */ +export type JsonCompilerOptions = Omit & + Record; + +/** Compiler options set by the plugin user. */ +export type PartialCompilerOptions = + | Partial + | Partial; + +export type RollupTypescriptOptions = RollupTypescriptPluginOptions & PartialCompilerOptions; + +/** + * Seamless integration between Rollup and Typescript. + */ +export default function typescript(options?: RollupTypescriptOptions): Plugin; diff --git a/node_modules/@rollup/pluginutils/LICENSE b/node_modules/@rollup/pluginutils/LICENSE new file mode 100644 index 0000000..5e46702 --- /dev/null +++ b/node_modules/@rollup/pluginutils/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@rollup/pluginutils/README.md b/node_modules/@rollup/pluginutils/README.md new file mode 100644 index 0000000..368bce8 --- /dev/null +++ b/node_modules/@rollup/pluginutils/README.md @@ -0,0 +1,262 @@ +[npm]: https://img.shields.io/npm/v/@rollup/pluginutils +[npm-url]: https://www.npmjs.com/package/@rollup/pluginutils +[size]: https://packagephobia.now.sh/badge?p=@rollup/pluginutils +[size-url]: https://packagephobia.now.sh/result?p=@rollup/pluginutils + +[![npm][npm]][npm-url] +[![size][size]][size-url] +[![libera manifesto](https://img.shields.io/badge/libera-manifesto-lightgrey.svg)](https://liberamanifesto.com) + +# @rollup/pluginutils + +A set of utility functions commonly used by 🍣 Rollup plugins. + +## Requirements + +The plugin utils require an [LTS](https://github.com/nodejs/Release) Node version (v14.0.0+) and Rollup v1.20.0+. + +## Install + +Using npm: + +```console +npm install @rollup/pluginutils --save-dev +``` + +## Usage + +```js +import utils from '@rollup/pluginutils'; +//... +``` + +## API + +Available utility functions are listed below: + +_Note: Parameter names immediately followed by a `?` indicate that the parameter is optional._ + +### addExtension + +Adds an extension to a module ID if one does not exist. + +Parameters: `(filename: String, ext?: String)`
+Returns: `String` + +```js +import { addExtension } from '@rollup/pluginutils'; + +export default function myPlugin(options = {}) { + return { + resolveId(code, id) { + // only adds an extension if there isn't one already + id = addExtension(id); // `foo` -> `foo.js`, `foo.js` -> `foo.js` + id = addExtension(id, '.myext'); // `foo` -> `foo.myext`, `foo.js` -> `foo.js` + } + }; +} +``` + +### attachScopes + +Attaches `Scope` objects to the relevant nodes of an AST. Each `Scope` object has a `scope.contains(name)` method that returns `true` if a given name is defined in the current scope or a parent scope. + +Parameters: `(ast: Node, propertyName?: String)`
+Returns: `Object` + +See [rollup-plugin-inject](https://github.com/rollup/rollup-plugin-inject) or [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) for an example of usage. + +```js +import { attachScopes } from '@rollup/pluginutils'; +import { walk } from 'estree-walker'; + +export default function myPlugin(options = {}) { + return { + transform(code) { + const ast = this.parse(code); + + let scope = attachScopes(ast, 'scope'); + + walk(ast, { + enter(node) { + if (node.scope) scope = node.scope; + + if (!scope.contains('foo')) { + // `foo` is not defined, so if we encounter it, + // we assume it's a global + } + }, + leave(node) { + if (node.scope) scope = scope.parent; + } + }); + } + }; +} +``` + +### createFilter + +Constructs a filter function which can be used to determine whether or not certain modules should be operated upon. + +Parameters: `(include?: , exclude?: , options?: Object)`
+Returns: `(id: string | unknown) => boolean` + +#### `include` and `exclude` + +Type: `String | RegExp | Array[...String|RegExp]`
+ +A valid [`picomatch`](https://github.com/micromatch/picomatch#globbing-features) pattern, or array of patterns. If `options.include` is omitted or has zero length, filter will return `true` by default. Otherwise, an ID must match one or more of the `picomatch` patterns, and must not match any of the `options.exclude` patterns. + +Note that `picomatch` patterns are very similar to [`minimatch`](https://github.com/isaacs/minimatch#readme) patterns, and in most use cases, they are interchangeable. If you have more specific pattern matching needs, you can view [this comparison table](https://github.com/micromatch/picomatch#library-comparisons) to learn more about where the libraries differ. + +#### `options` + +##### `resolve` + +Type: `String | Boolean | null` + +Optionally resolves the patterns against a directory other than `process.cwd()`. If a `String` is specified, then the value will be used as the base directory. Relative paths will be resolved against `process.cwd()` first. If `false`, then the patterns will not be resolved against any directory. This can be useful if you want to create a filter for virtual module names. + +#### Usage + +```js +import { createFilter } from '@rollup/pluginutils'; + +export default function myPlugin(options = {}) { + // assume that the myPlugin accepts options of `options.include` and `options.exclude` + var filter = createFilter(options.include, options.exclude, { + resolve: '/my/base/dir' + }); + + return { + transform(code, id) { + if (!filter(id)) return; + + // proceed with the transformation... + } + }; +} +``` + +### dataToEsm + +Transforms objects into tree-shakable ES Module imports. + +Parameters: `(data: Object, options: DataToEsmOptions)`
+Returns: `String` + +#### `data` + +Type: `Object` + +An object to transform into an ES module. + +#### `options` + +Type: `DataToEsmOptions` + +_Note: Please see the TypeScript definition for complete documentation of these options_ + +#### Usage + +```js +import { dataToEsm } from '@rollup/pluginutils'; + +const esModuleSource = dataToEsm( + { + custom: 'data', + to: ['treeshake'] + }, + { + compact: false, + indent: '\t', + preferConst: true, + objectShorthand: true, + namedExports: true, + includeArbitraryNames: false + } +); +/* +Outputs the string ES module source: + export const custom = 'data'; + export const to = ['treeshake']; + export default { custom, to }; +*/ +``` + +### extractAssignedNames + +Extracts the names of all assignment targets based upon specified patterns. + +Parameters: `(param: Node)`
+Returns: `Array[...String]` + +#### `param` + +Type: `Node` + +An `acorn` AST Node. + +#### Usage + +```js +import { extractAssignedNames } from '@rollup/pluginutils'; +import { walk } from 'estree-walker'; + +export default function myPlugin(options = {}) { + return { + transform(code) { + const ast = this.parse(code); + + walk(ast, { + enter(node) { + if (node.type === 'VariableDeclarator') { + const declaredNames = extractAssignedNames(node.id); + // do something with the declared names + // e.g. for `const {x, y: z} = ...` => declaredNames = ['x', 'z'] + } + } + }); + } + }; +} +``` + +### makeLegalIdentifier + +Constructs a bundle-safe identifier from a `String`. + +Parameters: `(str: String)`
+Returns: `String` + +#### Usage + +```js +import { makeLegalIdentifier } from '@rollup/pluginutils'; + +makeLegalIdentifier('foo-bar'); // 'foo_bar' +makeLegalIdentifier('typeof'); // '_typeof' +``` + +### normalizePath + +Converts path separators to forward slash. + +Parameters: `(filename: String)`
+Returns: `String` + +#### Usage + +```js +import { normalizePath } from '@rollup/pluginutils'; + +normalizePath('foo\\bar'); // 'foo/bar' +normalizePath('foo/bar'); // 'foo/bar' +``` + +## Meta + +[CONTRIBUTING](/.github/CONTRIBUTING.md) + +[LICENSE (MIT)](/LICENSE) diff --git a/node_modules/@rollup/pluginutils/dist/cjs/index.js b/node_modules/@rollup/pluginutils/dist/cjs/index.js new file mode 100644 index 0000000..d92d804 --- /dev/null +++ b/node_modules/@rollup/pluginutils/dist/cjs/index.js @@ -0,0 +1,368 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var path = require('path'); +var estreeWalker = require('estree-walker'); +var pm = require('picomatch'); + +const addExtension = function addExtension(filename, ext = '.js') { + let result = `${filename}`; + if (!path.extname(filename)) + result += ext; + return result; +}; + +const extractors = { + ArrayPattern(names, param) { + for (const element of param.elements) { + if (element) + extractors[element.type](names, element); + } + }, + AssignmentPattern(names, param) { + extractors[param.left.type](names, param.left); + }, + Identifier(names, param) { + names.push(param.name); + }, + MemberExpression() { }, + ObjectPattern(names, param) { + for (const prop of param.properties) { + // @ts-ignore Typescript reports that this is not a valid type + if (prop.type === 'RestElement') { + extractors.RestElement(names, prop); + } + else { + extractors[prop.value.type](names, prop.value); + } + } + }, + RestElement(names, param) { + extractors[param.argument.type](names, param.argument); + } +}; +const extractAssignedNames = function extractAssignedNames(param) { + const names = []; + extractors[param.type](names, param); + return names; +}; + +const blockDeclarations = { + const: true, + let: true +}; +class Scope { + constructor(options = {}) { + this.parent = options.parent; + this.isBlockScope = !!options.block; + this.declarations = Object.create(null); + if (options.params) { + options.params.forEach((param) => { + extractAssignedNames(param).forEach((name) => { + this.declarations[name] = true; + }); + }); + } + } + addDeclaration(node, isBlockDeclaration, isVar) { + if (!isBlockDeclaration && this.isBlockScope) { + // it's a `var` or function node, and this + // is a block scope, so we need to go up + this.parent.addDeclaration(node, isBlockDeclaration, isVar); + } + else if (node.id) { + extractAssignedNames(node.id).forEach((name) => { + this.declarations[name] = true; + }); + } + } + contains(name) { + return this.declarations[name] || (this.parent ? this.parent.contains(name) : false); + } +} +const attachScopes = function attachScopes(ast, propertyName = 'scope') { + let scope = new Scope(); + estreeWalker.walk(ast, { + enter(n, parent) { + const node = n; + // function foo () {...} + // class Foo {...} + if (/(Function|Class)Declaration/.test(node.type)) { + scope.addDeclaration(node, false, false); + } + // var foo = 1 + if (node.type === 'VariableDeclaration') { + const { kind } = node; + const isBlockDeclaration = blockDeclarations[kind]; + node.declarations.forEach((declaration) => { + scope.addDeclaration(declaration, isBlockDeclaration, true); + }); + } + let newScope; + // create new function scope + if (/Function/.test(node.type)) { + const func = node; + newScope = new Scope({ + parent: scope, + block: false, + params: func.params + }); + // named function expressions - the name is considered + // part of the function's scope + if (func.type === 'FunctionExpression' && func.id) { + newScope.addDeclaration(func, false, false); + } + } + // create new for scope + if (/For(In|Of)?Statement/.test(node.type)) { + newScope = new Scope({ + parent: scope, + block: true + }); + } + // create new block scope + if (node.type === 'BlockStatement' && !/Function/.test(parent.type)) { + newScope = new Scope({ + parent: scope, + block: true + }); + } + // catch clause has its own block scope + if (node.type === 'CatchClause') { + newScope = new Scope({ + parent: scope, + params: node.param ? [node.param] : [], + block: true + }); + } + if (newScope) { + Object.defineProperty(node, propertyName, { + value: newScope, + configurable: true + }); + scope = newScope; + } + }, + leave(n) { + const node = n; + if (node[propertyName]) + scope = scope.parent; + } + }); + return scope; +}; + +// Helper since Typescript can't detect readonly arrays with Array.isArray +function isArray(arg) { + return Array.isArray(arg); +} +function ensureArray(thing) { + if (isArray(thing)) + return thing; + if (thing == null) + return []; + return [thing]; +} + +const normalizePath = function normalizePath(filename) { + return filename.split(path.win32.sep).join(path.posix.sep); +}; + +function getMatcherString(id, resolutionBase) { + if (resolutionBase === false || path.isAbsolute(id) || id.startsWith('**')) { + return normalizePath(id); + } + // resolve('') is valid and will default to process.cwd() + const basePath = normalizePath(path.resolve(resolutionBase || '')) + // escape all possible (posix + win) path characters that might interfere with regex + .replace(/[-^$*+?.()|[\]{}]/g, '\\$&'); + // Note that we use posix.join because: + // 1. the basePath has been normalized to use / + // 2. the incoming glob (id) matcher, also uses / + // otherwise Node will force backslash (\) on windows + return path.posix.join(basePath, normalizePath(id)); +} +const createFilter = function createFilter(include, exclude, options) { + const resolutionBase = options && options.resolve; + const getMatcher = (id) => id instanceof RegExp + ? id + : { + test: (what) => { + // this refactor is a tad overly verbose but makes for easy debugging + const pattern = getMatcherString(id, resolutionBase); + const fn = pm(pattern, { dot: true }); + const result = fn(what); + return result; + } + }; + const includeMatchers = ensureArray(include).map(getMatcher); + const excludeMatchers = ensureArray(exclude).map(getMatcher); + return function result(id) { + if (typeof id !== 'string') + return false; + if (/\0/.test(id)) + return false; + const pathId = normalizePath(id); + for (let i = 0; i < excludeMatchers.length; ++i) { + const matcher = excludeMatchers[i]; + if (matcher.test(pathId)) + return false; + } + for (let i = 0; i < includeMatchers.length; ++i) { + const matcher = includeMatchers[i]; + if (matcher.test(pathId)) + return true; + } + return !includeMatchers.length; + }; +}; + +const reservedWords = 'break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public'; +const builtins = 'arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl'; +const forbiddenIdentifiers = new Set(`${reservedWords} ${builtins}`.split(' ')); +forbiddenIdentifiers.add(''); +const makeLegalIdentifier = function makeLegalIdentifier(str) { + let identifier = str + .replace(/-(\w)/g, (_, letter) => letter.toUpperCase()) + .replace(/[^$_a-zA-Z0-9]/g, '_'); + if (/\d/.test(identifier[0]) || forbiddenIdentifiers.has(identifier)) { + identifier = `_${identifier}`; + } + return identifier || '_'; +}; + +function stringify(obj) { + return (JSON.stringify(obj) || 'undefined').replace(/[\u2028\u2029]/g, (char) => `\\u${`000${char.charCodeAt(0).toString(16)}`.slice(-4)}`); +} +function serializeArray(arr, indent, baseIndent) { + let output = '['; + const separator = indent ? `\n${baseIndent}${indent}` : ''; + for (let i = 0; i < arr.length; i++) { + const key = arr[i]; + output += `${i > 0 ? ',' : ''}${separator}${serialize(key, indent, baseIndent + indent)}`; + } + return `${output}${indent ? `\n${baseIndent}` : ''}]`; +} +function serializeObject(obj, indent, baseIndent) { + let output = '{'; + const separator = indent ? `\n${baseIndent}${indent}` : ''; + const entries = Object.entries(obj); + for (let i = 0; i < entries.length; i++) { + const [key, value] = entries[i]; + const stringKey = makeLegalIdentifier(key) === key ? key : stringify(key); + output += `${i > 0 ? ',' : ''}${separator}${stringKey}:${indent ? ' ' : ''}${serialize(value, indent, baseIndent + indent)}`; + } + return `${output}${indent ? `\n${baseIndent}` : ''}}`; +} +function serialize(obj, indent, baseIndent) { + if (typeof obj === 'object' && obj !== null) { + if (Array.isArray(obj)) + return serializeArray(obj, indent, baseIndent); + if (obj instanceof Date) + return `new Date(${obj.getTime()})`; + if (obj instanceof RegExp) + return obj.toString(); + return serializeObject(obj, indent, baseIndent); + } + if (typeof obj === 'number') { + if (obj === Infinity) + return 'Infinity'; + if (obj === -Infinity) + return '-Infinity'; + if (obj === 0) + return 1 / obj === Infinity ? '0' : '-0'; + if (obj !== obj) + return 'NaN'; // eslint-disable-line no-self-compare + } + if (typeof obj === 'symbol') { + const key = Symbol.keyFor(obj); + // eslint-disable-next-line no-undefined + if (key !== undefined) + return `Symbol.for(${stringify(key)})`; + } + if (typeof obj === 'bigint') + return `${obj}n`; + return stringify(obj); +} +// isWellFormed exists from Node.js 20 +const hasStringIsWellFormed = 'isWellFormed' in String.prototype; +function isWellFormedString(input) { + // @ts-expect-error String::isWellFormed exists from ES2024. tsconfig lib is set to ES6 + if (hasStringIsWellFormed) + return input.isWellFormed(); + // https://github.com/tc39/proposal-is-usv-string/blob/main/README.md#algorithm + return !/\p{Surrogate}/u.test(input); +} +const dataToEsm = function dataToEsm(data, options = {}) { + var _a, _b; + const t = options.compact ? '' : 'indent' in options ? options.indent : '\t'; + const _ = options.compact ? '' : ' '; + const n = options.compact ? '' : '\n'; + const declarationType = options.preferConst ? 'const' : 'var'; + if (options.namedExports === false || + typeof data !== 'object' || + Array.isArray(data) || + data instanceof Date || + data instanceof RegExp || + data === null) { + const code = serialize(data, options.compact ? null : t, ''); + const magic = _ || (/^[{[\-\/]/.test(code) ? '' : ' '); // eslint-disable-line no-useless-escape + return `export default${magic}${code};`; + } + let maxUnderbarPrefixLength = 0; + for (const key of Object.keys(data)) { + const underbarPrefixLength = (_b = (_a = key.match(/^(_+)/)) === null || _a === void 0 ? void 0 : _a[0].length) !== null && _b !== void 0 ? _b : 0; + if (underbarPrefixLength > maxUnderbarPrefixLength) { + maxUnderbarPrefixLength = underbarPrefixLength; + } + } + const arbitraryNamePrefix = `${'_'.repeat(maxUnderbarPrefixLength + 1)}arbitrary`; + let namedExportCode = ''; + const defaultExportRows = []; + const arbitraryNameExportRows = []; + for (const [key, value] of Object.entries(data)) { + if (key === makeLegalIdentifier(key)) { + if (options.objectShorthand) + defaultExportRows.push(key); + else + defaultExportRows.push(`${key}:${_}${key}`); + namedExportCode += `export ${declarationType} ${key}${_}=${_}${serialize(value, options.compact ? null : t, '')};${n}`; + } + else { + defaultExportRows.push(`${stringify(key)}:${_}${serialize(value, options.compact ? null : t, '')}`); + if (options.includeArbitraryNames && isWellFormedString(key)) { + const variableName = `${arbitraryNamePrefix}${arbitraryNameExportRows.length}`; + namedExportCode += `${declarationType} ${variableName}${_}=${_}${serialize(value, options.compact ? null : t, '')};${n}`; + arbitraryNameExportRows.push(`${variableName} as ${JSON.stringify(key)}`); + } + } + } + const arbitraryExportCode = arbitraryNameExportRows.length > 0 + ? `export${_}{${n}${t}${arbitraryNameExportRows.join(`,${n}${t}`)}${n}};${n}` + : ''; + const defaultExportCode = `export default${_}{${n}${t}${defaultExportRows.join(`,${n}${t}`)}${n}};${n}`; + return `${namedExportCode}${arbitraryExportCode}${defaultExportCode}`; +}; + +// TODO: remove this in next major +var index = { + addExtension, + attachScopes, + createFilter, + dataToEsm, + extractAssignedNames, + makeLegalIdentifier, + normalizePath +}; + +exports.addExtension = addExtension; +exports.attachScopes = attachScopes; +exports.createFilter = createFilter; +exports.dataToEsm = dataToEsm; +exports.default = index; +exports.extractAssignedNames = extractAssignedNames; +exports.makeLegalIdentifier = makeLegalIdentifier; +exports.normalizePath = normalizePath; +module.exports = Object.assign(exports.default, exports); +//# sourceMappingURL=index.js.map diff --git a/node_modules/@rollup/pluginutils/dist/es/index.js b/node_modules/@rollup/pluginutils/dist/es/index.js new file mode 100644 index 0000000..c8096b3 --- /dev/null +++ b/node_modules/@rollup/pluginutils/dist/es/index.js @@ -0,0 +1,356 @@ +import { extname, win32, posix, isAbsolute, resolve } from 'path'; +import { walk } from 'estree-walker'; +import pm from 'picomatch'; + +const addExtension = function addExtension(filename, ext = '.js') { + let result = `${filename}`; + if (!extname(filename)) + result += ext; + return result; +}; + +const extractors = { + ArrayPattern(names, param) { + for (const element of param.elements) { + if (element) + extractors[element.type](names, element); + } + }, + AssignmentPattern(names, param) { + extractors[param.left.type](names, param.left); + }, + Identifier(names, param) { + names.push(param.name); + }, + MemberExpression() { }, + ObjectPattern(names, param) { + for (const prop of param.properties) { + // @ts-ignore Typescript reports that this is not a valid type + if (prop.type === 'RestElement') { + extractors.RestElement(names, prop); + } + else { + extractors[prop.value.type](names, prop.value); + } + } + }, + RestElement(names, param) { + extractors[param.argument.type](names, param.argument); + } +}; +const extractAssignedNames = function extractAssignedNames(param) { + const names = []; + extractors[param.type](names, param); + return names; +}; + +const blockDeclarations = { + const: true, + let: true +}; +class Scope { + constructor(options = {}) { + this.parent = options.parent; + this.isBlockScope = !!options.block; + this.declarations = Object.create(null); + if (options.params) { + options.params.forEach((param) => { + extractAssignedNames(param).forEach((name) => { + this.declarations[name] = true; + }); + }); + } + } + addDeclaration(node, isBlockDeclaration, isVar) { + if (!isBlockDeclaration && this.isBlockScope) { + // it's a `var` or function node, and this + // is a block scope, so we need to go up + this.parent.addDeclaration(node, isBlockDeclaration, isVar); + } + else if (node.id) { + extractAssignedNames(node.id).forEach((name) => { + this.declarations[name] = true; + }); + } + } + contains(name) { + return this.declarations[name] || (this.parent ? this.parent.contains(name) : false); + } +} +const attachScopes = function attachScopes(ast, propertyName = 'scope') { + let scope = new Scope(); + walk(ast, { + enter(n, parent) { + const node = n; + // function foo () {...} + // class Foo {...} + if (/(Function|Class)Declaration/.test(node.type)) { + scope.addDeclaration(node, false, false); + } + // var foo = 1 + if (node.type === 'VariableDeclaration') { + const { kind } = node; + const isBlockDeclaration = blockDeclarations[kind]; + node.declarations.forEach((declaration) => { + scope.addDeclaration(declaration, isBlockDeclaration, true); + }); + } + let newScope; + // create new function scope + if (/Function/.test(node.type)) { + const func = node; + newScope = new Scope({ + parent: scope, + block: false, + params: func.params + }); + // named function expressions - the name is considered + // part of the function's scope + if (func.type === 'FunctionExpression' && func.id) { + newScope.addDeclaration(func, false, false); + } + } + // create new for scope + if (/For(In|Of)?Statement/.test(node.type)) { + newScope = new Scope({ + parent: scope, + block: true + }); + } + // create new block scope + if (node.type === 'BlockStatement' && !/Function/.test(parent.type)) { + newScope = new Scope({ + parent: scope, + block: true + }); + } + // catch clause has its own block scope + if (node.type === 'CatchClause') { + newScope = new Scope({ + parent: scope, + params: node.param ? [node.param] : [], + block: true + }); + } + if (newScope) { + Object.defineProperty(node, propertyName, { + value: newScope, + configurable: true + }); + scope = newScope; + } + }, + leave(n) { + const node = n; + if (node[propertyName]) + scope = scope.parent; + } + }); + return scope; +}; + +// Helper since Typescript can't detect readonly arrays with Array.isArray +function isArray(arg) { + return Array.isArray(arg); +} +function ensureArray(thing) { + if (isArray(thing)) + return thing; + if (thing == null) + return []; + return [thing]; +} + +const normalizePath = function normalizePath(filename) { + return filename.split(win32.sep).join(posix.sep); +}; + +function getMatcherString(id, resolutionBase) { + if (resolutionBase === false || isAbsolute(id) || id.startsWith('**')) { + return normalizePath(id); + } + // resolve('') is valid and will default to process.cwd() + const basePath = normalizePath(resolve(resolutionBase || '')) + // escape all possible (posix + win) path characters that might interfere with regex + .replace(/[-^$*+?.()|[\]{}]/g, '\\$&'); + // Note that we use posix.join because: + // 1. the basePath has been normalized to use / + // 2. the incoming glob (id) matcher, also uses / + // otherwise Node will force backslash (\) on windows + return posix.join(basePath, normalizePath(id)); +} +const createFilter = function createFilter(include, exclude, options) { + const resolutionBase = options && options.resolve; + const getMatcher = (id) => id instanceof RegExp + ? id + : { + test: (what) => { + // this refactor is a tad overly verbose but makes for easy debugging + const pattern = getMatcherString(id, resolutionBase); + const fn = pm(pattern, { dot: true }); + const result = fn(what); + return result; + } + }; + const includeMatchers = ensureArray(include).map(getMatcher); + const excludeMatchers = ensureArray(exclude).map(getMatcher); + return function result(id) { + if (typeof id !== 'string') + return false; + if (/\0/.test(id)) + return false; + const pathId = normalizePath(id); + for (let i = 0; i < excludeMatchers.length; ++i) { + const matcher = excludeMatchers[i]; + if (matcher.test(pathId)) + return false; + } + for (let i = 0; i < includeMatchers.length; ++i) { + const matcher = includeMatchers[i]; + if (matcher.test(pathId)) + return true; + } + return !includeMatchers.length; + }; +}; + +const reservedWords = 'break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public'; +const builtins = 'arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl'; +const forbiddenIdentifiers = new Set(`${reservedWords} ${builtins}`.split(' ')); +forbiddenIdentifiers.add(''); +const makeLegalIdentifier = function makeLegalIdentifier(str) { + let identifier = str + .replace(/-(\w)/g, (_, letter) => letter.toUpperCase()) + .replace(/[^$_a-zA-Z0-9]/g, '_'); + if (/\d/.test(identifier[0]) || forbiddenIdentifiers.has(identifier)) { + identifier = `_${identifier}`; + } + return identifier || '_'; +}; + +function stringify(obj) { + return (JSON.stringify(obj) || 'undefined').replace(/[\u2028\u2029]/g, (char) => `\\u${`000${char.charCodeAt(0).toString(16)}`.slice(-4)}`); +} +function serializeArray(arr, indent, baseIndent) { + let output = '['; + const separator = indent ? `\n${baseIndent}${indent}` : ''; + for (let i = 0; i < arr.length; i++) { + const key = arr[i]; + output += `${i > 0 ? ',' : ''}${separator}${serialize(key, indent, baseIndent + indent)}`; + } + return `${output}${indent ? `\n${baseIndent}` : ''}]`; +} +function serializeObject(obj, indent, baseIndent) { + let output = '{'; + const separator = indent ? `\n${baseIndent}${indent}` : ''; + const entries = Object.entries(obj); + for (let i = 0; i < entries.length; i++) { + const [key, value] = entries[i]; + const stringKey = makeLegalIdentifier(key) === key ? key : stringify(key); + output += `${i > 0 ? ',' : ''}${separator}${stringKey}:${indent ? ' ' : ''}${serialize(value, indent, baseIndent + indent)}`; + } + return `${output}${indent ? `\n${baseIndent}` : ''}}`; +} +function serialize(obj, indent, baseIndent) { + if (typeof obj === 'object' && obj !== null) { + if (Array.isArray(obj)) + return serializeArray(obj, indent, baseIndent); + if (obj instanceof Date) + return `new Date(${obj.getTime()})`; + if (obj instanceof RegExp) + return obj.toString(); + return serializeObject(obj, indent, baseIndent); + } + if (typeof obj === 'number') { + if (obj === Infinity) + return 'Infinity'; + if (obj === -Infinity) + return '-Infinity'; + if (obj === 0) + return 1 / obj === Infinity ? '0' : '-0'; + if (obj !== obj) + return 'NaN'; // eslint-disable-line no-self-compare + } + if (typeof obj === 'symbol') { + const key = Symbol.keyFor(obj); + // eslint-disable-next-line no-undefined + if (key !== undefined) + return `Symbol.for(${stringify(key)})`; + } + if (typeof obj === 'bigint') + return `${obj}n`; + return stringify(obj); +} +// isWellFormed exists from Node.js 20 +const hasStringIsWellFormed = 'isWellFormed' in String.prototype; +function isWellFormedString(input) { + // @ts-expect-error String::isWellFormed exists from ES2024. tsconfig lib is set to ES6 + if (hasStringIsWellFormed) + return input.isWellFormed(); + // https://github.com/tc39/proposal-is-usv-string/blob/main/README.md#algorithm + return !/\p{Surrogate}/u.test(input); +} +const dataToEsm = function dataToEsm(data, options = {}) { + var _a, _b; + const t = options.compact ? '' : 'indent' in options ? options.indent : '\t'; + const _ = options.compact ? '' : ' '; + const n = options.compact ? '' : '\n'; + const declarationType = options.preferConst ? 'const' : 'var'; + if (options.namedExports === false || + typeof data !== 'object' || + Array.isArray(data) || + data instanceof Date || + data instanceof RegExp || + data === null) { + const code = serialize(data, options.compact ? null : t, ''); + const magic = _ || (/^[{[\-\/]/.test(code) ? '' : ' '); // eslint-disable-line no-useless-escape + return `export default${magic}${code};`; + } + let maxUnderbarPrefixLength = 0; + for (const key of Object.keys(data)) { + const underbarPrefixLength = (_b = (_a = key.match(/^(_+)/)) === null || _a === void 0 ? void 0 : _a[0].length) !== null && _b !== void 0 ? _b : 0; + if (underbarPrefixLength > maxUnderbarPrefixLength) { + maxUnderbarPrefixLength = underbarPrefixLength; + } + } + const arbitraryNamePrefix = `${'_'.repeat(maxUnderbarPrefixLength + 1)}arbitrary`; + let namedExportCode = ''; + const defaultExportRows = []; + const arbitraryNameExportRows = []; + for (const [key, value] of Object.entries(data)) { + if (key === makeLegalIdentifier(key)) { + if (options.objectShorthand) + defaultExportRows.push(key); + else + defaultExportRows.push(`${key}:${_}${key}`); + namedExportCode += `export ${declarationType} ${key}${_}=${_}${serialize(value, options.compact ? null : t, '')};${n}`; + } + else { + defaultExportRows.push(`${stringify(key)}:${_}${serialize(value, options.compact ? null : t, '')}`); + if (options.includeArbitraryNames && isWellFormedString(key)) { + const variableName = `${arbitraryNamePrefix}${arbitraryNameExportRows.length}`; + namedExportCode += `${declarationType} ${variableName}${_}=${_}${serialize(value, options.compact ? null : t, '')};${n}`; + arbitraryNameExportRows.push(`${variableName} as ${JSON.stringify(key)}`); + } + } + } + const arbitraryExportCode = arbitraryNameExportRows.length > 0 + ? `export${_}{${n}${t}${arbitraryNameExportRows.join(`,${n}${t}`)}${n}};${n}` + : ''; + const defaultExportCode = `export default${_}{${n}${t}${defaultExportRows.join(`,${n}${t}`)}${n}};${n}`; + return `${namedExportCode}${arbitraryExportCode}${defaultExportCode}`; +}; + +// TODO: remove this in next major +var index = { + addExtension, + attachScopes, + createFilter, + dataToEsm, + extractAssignedNames, + makeLegalIdentifier, + normalizePath +}; + +export { addExtension, attachScopes, createFilter, dataToEsm, index as default, extractAssignedNames, makeLegalIdentifier, normalizePath }; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@rollup/pluginutils/dist/es/package.json b/node_modules/@rollup/pluginutils/dist/es/package.json new file mode 100644 index 0000000..7c34deb --- /dev/null +++ b/node_modules/@rollup/pluginutils/dist/es/package.json @@ -0,0 +1 @@ +{"type":"module"} \ No newline at end of file diff --git a/node_modules/@rollup/pluginutils/package.json b/node_modules/@rollup/pluginutils/package.json new file mode 100644 index 0000000..769f971 --- /dev/null +++ b/node_modules/@rollup/pluginutils/package.json @@ -0,0 +1,99 @@ +{ + "name": "@rollup/pluginutils", + "version": "5.1.0", + "publishConfig": { + "access": "public" + }, + "description": "A set of utility functions commonly used by Rollup plugins", + "license": "MIT", + "repository": { + "url": "rollup/plugins", + "directory": "packages/pluginutils" + }, + "author": "Rich Harris ", + "homepage": "https://github.com/rollup/plugins/tree/master/packages/pluginutils#readme", + "bugs": { + "url": "https://github.com/rollup/plugins/issues" + }, + "main": "./dist/cjs/index.js", + "module": "./dist/es/index.js", + "type": "commonjs", + "exports": { + "types": "./types/index.d.ts", + "import": "./dist/es/index.js", + "default": "./dist/cjs/index.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "files": [ + "dist", + "!dist/**/*.map", + "types", + "README.md", + "LICENSE" + ], + "keywords": [ + "rollup", + "plugin", + "utils" + ], + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + }, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^23.0.0", + "@rollup/plugin-node-resolve": "^15.0.0", + "@rollup/plugin-typescript": "^9.0.1", + "@types/node": "^14.18.30", + "@types/picomatch": "^2.3.0", + "acorn": "^8.8.0", + "rollup": "^4.0.0-24", + "typescript": "^4.8.3" + }, + "types": "./types/index.d.ts", + "ava": { + "extensions": [ + "ts" + ], + "require": [ + "ts-node/register" + ], + "workerThreads": false, + "files": [ + "!**/fixtures/**", + "!**/helpers/**", + "!**/recipes/**", + "!**/types.ts" + ] + }, + "nyc": { + "extension": [ + ".js", + ".ts" + ] + }, + "scripts": { + "build": "rollup -c", + "ci:coverage": "nyc pnpm test && nyc report --reporter=text-lcov > coverage.lcov", + "ci:lint": "pnpm build && pnpm lint", + "ci:lint:commits": "commitlint --from=${CIRCLE_BRANCH} --to=${CIRCLE_SHA1}", + "ci:test": "pnpm test -- --verbose", + "prebuild": "del-cli dist", + "prerelease": "pnpm build", + "pretest": "pnpm build --sourcemap", + "release": "pnpm --workspace-root package:release $(pwd)", + "test": "ava", + "test:ts": "tsc --noEmit" + } +} \ No newline at end of file diff --git a/node_modules/@rollup/pluginutils/types/index.d.ts b/node_modules/@rollup/pluginutils/types/index.d.ts new file mode 100644 index 0000000..4bdf3a2 --- /dev/null +++ b/node_modules/@rollup/pluginutils/types/index.d.ts @@ -0,0 +1,98 @@ +import type { BaseNode } from 'estree'; + +export interface AttachedScope { + parent?: AttachedScope; + isBlockScope: boolean; + declarations: { [key: string]: boolean }; + addDeclaration(node: BaseNode, isBlockDeclaration: boolean, isVar: boolean): void; + contains(name: string): boolean; +} + +export interface DataToEsmOptions { + compact?: boolean; + /** + * @desc When this option is set, dataToEsm will generate a named export for keys that + * are not a valid identifier, by leveraging the "Arbitrary Module Namespace Identifier + * Names" feature. See: https://github.com/tc39/ecma262/pull/2154 + */ + includeArbitraryNames?: boolean; + indent?: string; + namedExports?: boolean; + objectShorthand?: boolean; + preferConst?: boolean; +} + +/** + * A valid `picomatch` glob pattern, or array of patterns. + */ +export type FilterPattern = ReadonlyArray | string | RegExp | null; + +/** + * Adds an extension to a module ID if one does not exist. + */ +export function addExtension(filename: string, ext?: string): string; + +/** + * Attaches `Scope` objects to the relevant nodes of an AST. + * Each `Scope` object has a `scope.contains(name)` method that returns `true` + * if a given name is defined in the current scope or a parent scope. + */ +export function attachScopes(ast: BaseNode, propertyName?: string): AttachedScope; + +/** + * Constructs a filter function which can be used to determine whether or not + * certain modules should be operated upon. + * @param include If `include` is omitted or has zero length, filter will return `true` by default. + * @param exclude ID must not match any of the `exclude` patterns. + * @param options Optionally resolves the patterns against a directory other than `process.cwd()`. + * If a `string` is specified, then the value will be used as the base directory. + * Relative paths will be resolved against `process.cwd()` first. + * If `false`, then the patterns will not be resolved against any directory. + * This can be useful if you want to create a filter for virtual module names. + */ +export function createFilter( + include?: FilterPattern, + exclude?: FilterPattern, + options?: { resolve?: string | false | null } +): (id: string | unknown) => boolean; + +/** + * Transforms objects into tree-shakable ES Module imports. + * @param data An object to transform into an ES module. + */ +export function dataToEsm(data: unknown, options?: DataToEsmOptions): string; + +/** + * Extracts the names of all assignment targets based upon specified patterns. + * @param param An `acorn` AST Node. + */ +export function extractAssignedNames(param: BaseNode): string[]; + +/** + * Constructs a bundle-safe identifier from a `string`. + */ +export function makeLegalIdentifier(str: string): string; + +/** + * Converts path separators to forward slash. + */ +export function normalizePath(filename: string): string; + +export type AddExtension = typeof addExtension; +export type AttachScopes = typeof attachScopes; +export type CreateFilter = typeof createFilter; +export type ExtractAssignedNames = typeof extractAssignedNames; +export type MakeLegalIdentifier = typeof makeLegalIdentifier; +export type NormalizePath = typeof normalizePath; +export type DataToEsm = typeof dataToEsm; + +declare const defaultExport: { + addExtension: AddExtension; + attachScopes: AttachScopes; + createFilter: CreateFilter; + dataToEsm: DataToEsm; + extractAssignedNames: ExtractAssignedNames; + makeLegalIdentifier: MakeLegalIdentifier; + normalizePath: NormalizePath; +}; +export default defaultExport; diff --git a/node_modules/@rollup/rollup-darwin-x64/README.md b/node_modules/@rollup/rollup-darwin-x64/README.md new file mode 100644 index 0000000..156d37a --- /dev/null +++ b/node_modules/@rollup/rollup-darwin-x64/README.md @@ -0,0 +1,3 @@ +# `@rollup/rollup-darwin-x64` + +This is the **x86_64-apple-darwin** binary for `rollup` diff --git a/node_modules/@rollup/rollup-darwin-x64/package.json b/node_modules/@rollup/rollup-darwin-x64/package.json new file mode 100644 index 0000000..388ca4c --- /dev/null +++ b/node_modules/@rollup/rollup-darwin-x64/package.json @@ -0,0 +1,19 @@ +{ + "name": "@rollup/rollup-darwin-x64", + "version": "4.21.0", + "os": [ + "darwin" + ], + "cpu": [ + "x64" + ], + "files": [ + "rollup.darwin-x64.node" + ], + "description": "Native bindings for Rollup", + "author": "Lukas Taegert-Atkinson", + "homepage": "https://rollupjs.org/", + "license": "MIT", + "repository": "rollup/rollup", + "main": "./rollup.darwin-x64.node" +} \ No newline at end of file diff --git a/node_modules/@rollup/rollup-darwin-x64/rollup.darwin-x64.node b/node_modules/@rollup/rollup-darwin-x64/rollup.darwin-x64.node new file mode 100644 index 0000000000000000000000000000000000000000..7add348699b725e90c353244db07b8d3868da295 GIT binary patch literal 2357504 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

lh~SYUAG||pf+b%4lC40bzO~) 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

llN@->Cl&cI`g_zW)o}Fb4pO3#T);8;NMs zq+b)>F%nq^-Z}p5eShGEU>&*Y0o0J@v{Txj5m~K|IMHarS+$IHAF-Pw+>j38D*aVl zzRF$^ds?7vPZzdrztt5&MLLaOq&70i}mcm(W&9!Qfvt+UGIX+K`UQ9@Q5cg`v$ZdJ;-w<2I z_$Y>#W$GwZq=q|VhQ>o5a^+ujTMTjcsl^fN-g++JxwjrOINE(oadc2K#-dExq`Y4n zGf-^P<*~Bb@@Lsk%ExeTRdWu_O*l0&S42OGOpMf26hR}`bFyl&B}{V{g5sz{A*s-fm_ ze>34_wb%VN?o13v>iQa5;|UIi*k@%wn+6q!R2sluP4f(`_WgkY0rv%4)vY9@gI|=} zU--I_iF~)by8YJvM%V=7xNF;Itaq;@ndoChfJ6{R|_At~eat>V_GGqVuyP}r6q zhv>^f>cXf?{KoauQEbeKp_LsebYCPWTiALPCc9*&h?xDUdl;MtDL6;! z4mR#p4x<-QsX|*T@AC}WzXrk9J=U~_2{rV;HsB!`OBz@5qfNe1`zIrR1>_i{(I23> z&4R?V{TKMdWz=3TuXz>I_7H+N7JFC?m)8Mn!371#bvQrTBu)9uJ+T`nR;H5QqsS938gIq&-$&`52-UT}(X79-kvLp_%+N2tog*JA0%_0MV)%$H2{-Gtt z;V@RvDR+$1i!X>KSTH)a= z&nhG0^VmfbHoKvqy|N(vjL;1op}^}2q+_08LEjx24rvLsYL0@5M0b|+Vc00i-8WbC zp1-?SkvQug5GwCtK`YwR+i|-gohKTmQW>oRfV7y`gx!|D^$vpk`YH!dqv~J=ReIO@ zD_bZwO@y0LEVl}9C|V`rh(S}+f8Ap>nD*!t5) z7q52L%et$rSakZhxcv%q}&Y9U+BDr>=9xWPdy{Z4ji>otI9!-9 zIK`^@5hYDauGY5G6F2NkiWzuJCoEYLMjXI1acNvJnAcSd5gktn7ep;+d-fGx-7>YP z10KFb9i;MBi>K2pchc43Y0ANLO`&$7?q;KQ@8`WUnCFpw-(Y^vt?IqEtgM>jRZ^G5 z<(udogYqM?a)sfP4&>v6@W(q=?wu&487>ClE02mPhTh4gbSqttJCbIrywp-GQ zV89kQI%?A01RU;De0Q@i&tEMH!jk~6(_k6x!+9k5l2>Er%igblNDhNzg;8m&)|oNq z7j&Y|3->!wpy;Qeq=V>Efl0QH#pa7X{*EMBWG)aQO;{!2!ozzkS4pmh!YBbg%l1d} zx*HeJ0VtX_fxt|TM)zV0?Ti(~ucYK1N&siLTXwf_i;2N&iixp}b49nmf>w44>Xt1r zQZMq};wpa^WNT+s4 zZi;p^=<}Pm!_1;*TV8B4RqbwT^V(r8tmxDRFRgF)R5GEYeU!9NF<~m-&q{U&_I&Cl z6)SKq^0&(L4H?aeu^d{p8^3Wg49PRGC^~FO5rAXe^$QkHLMG^NMTUX>i4bS7o4S$A zBLQ!L1gsD2sX(+$3&_9EA^+sZmaxy|x)1hM?D@A7`K==V`WW)B(U5-|+~1HaZl4*q zMf%lOoDz4&LhMD`W5Yz9ESW$wYV0Yu>K)3oWg7&O;N6hSbOGkK9)Y zh+%L3K?t(v{8U!;WfY%qVntB?kY+#gNV7L04ch|JOb4aGkUHZ^s$cTSvUR>|qS0>| zs;m*J?DJ5?W;*klN0l96sIu$oV@Vg1>@#>MW1M?mG9=kgV>hmm2O(NqHSY#pN&3D& z+aaY!7D4=^&pb~)gjj)N3!DoBvc+ylzv_0Lj$>$g)R|a>8xcG;1e0?2&01Vo&UB^w z&Fq->AL`w~22gSj6Mh0YA(#W|E}-mcPC#_ZEJ?w+c@glK7oipNqBU+_w7AU6vf!m9 zc$q@3xHGpf;mj^b3_DjOnv7evr-wdXK$D^1oYCR2IJlB+NN50M#7#A{`jQFe_2RI3 zr7A@4#(dItpMk4$S|gpivJ&N z?*bo1bvFKQAV7lXM7bChYiwyvYOA4AOB6K=S($-dKn1}nm9~oaiewj1L;{=DOsCVP zwY)E_^)0p9rWe~-1>*(X044#g1W<@tCEj4hr5bM#K*|66oSD5Opl{pX`{%=EX3m^B zm*+g^InQ~{b4deKCXNCq4r0Y2g)0^M7WjHz7g_6>UXE)2ih2cc73`3r)z;AT{2%*4 zpv)BkRi5Xd*z|nET8R?ABV>Fr?_mDChZA{VTl@RE#7OzX;|X+Ig$i^2d$qvJ;}ga7 zCGoH~Ue}UUXi)7`4=nR|_ICfk^?AMd-JL-{QB@ydprpB3CLS)-AHSE#*ERyFK=c{_QN$hSDuWreX=cUy)ziGs zui^94Vl=$RxtLF7M&T}4`ja#GgnR$YZeb%UF(a82nSF{tPWDKaqVL%qOV4T%0rbR5 zdSb=F>5gbhvULFsJ)T?;KFtcHS)Ll@qku_KrchlX&%>LVu|^yoszk7H&8{K zN&Uf>V5DjpE`@{m-8an193J*h{YYE0TEx#*;vN2KkFHQL(wpBX!2*HoLSR#?xbY~J zBDh}on1L$Z-2eWyw9&m>U}Fz2ABgiis5qT%br$1nlC+W8w0+Jsq;VE_Bgl8#fAISU zI>}$*_n&1e1FKU1`UZJF z=C_95ulc6Uzn;rCjpR8A5;X+VyWa;fifq?QiAAUXaHF z(PLW-Z9Md?g`m$1pH+^W;_|_DTh({*CkIc1gdj}2NmA{ftHKJmEBa z$-PMJ^|I%u*i|ifNZcMSYtfdEk!%&uYw^?N250qQ;x?+WaDOA6YMtoO)mFG}4k(9_ zOI!1PB?sHJKP5qeFebXVfz>QmdLM7{;B}gKcNzJ)ia*;PxvopvJ;i!twDdPpv0bYb z9w}lkA{6a*Lz~z^e|H%8+AnMO`+GO<)BW{3m|7r>q#1i)DxL7#ULwX-A1{ zwXUQM#S(;o6Qn9yB=K*hepvx>>W_Zw$aQZ9*3pxwSMm#Bl~5#pP9Qc=z*~Ky0OniL zwAMlN1jwb2t#I`@34UPw*wL>DkD&d0y-|i8{}mniD#C8Z{AY}cw(6wxz`Xzz1w^#3 z*ZkF&?P;S-JbUWWwH>;3aXHbOB`WwtWArOT-d4pDYq4x=#Gd{#E+yAT%C>3Cf5}${ zNEDZ$VPO_eR7{;mXVFCBe!a>*Dq!@VSsJk~Wt>&CHjY-xWumky0TSD4&@xdBZ6_kvYn_M)n^u}L$>)KT@VuntEZ0!3ejMp2 zj+}POHXipX(FukfVn=;pN%aN#4IS*Gzf)YZnBA#_xE)I#Z+!4)P`irq!qyEiR+krv zW0u4pNpOF`5VtUzsXGnpJEd~u!R)`156u`#NNj|y1?7*)Q3iYLdk)`YtMQYK_8DrU z{pW4zjW$7jU(elROHg06$1ZRmpiOMEy;BeIfiuba)i$-ozK8a)(fyQ-?kqvQ_3cZx82)ZH9H1oT9<%tumV5&Tl${=JC*gxob3UdG2tT9WhCPmcUmY4)ox@fEBi zJif<(3e4PNNc03A>xIp-VlN0)O7}XL#2f4&}obiiwLBJiW zauJXMOMH$jM53%0(CQklV)iEg+@UH{tbrBf4EDtEospy!BE;W}qS% z+pL0p&a-uEP+APXkZ5H`gEqP1_n8F`<)uauq=U=J+8T8ou05)*?Cs?W5k*Y8QO9Qp z;83v>XRoh+0hs-RAJL6^p5gbFfBn4rCsV)Pw|*tqoV}i^{5xqy`j&?Hx6&4MOLG?W zo4tN?a`yV|)cHEU=lC`A+v8tz`KiABKdk;num4s`WUgzW+U7caslH^sCkpN>4*5JVOB zjM0PM$<~bjXO^aUO1{l{j;8E)dEOf`_XY9pYi!#cDLf$RkBilUo`fj$%zs`PWv9-Q zHioSqlpFCS%<$S8T4@LeZQWGlCV0^Eh|z@UiqfXn5*IOMZaHmMM)m19EWWQCRPSc- z2|U$>CF*Kwx_M=R`-$|?94Lh-8ND2e8R8fH+{vg+e2pjlhL>3PFE4O~d!~Lc{U9so zR(Xm)gG>BNOORkT2wBGwc9TTFlF&hFrH@ICW^9#slv9~|o(oB5C|Z?d4B5xp*5k1A4>L7s$UHz<;gA5a#s zReJok(m?Ducs%{|etPS8SyXAs_;LzI(v$_794TjD;=>5V!pQ;m4f!G~c3|~rM+;F$ z3(=LuMF2``G9SASl8AHt;>W}mNA>vYB6{QO{=zd^HOmpJ~8KjWPt2!HcdDDhToV5%4~AHWoy<6@7yIjFdsUmG`U<^bVY zFjSUO5Y(J93(qwrjBP2NCd=_DIToGFN?I=D7UpmeT0HR$*Y;uqhlf7)*Df^1och;> z_vW9cNk|iGkP2l5N!sZgvqF|WiSB|Ei^T=bYZehHti`mlx+G%%0Db75?Be6?7viX@ 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 z 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

}w?HL}`U)C(tE`2wR#L&ZS*xuPOkA>+PtM%2 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νeN#7%XDKCuZ&oY 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�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 TpJw_s%T+Vok~d&oU=bTV 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%0Af9x@dvnHg(z?PH&Ff-=Lv`9 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%0Al_`*(Vl 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 z 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�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 z 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

?85^L= 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

q!JAvy3-A`EUf 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 literal 0 HcmV?d00001 diff --git a/node_modules/@types/estree/LICENSE b/node_modules/@types/estree/LICENSE new file mode 100644 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/estree/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/estree/README.md b/node_modules/@types/estree/README.md new file mode 100644 index 0000000..90732eb --- /dev/null +++ b/node_modules/@types/estree/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/estree` + +# Summary +This package contains type definitions for estree (https://github.com/estree/estree). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree. + +### Additional Details + * Last updated: Mon, 06 Nov 2023 22:41:05 GMT + * Dependencies: none + +# Credits +These definitions were written by [RReverser](https://github.com/RReverser). diff --git a/node_modules/@types/estree/flow.d.ts b/node_modules/@types/estree/flow.d.ts new file mode 100644 index 0000000..9d001a9 --- /dev/null +++ b/node_modules/@types/estree/flow.d.ts @@ -0,0 +1,167 @@ +declare namespace ESTree { + interface FlowTypeAnnotation extends Node {} + + interface FlowBaseTypeAnnotation extends FlowTypeAnnotation {} + + interface FlowLiteralTypeAnnotation extends FlowTypeAnnotation, Literal {} + + interface FlowDeclaration extends Declaration {} + + interface AnyTypeAnnotation extends FlowBaseTypeAnnotation {} + + interface ArrayTypeAnnotation extends FlowTypeAnnotation { + elementType: FlowTypeAnnotation; + } + + interface BooleanLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {} + + interface BooleanTypeAnnotation extends FlowBaseTypeAnnotation {} + + interface ClassImplements extends Node { + id: Identifier; + typeParameters?: TypeParameterInstantiation | null; + } + + interface ClassProperty { + key: Expression; + value?: Expression | null; + typeAnnotation?: TypeAnnotation | null; + computed: boolean; + static: boolean; + } + + interface DeclareClass extends FlowDeclaration { + id: Identifier; + typeParameters?: TypeParameterDeclaration | null; + body: ObjectTypeAnnotation; + extends: InterfaceExtends[]; + } + + interface DeclareFunction extends FlowDeclaration { + id: Identifier; + } + + interface DeclareModule extends FlowDeclaration { + id: Literal | Identifier; + body: BlockStatement; + } + + interface DeclareVariable extends FlowDeclaration { + id: Identifier; + } + + interface FunctionTypeAnnotation extends FlowTypeAnnotation { + params: FunctionTypeParam[]; + returnType: FlowTypeAnnotation; + rest?: FunctionTypeParam | null; + typeParameters?: TypeParameterDeclaration | null; + } + + interface FunctionTypeParam { + name: Identifier; + typeAnnotation: FlowTypeAnnotation; + optional: boolean; + } + + interface GenericTypeAnnotation extends FlowTypeAnnotation { + id: Identifier | QualifiedTypeIdentifier; + typeParameters?: TypeParameterInstantiation | null; + } + + interface InterfaceExtends extends Node { + id: Identifier | QualifiedTypeIdentifier; + typeParameters?: TypeParameterInstantiation | null; + } + + interface InterfaceDeclaration extends FlowDeclaration { + id: Identifier; + typeParameters?: TypeParameterDeclaration | null; + extends: InterfaceExtends[]; + body: ObjectTypeAnnotation; + } + + interface IntersectionTypeAnnotation extends FlowTypeAnnotation { + types: FlowTypeAnnotation[]; + } + + interface MixedTypeAnnotation extends FlowBaseTypeAnnotation {} + + interface NullableTypeAnnotation extends FlowTypeAnnotation { + typeAnnotation: TypeAnnotation; + } + + interface NumberLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {} + + interface NumberTypeAnnotation extends FlowBaseTypeAnnotation {} + + interface StringLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {} + + interface StringTypeAnnotation extends FlowBaseTypeAnnotation {} + + interface TupleTypeAnnotation extends FlowTypeAnnotation { + types: FlowTypeAnnotation[]; + } + + interface TypeofTypeAnnotation extends FlowTypeAnnotation { + argument: FlowTypeAnnotation; + } + + interface TypeAlias extends FlowDeclaration { + id: Identifier; + typeParameters?: TypeParameterDeclaration | null; + right: FlowTypeAnnotation; + } + + interface TypeAnnotation extends Node { + typeAnnotation: FlowTypeAnnotation; + } + + interface TypeCastExpression extends Expression { + expression: Expression; + typeAnnotation: TypeAnnotation; + } + + interface TypeParameterDeclaration extends Node { + params: Identifier[]; + } + + interface TypeParameterInstantiation extends Node { + params: FlowTypeAnnotation[]; + } + + interface ObjectTypeAnnotation extends FlowTypeAnnotation { + properties: ObjectTypeProperty[]; + indexers: ObjectTypeIndexer[]; + callProperties: ObjectTypeCallProperty[]; + } + + interface ObjectTypeCallProperty extends Node { + value: FunctionTypeAnnotation; + static: boolean; + } + + interface ObjectTypeIndexer extends Node { + id: Identifier; + key: FlowTypeAnnotation; + value: FlowTypeAnnotation; + static: boolean; + } + + interface ObjectTypeProperty extends Node { + key: Expression; + value: FlowTypeAnnotation; + optional: boolean; + static: boolean; + } + + interface QualifiedTypeIdentifier extends Node { + qualification: Identifier | QualifiedTypeIdentifier; + id: Identifier; + } + + interface UnionTypeAnnotation extends FlowTypeAnnotation { + types: FlowTypeAnnotation[]; + } + + interface VoidTypeAnnotation extends FlowBaseTypeAnnotation {} +} diff --git a/node_modules/@types/estree/index.d.ts b/node_modules/@types/estree/index.d.ts new file mode 100644 index 0000000..e933e20 --- /dev/null +++ b/node_modules/@types/estree/index.d.ts @@ -0,0 +1,683 @@ +// This definition file follows a somewhat unusual format. ESTree allows +// runtime type checks based on the `type` parameter. In order to explain this +// to typescript we want to use discriminated union types: +// https://github.com/Microsoft/TypeScript/pull/9163 +// +// For ESTree this is a bit tricky because the high level interfaces like +// Node or Function are pulling double duty. We want to pass common fields down +// to the interfaces that extend them (like Identifier or +// ArrowFunctionExpression), but you can't extend a type union or enforce +// common fields on them. So we've split the high level interfaces into two +// types, a base type which passes down inherited fields, and a type union of +// all types which extend the base type. Only the type union is exported, and +// the union is how other types refer to the collection of inheriting types. +// +// This makes the definitions file here somewhat more difficult to maintain, +// but it has the notable advantage of making ESTree much easier to use as +// an end user. + +export interface BaseNodeWithoutComments { + // Every leaf interface that extends BaseNode must specify a type property. + // The type property should be a string literal. For example, Identifier + // has: `type: "Identifier"` + type: string; + loc?: SourceLocation | null | undefined; + range?: [number, number] | undefined; +} + +export interface BaseNode extends BaseNodeWithoutComments { + leadingComments?: Comment[] | undefined; + trailingComments?: Comment[] | undefined; +} + +export interface NodeMap { + AssignmentProperty: AssignmentProperty; + CatchClause: CatchClause; + Class: Class; + ClassBody: ClassBody; + Expression: Expression; + Function: Function; + Identifier: Identifier; + Literal: Literal; + MethodDefinition: MethodDefinition; + ModuleDeclaration: ModuleDeclaration; + ModuleSpecifier: ModuleSpecifier; + Pattern: Pattern; + PrivateIdentifier: PrivateIdentifier; + Program: Program; + Property: Property; + PropertyDefinition: PropertyDefinition; + SpreadElement: SpreadElement; + Statement: Statement; + Super: Super; + SwitchCase: SwitchCase; + TemplateElement: TemplateElement; + VariableDeclarator: VariableDeclarator; +} + +export type Node = NodeMap[keyof NodeMap]; + +export interface Comment extends BaseNodeWithoutComments { + type: "Line" | "Block"; + value: string; +} + +export interface SourceLocation { + source?: string | null | undefined; + start: Position; + end: Position; +} + +export interface Position { + /** >= 1 */ + line: number; + /** >= 0 */ + column: number; +} + +export interface Program extends BaseNode { + type: "Program"; + sourceType: "script" | "module"; + body: Array; + comments?: Comment[] | undefined; +} + +export interface Directive extends BaseNode { + type: "ExpressionStatement"; + expression: Literal; + directive: string; +} + +export interface BaseFunction extends BaseNode { + params: Pattern[]; + generator?: boolean | undefined; + async?: boolean | undefined; + // The body is either BlockStatement or Expression because arrow functions + // can have a body that's either. FunctionDeclarations and + // FunctionExpressions have only BlockStatement bodies. + body: BlockStatement | Expression; +} + +export type Function = FunctionDeclaration | FunctionExpression | ArrowFunctionExpression; + +export type Statement = + | ExpressionStatement + | BlockStatement + | StaticBlock + | EmptyStatement + | DebuggerStatement + | WithStatement + | ReturnStatement + | LabeledStatement + | BreakStatement + | ContinueStatement + | IfStatement + | SwitchStatement + | ThrowStatement + | TryStatement + | WhileStatement + | DoWhileStatement + | ForStatement + | ForInStatement + | ForOfStatement + | Declaration; + +export interface BaseStatement extends BaseNode {} + +export interface EmptyStatement extends BaseStatement { + type: "EmptyStatement"; +} + +export interface BlockStatement extends BaseStatement { + type: "BlockStatement"; + body: Statement[]; + innerComments?: Comment[] | undefined; +} + +export interface StaticBlock extends Omit { + type: "StaticBlock"; +} + +export interface ExpressionStatement extends BaseStatement { + type: "ExpressionStatement"; + expression: Expression; +} + +export interface IfStatement extends BaseStatement { + type: "IfStatement"; + test: Expression; + consequent: Statement; + alternate?: Statement | null | undefined; +} + +export interface LabeledStatement extends BaseStatement { + type: "LabeledStatement"; + label: Identifier; + body: Statement; +} + +export interface BreakStatement extends BaseStatement { + type: "BreakStatement"; + label?: Identifier | null | undefined; +} + +export interface ContinueStatement extends BaseStatement { + type: "ContinueStatement"; + label?: Identifier | null | undefined; +} + +export interface WithStatement extends BaseStatement { + type: "WithStatement"; + object: Expression; + body: Statement; +} + +export interface SwitchStatement extends BaseStatement { + type: "SwitchStatement"; + discriminant: Expression; + cases: SwitchCase[]; +} + +export interface ReturnStatement extends BaseStatement { + type: "ReturnStatement"; + argument?: Expression | null | undefined; +} + +export interface ThrowStatement extends BaseStatement { + type: "ThrowStatement"; + argument: Expression; +} + +export interface TryStatement extends BaseStatement { + type: "TryStatement"; + block: BlockStatement; + handler?: CatchClause | null | undefined; + finalizer?: BlockStatement | null | undefined; +} + +export interface WhileStatement extends BaseStatement { + type: "WhileStatement"; + test: Expression; + body: Statement; +} + +export interface DoWhileStatement extends BaseStatement { + type: "DoWhileStatement"; + body: Statement; + test: Expression; +} + +export interface ForStatement extends BaseStatement { + type: "ForStatement"; + init?: VariableDeclaration | Expression | null | undefined; + test?: Expression | null | undefined; + update?: Expression | null | undefined; + body: Statement; +} + +export interface BaseForXStatement extends BaseStatement { + left: VariableDeclaration | Pattern; + right: Expression; + body: Statement; +} + +export interface ForInStatement extends BaseForXStatement { + type: "ForInStatement"; +} + +export interface DebuggerStatement extends BaseStatement { + type: "DebuggerStatement"; +} + +export type Declaration = FunctionDeclaration | VariableDeclaration | ClassDeclaration; + +export interface BaseDeclaration extends BaseStatement {} + +export interface MaybeNamedFunctionDeclaration extends BaseFunction, BaseDeclaration { + type: "FunctionDeclaration"; + /** It is null when a function declaration is a part of the `export default function` statement */ + id: Identifier | null; + body: BlockStatement; +} + +export interface FunctionDeclaration extends MaybeNamedFunctionDeclaration { + id: Identifier; +} + +export interface VariableDeclaration extends BaseDeclaration { + type: "VariableDeclaration"; + declarations: VariableDeclarator[]; + kind: "var" | "let" | "const"; +} + +export interface VariableDeclarator extends BaseNode { + type: "VariableDeclarator"; + id: Pattern; + init?: Expression | null | undefined; +} + +export interface ExpressionMap { + ArrayExpression: ArrayExpression; + ArrowFunctionExpression: ArrowFunctionExpression; + AssignmentExpression: AssignmentExpression; + AwaitExpression: AwaitExpression; + BinaryExpression: BinaryExpression; + CallExpression: CallExpression; + ChainExpression: ChainExpression; + ClassExpression: ClassExpression; + ConditionalExpression: ConditionalExpression; + FunctionExpression: FunctionExpression; + Identifier: Identifier; + ImportExpression: ImportExpression; + Literal: Literal; + LogicalExpression: LogicalExpression; + MemberExpression: MemberExpression; + MetaProperty: MetaProperty; + NewExpression: NewExpression; + ObjectExpression: ObjectExpression; + SequenceExpression: SequenceExpression; + TaggedTemplateExpression: TaggedTemplateExpression; + TemplateLiteral: TemplateLiteral; + ThisExpression: ThisExpression; + UnaryExpression: UnaryExpression; + UpdateExpression: UpdateExpression; + YieldExpression: YieldExpression; +} + +export type Expression = ExpressionMap[keyof ExpressionMap]; + +export interface BaseExpression extends BaseNode {} + +export type ChainElement = SimpleCallExpression | MemberExpression; + +export interface ChainExpression extends BaseExpression { + type: "ChainExpression"; + expression: ChainElement; +} + +export interface ThisExpression extends BaseExpression { + type: "ThisExpression"; +} + +export interface ArrayExpression extends BaseExpression { + type: "ArrayExpression"; + elements: Array; +} + +export interface ObjectExpression extends BaseExpression { + type: "ObjectExpression"; + properties: Array; +} + +export interface PrivateIdentifier extends BaseNode { + type: "PrivateIdentifier"; + name: string; +} + +export interface Property extends BaseNode { + type: "Property"; + key: Expression | PrivateIdentifier; + value: Expression | Pattern; // Could be an AssignmentProperty + kind: "init" | "get" | "set"; + method: boolean; + shorthand: boolean; + computed: boolean; +} + +export interface PropertyDefinition extends BaseNode { + type: "PropertyDefinition"; + key: Expression | PrivateIdentifier; + value?: Expression | null | undefined; + computed: boolean; + static: boolean; +} + +export interface FunctionExpression extends BaseFunction, BaseExpression { + id?: Identifier | null | undefined; + type: "FunctionExpression"; + body: BlockStatement; +} + +export interface SequenceExpression extends BaseExpression { + type: "SequenceExpression"; + expressions: Expression[]; +} + +export interface UnaryExpression extends BaseExpression { + type: "UnaryExpression"; + operator: UnaryOperator; + prefix: true; + argument: Expression; +} + +export interface BinaryExpression extends BaseExpression { + type: "BinaryExpression"; + operator: BinaryOperator; + left: Expression; + right: Expression; +} + +export interface AssignmentExpression extends BaseExpression { + type: "AssignmentExpression"; + operator: AssignmentOperator; + left: Pattern | MemberExpression; + right: Expression; +} + +export interface UpdateExpression extends BaseExpression { + type: "UpdateExpression"; + operator: UpdateOperator; + argument: Expression; + prefix: boolean; +} + +export interface LogicalExpression extends BaseExpression { + type: "LogicalExpression"; + operator: LogicalOperator; + left: Expression; + right: Expression; +} + +export interface ConditionalExpression extends BaseExpression { + type: "ConditionalExpression"; + test: Expression; + alternate: Expression; + consequent: Expression; +} + +export interface BaseCallExpression extends BaseExpression { + callee: Expression | Super; + arguments: Array; +} +export type CallExpression = SimpleCallExpression | NewExpression; + +export interface SimpleCallExpression extends BaseCallExpression { + type: "CallExpression"; + optional: boolean; +} + +export interface NewExpression extends BaseCallExpression { + type: "NewExpression"; +} + +export interface MemberExpression extends BaseExpression, BasePattern { + type: "MemberExpression"; + object: Expression | Super; + property: Expression | PrivateIdentifier; + computed: boolean; + optional: boolean; +} + +export type Pattern = Identifier | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern | MemberExpression; + +export interface BasePattern extends BaseNode {} + +export interface SwitchCase extends BaseNode { + type: "SwitchCase"; + test?: Expression | null | undefined; + consequent: Statement[]; +} + +export interface CatchClause extends BaseNode { + type: "CatchClause"; + param: Pattern | null; + body: BlockStatement; +} + +export interface Identifier extends BaseNode, BaseExpression, BasePattern { + type: "Identifier"; + name: string; +} + +export type Literal = SimpleLiteral | RegExpLiteral | BigIntLiteral; + +export interface SimpleLiteral extends BaseNode, BaseExpression { + type: "Literal"; + value: string | boolean | number | null; + raw?: string | undefined; +} + +export interface RegExpLiteral extends BaseNode, BaseExpression { + type: "Literal"; + value?: RegExp | null | undefined; + regex: { + pattern: string; + flags: string; + }; + raw?: string | undefined; +} + +export interface BigIntLiteral extends BaseNode, BaseExpression { + type: "Literal"; + value?: bigint | null | undefined; + bigint: string; + raw?: string | undefined; +} + +export type UnaryOperator = "-" | "+" | "!" | "~" | "typeof" | "void" | "delete"; + +export type BinaryOperator = + | "==" + | "!=" + | "===" + | "!==" + | "<" + | "<=" + | ">" + | ">=" + | "<<" + | ">>" + | ">>>" + | "+" + | "-" + | "*" + | "/" + | "%" + | "**" + | "|" + | "^" + | "&" + | "in" + | "instanceof"; + +export type LogicalOperator = "||" | "&&" | "??"; + +export type AssignmentOperator = + | "=" + | "+=" + | "-=" + | "*=" + | "/=" + | "%=" + | "**=" + | "<<=" + | ">>=" + | ">>>=" + | "|=" + | "^=" + | "&=" + | "||=" + | "&&=" + | "??="; + +export type UpdateOperator = "++" | "--"; + +export interface ForOfStatement extends BaseForXStatement { + type: "ForOfStatement"; + await: boolean; +} + +export interface Super extends BaseNode { + type: "Super"; +} + +export interface SpreadElement extends BaseNode { + type: "SpreadElement"; + argument: Expression; +} + +export interface ArrowFunctionExpression extends BaseExpression, BaseFunction { + type: "ArrowFunctionExpression"; + expression: boolean; + body: BlockStatement | Expression; +} + +export interface YieldExpression extends BaseExpression { + type: "YieldExpression"; + argument?: Expression | null | undefined; + delegate: boolean; +} + +export interface TemplateLiteral extends BaseExpression { + type: "TemplateLiteral"; + quasis: TemplateElement[]; + expressions: Expression[]; +} + +export interface TaggedTemplateExpression extends BaseExpression { + type: "TaggedTemplateExpression"; + tag: Expression; + quasi: TemplateLiteral; +} + +export interface TemplateElement extends BaseNode { + type: "TemplateElement"; + tail: boolean; + value: { + /** It is null when the template literal is tagged and the text has an invalid escape (e.g. - tag`\unicode and \u{55}`) */ + cooked?: string | null | undefined; + raw: string; + }; +} + +export interface AssignmentProperty extends Property { + value: Pattern; + kind: "init"; + method: boolean; // false +} + +export interface ObjectPattern extends BasePattern { + type: "ObjectPattern"; + properties: Array; +} + +export interface ArrayPattern extends BasePattern { + type: "ArrayPattern"; + elements: Array; +} + +export interface RestElement extends BasePattern { + type: "RestElement"; + argument: Pattern; +} + +export interface AssignmentPattern extends BasePattern { + type: "AssignmentPattern"; + left: Pattern; + right: Expression; +} + +export type Class = ClassDeclaration | ClassExpression; +export interface BaseClass extends BaseNode { + superClass?: Expression | null | undefined; + body: ClassBody; +} + +export interface ClassBody extends BaseNode { + type: "ClassBody"; + body: Array; +} + +export interface MethodDefinition extends BaseNode { + type: "MethodDefinition"; + key: Expression | PrivateIdentifier; + value: FunctionExpression; + kind: "constructor" | "method" | "get" | "set"; + computed: boolean; + static: boolean; +} + +export interface MaybeNamedClassDeclaration extends BaseClass, BaseDeclaration { + type: "ClassDeclaration"; + /** It is null when a class declaration is a part of the `export default class` statement */ + id: Identifier | null; +} + +export interface ClassDeclaration extends MaybeNamedClassDeclaration { + id: Identifier; +} + +export interface ClassExpression extends BaseClass, BaseExpression { + type: "ClassExpression"; + id?: Identifier | null | undefined; +} + +export interface MetaProperty extends BaseExpression { + type: "MetaProperty"; + meta: Identifier; + property: Identifier; +} + +export type ModuleDeclaration = + | ImportDeclaration + | ExportNamedDeclaration + | ExportDefaultDeclaration + | ExportAllDeclaration; +export interface BaseModuleDeclaration extends BaseNode {} + +export type ModuleSpecifier = ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ExportSpecifier; +export interface BaseModuleSpecifier extends BaseNode { + local: Identifier; +} + +export interface ImportDeclaration extends BaseModuleDeclaration { + type: "ImportDeclaration"; + specifiers: Array; + source: Literal; +} + +export interface ImportSpecifier extends BaseModuleSpecifier { + type: "ImportSpecifier"; + imported: Identifier; +} + +export interface ImportExpression extends BaseExpression { + type: "ImportExpression"; + source: Expression; +} + +export interface ImportDefaultSpecifier extends BaseModuleSpecifier { + type: "ImportDefaultSpecifier"; +} + +export interface ImportNamespaceSpecifier extends BaseModuleSpecifier { + type: "ImportNamespaceSpecifier"; +} + +export interface ExportNamedDeclaration extends BaseModuleDeclaration { + type: "ExportNamedDeclaration"; + declaration?: Declaration | null | undefined; + specifiers: ExportSpecifier[]; + source?: Literal | null | undefined; +} + +export interface ExportSpecifier extends BaseModuleSpecifier { + type: "ExportSpecifier"; + exported: Identifier; +} + +export interface ExportDefaultDeclaration extends BaseModuleDeclaration { + type: "ExportDefaultDeclaration"; + declaration: MaybeNamedFunctionDeclaration | MaybeNamedClassDeclaration | Expression; +} + +export interface ExportAllDeclaration extends BaseModuleDeclaration { + type: "ExportAllDeclaration"; + exported: Identifier | null; + source: Literal; +} + +export interface AwaitExpression extends BaseExpression { + type: "AwaitExpression"; + argument: Expression; +} diff --git a/node_modules/@types/estree/package.json b/node_modules/@types/estree/package.json new file mode 100644 index 0000000..2d5a998 --- /dev/null +++ b/node_modules/@types/estree/package.json @@ -0,0 +1,26 @@ +{ + "name": "@types/estree", + "version": "1.0.5", + "description": "TypeScript definitions for estree", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree", + "license": "MIT", + "contributors": [ + { + "name": "RReverser", + "githubUsername": "RReverser", + "url": "https://github.com/RReverser" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/estree" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "6f0eeaffe488ce594e73f8df619c677d752a279b51edbc744e4aebb20db4b3a7", + "typeScriptVersion": "4.5", + "nonNpm": true +} \ No newline at end of file diff --git a/node_modules/@types/prop-types/LICENSE b/node_modules/@types/prop-types/LICENSE new file mode 100644 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/prop-types/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/prop-types/README.md b/node_modules/@types/prop-types/README.md new file mode 100644 index 0000000..8beeb95 --- /dev/null +++ b/node_modules/@types/prop-types/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/prop-types` + +# Summary +This package contains type definitions for prop-types (https://github.com/reactjs/prop-types). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/prop-types. + +### Additional Details + * Last updated: Fri, 22 Mar 2024 18:07:25 GMT + * Dependencies: none + +# Credits +These definitions were written by [DovydasNavickas](https://github.com/DovydasNavickas), [Ferdy Budhidharma](https://github.com/ferdaber), and [Sebastian Silbermann](https://github.com/eps1lon). diff --git a/node_modules/@types/prop-types/index.d.ts b/node_modules/@types/prop-types/index.d.ts new file mode 100644 index 0000000..13ccec2 --- /dev/null +++ b/node_modules/@types/prop-types/index.d.ts @@ -0,0 +1,109 @@ +export type ReactComponentLike = + | string + | ((props: any, context?: any) => any) + | (new(props: any, context?: any) => any); + +export interface ReactElementLike { + type: ReactComponentLike; + props: any; + key: string | null; +} + +export interface ReactNodeArray extends Iterable {} + +export type ReactNodeLike = + | ReactElementLike + | ReactNodeArray + | string + | number + | boolean + | null + | undefined; + +export const nominalTypeHack: unique symbol; + +export type IsOptional = undefined extends T ? true : false; + +export type RequiredKeys = { + [K in keyof V]-?: Exclude extends Validator ? IsOptional extends true ? never : K + : never; +}[keyof V]; +export type OptionalKeys = Exclude>; +export type InferPropsInner = { [K in keyof V]-?: InferType }; + +export interface Validator { + ( + props: { [key: string]: any }, + propName: string, + componentName: string, + location: string, + propFullName: string, + ): Error | null; + [nominalTypeHack]?: { + type: T; + } | undefined; +} + +export interface Requireable extends Validator { + isRequired: Validator>; +} + +export type ValidationMap = { [K in keyof T]?: Validator }; + +/** + * Like {@link ValidationMap} but treats `undefined`, `null` and optional properties the same. + * This type is only added as a migration path in React 19 where this type was removed from React. + * Runtime and compile time types would mismatch since you could see `undefined` at runtime when your types don't expect this type. + */ +export type WeakValidationMap = { + [K in keyof T]?: null extends T[K] ? Validator + : undefined extends T[K] ? Validator + : Validator; +}; + +export type InferType = V extends Validator ? T : any; +export type InferProps = + & InferPropsInner>> + & Partial>>>; + +export const any: Requireable; +export const array: Requireable; +export const bool: Requireable; +export const func: Requireable<(...args: any[]) => any>; +export const number: Requireable; +export const object: Requireable; +export const string: Requireable; +export const node: Requireable; +export const element: Requireable; +export const symbol: Requireable; +export const elementType: Requireable; +export function instanceOf(expectedClass: new(...args: any[]) => T): Requireable; +export function oneOf(types: readonly T[]): Requireable; +export function oneOfType>(types: T[]): Requireable>>; +export function arrayOf(type: Validator): Requireable; +export function objectOf(type: Validator): Requireable<{ [K in keyof any]: T }>; +export function shape

>(type: P): Requireable>; +export function exact

>(type: P): Requireable>>; + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param typeSpecs Map of name to a ReactPropType + * @param values Runtime values that need to be type-checked + * @param location e.g. "prop", "context", "child context" + * @param componentName Name of the component for error messages + * @param getStack Returns the component stack + */ +export function checkPropTypes( + typeSpecs: any, + values: any, + location: string, + componentName: string, + getStack?: () => any, +): void; + +/** + * Only available if NODE_ENV=production + */ +export function resetWarningCache(): void; diff --git a/node_modules/@types/prop-types/package.json b/node_modules/@types/prop-types/package.json new file mode 100644 index 0000000..e44b19b --- /dev/null +++ b/node_modules/@types/prop-types/package.json @@ -0,0 +1,35 @@ +{ + "name": "@types/prop-types", + "version": "15.7.12", + "description": "TypeScript definitions for prop-types", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/prop-types", + "license": "MIT", + "contributors": [ + { + "name": "DovydasNavickas", + "githubUsername": "DovydasNavickas", + "url": "https://github.com/DovydasNavickas" + }, + { + "name": "Ferdy Budhidharma", + "githubUsername": "ferdaber", + "url": "https://github.com/ferdaber" + }, + { + "name": "Sebastian Silbermann", + "githubUsername": "eps1lon", + "url": "https://github.com/eps1lon" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/prop-types" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "9f43a310cba2ddc63b5ca98d9cce503eaead853f72f038eb5c29c623dc2c01b6", + "typeScriptVersion": "4.7" +} \ No newline at end of file diff --git a/node_modules/@types/react/LICENSE b/node_modules/@types/react/LICENSE new file mode 100644 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/react/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/react/README.md b/node_modules/@types/react/README.md new file mode 100644 index 0000000..213c822 --- /dev/null +++ b/node_modules/@types/react/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/react` + +# Summary +This package contains type definitions for react (https://react.dev/). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react. + +### Additional Details + * Last updated: Tue, 20 Aug 2024 20:36:15 GMT + * Dependencies: [@types/prop-types](https://npmjs.com/package/@types/prop-types), [csstype](https://npmjs.com/package/csstype) + +# Credits +These definitions were written by [Asana](https://asana.com), [AssureSign](http://www.assuresign.com), [Microsoft](https://microsoft.com), [John Reilly](https://github.com/johnnyreilly), [Benoit Benezech](https://github.com/bbenezech), [Patricio Zavolinsky](https://github.com/pzavolinsky), [Eric Anderson](https://github.com/ericanderson), [Dovydas Navickas](https://github.com/DovydasNavickas), [Josh Rutherford](https://github.com/theruther4d), [Guilherme Hübner](https://github.com/guilhermehubner), [Ferdy Budhidharma](https://github.com/ferdaber), [Johann Rakotoharisoa](https://github.com/jrakotoharisoa), [Olivier Pascal](https://github.com/pascaloliv), [Martin Hochel](https://github.com/hotell), [Frank Li](https://github.com/franklixuefei), [Jessica Franco](https://github.com/Jessidhia), [Saransh Kataria](https://github.com/saranshkataria), [Kanitkorn Sujautra](https://github.com/lukyth), [Sebastian Silbermann](https://github.com/eps1lon), [Kyle Scully](https://github.com/zieka), [Cong Zhang](https://github.com/dancerphil), [Dimitri Mitropoulos](https://github.com/dimitropoulos), [JongChan Choi](https://github.com/disjukr), [Victor Magalhães](https://github.com/vhfmag), [Dale Tan](https://github.com/hellatan), [Priyanshu Rav](https://github.com/priyanshurav), [Dmitry Semigradsky](https://github.com/Semigradsky), and [Matt Pocock](https://github.com/mattpocock). diff --git a/node_modules/@types/react/canary.d.ts b/node_modules/@types/react/canary.d.ts new file mode 100644 index 0000000..6e9b801 --- /dev/null +++ b/node_modules/@types/react/canary.d.ts @@ -0,0 +1,157 @@ +/** + * These are types for things that are present in the React `canary` release channel. + * + * To load the types declared here in an actual project, there are three ways. The easiest one, + * if your `tsconfig.json` already has a `"types"` array in the `"compilerOptions"` section, + * is to add `"react/canary"` to the `"types"` array. + * + * Alternatively, a specific import syntax can to be used from a typescript file. + * This module does not exist in reality, which is why the {} is important: + * + * ```ts + * import {} from 'react/canary' + * ``` + * + * It is also possible to include it through a triple-slash reference: + * + * ```ts + * /// + * ``` + * + * Either the import or the reference only needs to appear once, anywhere in the project. + */ + +// See https://github.com/facebook/react/blob/main/packages/react/src/React.js to see how the exports are declared, + +import React = require("."); + +export {}; + +declare const UNDEFINED_VOID_ONLY: unique symbol; +type VoidOrUndefinedOnly = void | { [UNDEFINED_VOID_ONLY]: never }; + +type NativeToggleEvent = ToggleEvent; + +declare module "." { + export type Usable = PromiseLike | Context; + + export function use(usable: Usable): T; + + interface ServerContextJSONArray extends ReadonlyArray {} + export type ServerContextJSONValue = + | string + | boolean + | number + | null + | ServerContextJSONArray + | { [key: string]: ServerContextJSONValue }; + export interface ServerContext { + Provider: Provider; + } + /** + * Accepts a context object (the value returned from `React.createContext` or `React.createServerContext`) and returns the current + * context value, as given by the nearest context provider for the given context. + * + * @version 16.8.0 + * @see https://react.dev/reference/react/useContext + */ + function useContext(context: ServerContext): T; + export function createServerContext( + globalName: string, + defaultValue: T, + ): ServerContext; + + // eslint-disable-next-line @typescript-eslint/ban-types + export function cache(fn: CachedFunction): CachedFunction; + + export function unstable_useCacheRefresh(): () => void; + + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS { + functions: (formData: FormData) => void; + } + + export interface TransitionStartFunction { + /** + * Marks all state updates inside the async function as transitions + * + * @see {https://react.dev/reference/react/useTransition#starttransition} + * + * @param callback + */ + (callback: () => Promise): void; + } + + /** + * Similar to `useTransition` but allows uses where hooks are not available. + * + * @param callback An _asynchronous_ function which causes state updates that can be deferred. + */ + export function startTransition(scope: () => Promise): void; + + export function useOptimistic( + passthrough: State, + ): [State, (action: State | ((pendingState: State) => State)) => void]; + export function useOptimistic( + passthrough: State, + reducer: (state: State, action: Action) => State, + ): [State, (action: Action) => void]; + + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES { + cleanup: () => VoidOrUndefinedOnly; + } + + export function useActionState( + action: (state: Awaited) => State | Promise, + initialState: Awaited, + permalink?: string, + ): [state: Awaited, dispatch: () => void, isPending: boolean]; + export function useActionState( + action: (state: Awaited, payload: Payload) => State | Promise, + initialState: Awaited, + permalink?: string, + ): [state: Awaited, dispatch: (payload: Payload) => void, isPending: boolean]; + + interface DOMAttributes { + // Transition Events + onTransitionCancel?: TransitionEventHandler | undefined; + onTransitionCancelCapture?: TransitionEventHandler | undefined; + onTransitionRun?: TransitionEventHandler | undefined; + onTransitionRunCapture?: TransitionEventHandler | undefined; + onTransitionStart?: TransitionEventHandler | undefined; + onTransitionStartCapture?: TransitionEventHandler | undefined; + } + + type ToggleEventHandler = EventHandler>; + + interface HTMLAttributes { + popover?: "" | "auto" | "manual" | undefined; + popoverTargetAction?: "toggle" | "show" | "hide" | undefined; + popoverTarget?: string | undefined; + onToggle?: ToggleEventHandler | undefined; + onBeforeToggle?: ToggleEventHandler | undefined; + } + + interface ToggleEvent extends SyntheticEvent { + oldState: "closed" | "open"; + newState: "closed" | "open"; + } + + /** + * @internal Use `Awaited` instead + */ + // Helper type to enable `Awaited`. + // Must be a copy of the non-thenables of `ReactNode`. + type AwaitedReactNode = + | ReactElement + | string + | number + | Iterable + | ReactPortal + | boolean + | null + | undefined; + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_REACT_NODES { + promises: Promise; + bigints: bigint; + } +} diff --git a/node_modules/@types/react/experimental.d.ts b/node_modules/@types/react/experimental.d.ts new file mode 100644 index 0000000..a14be61 --- /dev/null +++ b/node_modules/@types/react/experimental.d.ts @@ -0,0 +1,127 @@ +/** + * These are types for things that are present in the `experimental` builds of React but not yet + * on a stable build. + * + * Once they are promoted to stable they can just be moved to the main index file. + * + * To load the types declared here in an actual project, there are three ways. The easiest one, + * if your `tsconfig.json` already has a `"types"` array in the `"compilerOptions"` section, + * is to add `"react/experimental"` to the `"types"` array. + * + * Alternatively, a specific import syntax can to be used from a typescript file. + * This module does not exist in reality, which is why the {} is important: + * + * ```ts + * import {} from 'react/experimental' + * ``` + * + * It is also possible to include it through a triple-slash reference: + * + * ```ts + * /// + * ``` + * + * Either the import or the reference only needs to appear once, anywhere in the project. + */ + +// See https://github.com/facebook/react/blob/master/packages/react/src/React.js to see how the exports are declared, +// and https://github.com/facebook/react/blob/master/packages/shared/ReactFeatureFlags.js to verify which APIs are +// flagged experimental or not. Experimental APIs will be tagged with `__EXPERIMENTAL__`. +// +// For the inputs of types exported as simply a fiber tag, the `beginWork` function of ReactFiberBeginWork.js +// is a good place to start looking for details; it generally calls prop validation functions or delegates +// all tasks done as part of the render phase (the concurrent part of the React update cycle). +// +// Suspense-related handling can be found in ReactFiberThrow.js. + +import React = require("./canary"); + +export {}; + +declare const UNDEFINED_VOID_ONLY: unique symbol; +type VoidOrUndefinedOnly = void | { [UNDEFINED_VOID_ONLY]: never }; + +declare module "." { + export interface SuspenseProps { + /** + * The presence of this prop indicates that the content is computationally expensive to render. + * In other words, the tree is CPU bound and not I/O bound (e.g. due to fetching data). + * @see {@link https://github.com/facebook/react/pull/19936} + */ + unstable_expectedLoadTime?: number | undefined; + } + + export type SuspenseListRevealOrder = "forwards" | "backwards" | "together"; + export type SuspenseListTailMode = "collapsed" | "hidden"; + + export interface SuspenseListCommonProps { + /** + * Note that SuspenseList require more than one child; + * it is a runtime warning to provide only a single child. + * + * It does, however, allow those children to be wrapped inside a single + * level of ``. + */ + children: ReactElement | Iterable; + } + + interface DirectionalSuspenseListProps extends SuspenseListCommonProps { + /** + * Defines the order in which the `SuspenseList` children should be revealed. + */ + revealOrder: "forwards" | "backwards"; + /** + * Dictates how unloaded items in a SuspenseList is shown. + * + * - By default, `SuspenseList` will show all fallbacks in the list. + * - `collapsed` shows only the next fallback in the list. + * - `hidden` doesn’t show any unloaded items. + */ + tail?: SuspenseListTailMode | undefined; + } + + interface NonDirectionalSuspenseListProps extends SuspenseListCommonProps { + /** + * Defines the order in which the `SuspenseList` children should be revealed. + */ + revealOrder?: Exclude | undefined; + /** + * The tail property is invalid when not using the `forwards` or `backwards` reveal orders. + */ + tail?: never | undefined; + } + + export type SuspenseListProps = DirectionalSuspenseListProps | NonDirectionalSuspenseListProps; + + /** + * `SuspenseList` helps coordinate many components that can suspend by orchestrating the order + * in which these components are revealed to the user. + * + * When multiple components need to fetch data, this data may arrive in an unpredictable order. + * However, if you wrap these items in a `SuspenseList`, React will not show an item in the list + * until previous items have been displayed (this behavior is adjustable). + * + * @see https://reactjs.org/docs/concurrent-mode-reference.html#suspenselist + * @see https://reactjs.org/docs/concurrent-mode-patterns.html#suspenselist + */ + export const unstable_SuspenseList: ExoticComponent; + + // eslint-disable-next-line @typescript-eslint/ban-types + export function experimental_useEffectEvent(event: T): T; + + type Reference = object; + type TaintableUniqueValue = string | bigint | ArrayBufferView; + function experimental_taintUniqueValue( + message: string | undefined, + lifetime: Reference, + value: TaintableUniqueValue, + ): void; + function experimental_taintObjectReference(message: string | undefined, object: Reference): void; + + export interface HTMLAttributes { + /** + * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/inert + */ + inert?: boolean | undefined; + } +} diff --git a/node_modules/@types/react/global.d.ts b/node_modules/@types/react/global.d.ts new file mode 100644 index 0000000..8ae2ddd --- /dev/null +++ b/node_modules/@types/react/global.d.ts @@ -0,0 +1,160 @@ +/* +React projects that don't include the DOM library need these interfaces to compile. +React Native applications use React, but there is no DOM available. The JavaScript runtime +is ES6/ES2015 only. These definitions allow such projects to compile with only `--lib ES6`. + +Warning: all of these interfaces are empty. If you want type definitions for various properties +(such as HTMLInputElement.prototype.value), you need to add `--lib DOM` (via command line or tsconfig.json). +*/ + +interface Event {} +interface AnimationEvent extends Event {} +interface ClipboardEvent extends Event {} +interface CompositionEvent extends Event {} +interface DragEvent extends Event {} +interface FocusEvent extends Event {} +interface KeyboardEvent extends Event {} +interface MouseEvent extends Event {} +interface TouchEvent extends Event {} +interface PointerEvent extends Event {} +interface ToggleEvent extends Event {} +interface TransitionEvent extends Event {} +interface UIEvent extends Event {} +interface WheelEvent extends Event {} + +interface EventTarget {} +interface Document {} +interface DataTransfer {} +interface StyleMedia {} + +interface Element {} +interface DocumentFragment {} + +interface HTMLElement extends Element {} +interface HTMLAnchorElement extends HTMLElement {} +interface HTMLAreaElement extends HTMLElement {} +interface HTMLAudioElement extends HTMLElement {} +interface HTMLBaseElement extends HTMLElement {} +interface HTMLBodyElement extends HTMLElement {} +interface HTMLBRElement extends HTMLElement {} +interface HTMLButtonElement extends HTMLElement {} +interface HTMLCanvasElement extends HTMLElement {} +interface HTMLDataElement extends HTMLElement {} +interface HTMLDataListElement extends HTMLElement {} +interface HTMLDetailsElement extends HTMLElement {} +interface HTMLDialogElement extends HTMLElement {} +interface HTMLDivElement extends HTMLElement {} +interface HTMLDListElement extends HTMLElement {} +interface HTMLEmbedElement extends HTMLElement {} +interface HTMLFieldSetElement extends HTMLElement {} +interface HTMLFormElement extends HTMLElement {} +interface HTMLHeadingElement extends HTMLElement {} +interface HTMLHeadElement extends HTMLElement {} +interface HTMLHRElement extends HTMLElement {} +interface HTMLHtmlElement extends HTMLElement {} +interface HTMLIFrameElement extends HTMLElement {} +interface HTMLImageElement extends HTMLElement {} +interface HTMLInputElement extends HTMLElement {} +interface HTMLModElement extends HTMLElement {} +interface HTMLLabelElement extends HTMLElement {} +interface HTMLLegendElement extends HTMLElement {} +interface HTMLLIElement extends HTMLElement {} +interface HTMLLinkElement extends HTMLElement {} +interface HTMLMapElement extends HTMLElement {} +interface HTMLMetaElement extends HTMLElement {} +interface HTMLMeterElement extends HTMLElement {} +interface HTMLObjectElement extends HTMLElement {} +interface HTMLOListElement extends HTMLElement {} +interface HTMLOptGroupElement extends HTMLElement {} +interface HTMLOptionElement extends HTMLElement {} +interface HTMLOutputElement extends HTMLElement {} +interface HTMLParagraphElement extends HTMLElement {} +interface HTMLParamElement extends HTMLElement {} +interface HTMLPreElement extends HTMLElement {} +interface HTMLProgressElement extends HTMLElement {} +interface HTMLQuoteElement extends HTMLElement {} +interface HTMLSlotElement extends HTMLElement {} +interface HTMLScriptElement extends HTMLElement {} +interface HTMLSelectElement extends HTMLElement {} +interface HTMLSourceElement extends HTMLElement {} +interface HTMLSpanElement extends HTMLElement {} +interface HTMLStyleElement extends HTMLElement {} +interface HTMLTableElement extends HTMLElement {} +interface HTMLTableColElement extends HTMLElement {} +interface HTMLTableDataCellElement extends HTMLElement {} +interface HTMLTableHeaderCellElement extends HTMLElement {} +interface HTMLTableRowElement extends HTMLElement {} +interface HTMLTableSectionElement extends HTMLElement {} +interface HTMLTemplateElement extends HTMLElement {} +interface HTMLTextAreaElement extends HTMLElement {} +interface HTMLTimeElement extends HTMLElement {} +interface HTMLTitleElement extends HTMLElement {} +interface HTMLTrackElement extends HTMLElement {} +interface HTMLUListElement extends HTMLElement {} +interface HTMLVideoElement extends HTMLElement {} +interface HTMLWebViewElement extends HTMLElement {} + +interface SVGElement extends Element {} +interface SVGSVGElement extends SVGElement {} +interface SVGCircleElement extends SVGElement {} +interface SVGClipPathElement extends SVGElement {} +interface SVGDefsElement extends SVGElement {} +interface SVGDescElement extends SVGElement {} +interface SVGEllipseElement extends SVGElement {} +interface SVGFEBlendElement extends SVGElement {} +interface SVGFEColorMatrixElement extends SVGElement {} +interface SVGFEComponentTransferElement extends SVGElement {} +interface SVGFECompositeElement extends SVGElement {} +interface SVGFEConvolveMatrixElement extends SVGElement {} +interface SVGFEDiffuseLightingElement extends SVGElement {} +interface SVGFEDisplacementMapElement extends SVGElement {} +interface SVGFEDistantLightElement extends SVGElement {} +interface SVGFEDropShadowElement extends SVGElement {} +interface SVGFEFloodElement extends SVGElement {} +interface SVGFEFuncAElement extends SVGElement {} +interface SVGFEFuncBElement extends SVGElement {} +interface SVGFEFuncGElement extends SVGElement {} +interface SVGFEFuncRElement extends SVGElement {} +interface SVGFEGaussianBlurElement extends SVGElement {} +interface SVGFEImageElement extends SVGElement {} +interface SVGFEMergeElement extends SVGElement {} +interface SVGFEMergeNodeElement extends SVGElement {} +interface SVGFEMorphologyElement extends SVGElement {} +interface SVGFEOffsetElement extends SVGElement {} +interface SVGFEPointLightElement extends SVGElement {} +interface SVGFESpecularLightingElement extends SVGElement {} +interface SVGFESpotLightElement extends SVGElement {} +interface SVGFETileElement extends SVGElement {} +interface SVGFETurbulenceElement extends SVGElement {} +interface SVGFilterElement extends SVGElement {} +interface SVGForeignObjectElement extends SVGElement {} +interface SVGGElement extends SVGElement {} +interface SVGImageElement extends SVGElement {} +interface SVGLineElement extends SVGElement {} +interface SVGLinearGradientElement extends SVGElement {} +interface SVGMarkerElement extends SVGElement {} +interface SVGMaskElement extends SVGElement {} +interface SVGMetadataElement extends SVGElement {} +interface SVGPathElement extends SVGElement {} +interface SVGPatternElement extends SVGElement {} +interface SVGPolygonElement extends SVGElement {} +interface SVGPolylineElement extends SVGElement {} +interface SVGRadialGradientElement extends SVGElement {} +interface SVGRectElement extends SVGElement {} +interface SVGSetElement extends SVGElement {} +interface SVGStopElement extends SVGElement {} +interface SVGSwitchElement extends SVGElement {} +interface SVGSymbolElement extends SVGElement {} +interface SVGTextElement extends SVGElement {} +interface SVGTextPathElement extends SVGElement {} +interface SVGTSpanElement extends SVGElement {} +interface SVGUseElement extends SVGElement {} +interface SVGViewElement extends SVGElement {} + +interface FormData {} +interface Text {} +interface TouchList {} +interface WebGLRenderingContext {} +interface WebGL2RenderingContext {} + +interface TrustedHTML {} diff --git a/node_modules/@types/react/index.d.ts b/node_modules/@types/react/index.d.ts new file mode 100644 index 0000000..1c361b3 --- /dev/null +++ b/node_modules/@types/react/index.d.ts @@ -0,0 +1,4537 @@ +// NOTE: Users of the `experimental` builds of React should add a reference +// to 'react/experimental' in their project. See experimental.d.ts's top comment +// for reference and documentation on how exactly to do it. + +/// + +import * as CSS from "csstype"; +import * as PropTypes from "prop-types"; + +type NativeAnimationEvent = AnimationEvent; +type NativeClipboardEvent = ClipboardEvent; +type NativeCompositionEvent = CompositionEvent; +type NativeDragEvent = DragEvent; +type NativeFocusEvent = FocusEvent; +type NativeKeyboardEvent = KeyboardEvent; +type NativeMouseEvent = MouseEvent; +type NativeTouchEvent = TouchEvent; +type NativePointerEvent = PointerEvent; +type NativeTransitionEvent = TransitionEvent; +type NativeUIEvent = UIEvent; +type NativeWheelEvent = WheelEvent; + +/** + * Used to represent DOM API's where users can either pass + * true or false as a boolean or as its equivalent strings. + */ +type Booleanish = boolean | "true" | "false"; + +/** + * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin MDN} + */ +type CrossOrigin = "anonymous" | "use-credentials" | "" | undefined; + +declare const UNDEFINED_VOID_ONLY: unique symbol; + +/** + * The function returned from an effect passed to {@link React.useEffect useEffect}, + * which can be used to clean up the effect when the component unmounts. + * + * @see {@link https://react.dev/reference/react/useEffect React Docs} + */ +type Destructor = () => void | { [UNDEFINED_VOID_ONLY]: never }; +type VoidOrUndefinedOnly = void | { [UNDEFINED_VOID_ONLY]: never }; + +// eslint-disable-next-line @definitelytyped/export-just-namespace +export = React; +export as namespace React; + +declare namespace React { + // + // React Elements + // ---------------------------------------------------------------------- + + /** + * Used to retrieve the possible components which accept a given set of props. + * + * Can be passed no type parameters to get a union of all possible components + * and tags. + * + * Is a superset of {@link ComponentType}. + * + * @template P The props to match against. If not passed, defaults to any. + * @template Tag An optional tag to match against. If not passed, attempts to match against all possible tags. + * + * @example + * + * ```tsx + * // All components and tags (img, embed etc.) + * // which accept `src` + * type SrcComponents = ElementType<{ src: any }>; + * ``` + * + * @example + * + * ```tsx + * // All components + * type AllComponents = ElementType; + * ``` + * + * @example + * + * ```tsx + * // All custom components which match `src`, and tags which + * // match `src`, narrowed down to just `audio` and `embed` + * type SrcComponents = ElementType<{ src: any }, 'audio' | 'embed'>; + * ``` + */ + type ElementType

= + | { [K in Tag]: P extends JSX.IntrinsicElements[K] ? K : never }[Tag] + | ComponentType

; + + /** + * Represents any user-defined component, either as a function or a class. + * + * Similar to {@link JSXElementConstructor}, but with extra properties like + * {@link FunctionComponent.defaultProps defaultProps } and + * {@link ComponentClass.contextTypes contextTypes}. + * + * @template P The props the component accepts. + * + * @see {@link ComponentClass} + * @see {@link FunctionComponent} + */ + type ComponentType

= ComponentClass

| FunctionComponent

; + + /** + * Represents any user-defined component, either as a function or a class. + * + * Similar to {@link ComponentType}, but without extra properties like + * {@link FunctionComponent.defaultProps defaultProps } and + * {@link ComponentClass.contextTypes contextTypes}. + * + * @template P The props the component accepts. + */ + type JSXElementConstructor

= + | (( + props: P, + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-stateless-function-components React Docs} + */ + deprecatedLegacyContext?: any, + ) => ReactNode) + | (new( + props: P, + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods React Docs} + */ + deprecatedLegacyContext?: any, + ) => Component); + + /** + * A readonly ref container where {@link current} cannot be mutated. + * + * Created by {@link createRef}, or {@link useRef} when passed `null`. + * + * @template T The type of the ref's value. + * + * @example + * + * ```tsx + * const ref = createRef(); + * + * ref.current = document.createElement('div'); // Error + * ``` + */ + interface RefObject { + /** + * The current value of the ref. + */ + readonly current: T | null; + } + + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES { + } + /** + * A callback fired whenever the ref's value changes. + * + * @template T The type of the ref's value. + * + * @see {@link https://react.dev/reference/react-dom/components/common#ref-callback React Docs} + * + * @example + * + * ```tsx + *

console.log(node)} /> + * ``` + */ + type RefCallback = { + bivarianceHack( + instance: T | null, + ): + | void + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES + ]; + }["bivarianceHack"]; + + /** + * A union type of all possible shapes for React refs. + * + * @see {@link RefCallback} + * @see {@link RefObject} + */ + + type Ref = RefCallback | RefObject | null; + /** + * A legacy implementation of refs where you can pass a string to a ref prop. + * + * @see {@link https://react.dev/reference/react/Component#refs React Docs} + * + * @example + * + * ```tsx + *
+ * ``` + */ + // TODO: Remove the string ref special case from `PropsWithRef` once we remove LegacyRef + type LegacyRef = string | Ref; + + /** + * Retrieves the type of the 'ref' prop for a given component type or tag name. + * + * @template C The component type. + * + * @example + * + * ```tsx + * type MyComponentRef = React.ElementRef; + * ``` + * + * @example + * + * ```tsx + * type DivRef = React.ElementRef<'div'>; + * ``` + */ + type ElementRef< + C extends + | ForwardRefExoticComponent + | { new(props: any): Component } + | ((props: any, deprecatedLegacyContext?: any) => ReactNode) + | keyof JSX.IntrinsicElements, + > = + // need to check first if `ref` is a valid prop for ts@3.0 + // otherwise it will infer `{}` instead of `never` + "ref" extends keyof ComponentPropsWithRef + ? NonNullable["ref"]> extends RefAttributes< + infer Instance + >["ref"] ? Instance + : never + : never; + + type ComponentState = any; + + /** + * A value which uniquely identifies a node among items in an array. + * + * @see {@link https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key React Docs} + */ + type Key = string | number | bigint; + + /** + * @internal The props any component can receive. + * You don't have to add this type. All components automatically accept these props. + * ```tsx + * const Component = () =>
; + * + * ``` + * + * WARNING: The implementation of a component will never have access to these attributes. + * The following example would be incorrect usage because {@link Component} would never have access to `key`: + * ```tsx + * const Component = (props: React.Attributes) => props.key; + * ``` + */ + interface Attributes { + key?: Key | null | undefined; + } + /** + * The props any component accepting refs can receive. + * Class components, built-in browser components (e.g. `div`) and forwardRef components can receive refs and automatically accept these props. + * ```tsx + * const Component = forwardRef(() =>
); + * console.log(current)} /> + * ``` + * + * You only need this type if you manually author the types of props that need to be compatible with legacy refs. + * ```tsx + * interface Props extends React.RefAttributes {} + * declare const Component: React.FunctionComponent; + * ``` + * + * Otherwise it's simpler to directly use {@link Ref} since you can safely use the + * props type to describe to props that a consumer can pass to the component + * as well as describing the props the implementation of a component "sees". + * {@link RefAttributes} is generally not safe to describe both consumer and seen props. + * + * ```tsx + * interface Props extends { + * ref?: React.Ref | undefined; + * } + * declare const Component: React.FunctionComponent; + * ``` + * + * WARNING: The implementation of a component will not have access to the same type in versions of React supporting string refs. + * The following example would be incorrect usage because {@link Component} would never have access to a `ref` with type `string` + * ```tsx + * const Component = (props: React.RefAttributes) => props.ref; + * ``` + */ + interface RefAttributes extends Attributes { + /** + * Allows getting a ref to the component instance. + * Once the component unmounts, React will set `ref.current` to `null` + * (or call the ref with `null` if you passed a callback ref). + * + * @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} + */ + ref?: LegacyRef | undefined; + } + + /** + * Represents the built-in attributes available to class components. + */ + interface ClassAttributes extends RefAttributes { + } + + /** + * Represents a JSX element. + * + * Where {@link ReactNode} represents everything that can be rendered, `ReactElement` + * only represents JSX. + * + * @template P The type of the props object + * @template T The type of the component or tag + * + * @example + * + * ```tsx + * const element: ReactElement =
; + * ``` + */ + interface ReactElement< + P = any, + T extends string | JSXElementConstructor = string | JSXElementConstructor, + > { + type: T; + props: P; + key: string | null; + } + + /** + * @deprecated + */ + interface ReactComponentElement< + T extends keyof JSX.IntrinsicElements | JSXElementConstructor, + P = Pick, Exclude, "key" | "ref">>, + > extends ReactElement> {} + + interface FunctionComponentElement

extends ReactElement> { + ref?: ("ref" extends keyof P ? P extends { ref?: infer R | undefined } ? R : never : never) | undefined; + } + + type CElement> = ComponentElement; + interface ComponentElement> extends ReactElement> { + ref?: LegacyRef | undefined; + } + + /** + * @deprecated Use {@link ComponentElement} instead. + */ + type ClassicElement

= CElement>; + + // string fallback for custom web-components + interface DOMElement

| SVGAttributes, T extends Element> + extends ReactElement + { + ref: LegacyRef; + } + + // ReactHTML for ReactHTMLElement + interface ReactHTMLElement extends DetailedReactHTMLElement, T> {} + + interface DetailedReactHTMLElement

, T extends HTMLElement> extends DOMElement { + type: keyof ReactHTML; + } + + // ReactSVG for ReactSVGElement + interface ReactSVGElement extends DOMElement, SVGElement> { + type: keyof ReactSVG; + } + + interface ReactPortal extends ReactElement { + children: ReactNode; + } + + // + // Factories + // ---------------------------------------------------------------------- + + type Factory

= (props?: Attributes & P, ...children: ReactNode[]) => ReactElement

; + + /** + * @deprecated Please use `FunctionComponentFactory` + */ + type SFCFactory

= FunctionComponentFactory

; + + type FunctionComponentFactory

= ( + props?: Attributes & P, + ...children: ReactNode[] + ) => FunctionComponentElement

; + + type ComponentFactory> = ( + props?: ClassAttributes & P, + ...children: ReactNode[] + ) => CElement; + + type CFactory> = ComponentFactory; + type ClassicFactory

= CFactory>; + + type DOMFactory

, T extends Element> = ( + props?: ClassAttributes & P | null, + ...children: ReactNode[] + ) => DOMElement; + + interface HTMLFactory extends DetailedHTMLFactory, T> {} + + interface DetailedHTMLFactory

, T extends HTMLElement> extends DOMFactory { + (props?: ClassAttributes & P | null, ...children: ReactNode[]): DetailedReactHTMLElement; + } + + interface SVGFactory extends DOMFactory, SVGElement> { + ( + props?: ClassAttributes & SVGAttributes | null, + ...children: ReactNode[] + ): ReactSVGElement; + } + + /** + * @deprecated - This type is not relevant when using React. Inline the type instead to make the intent clear. + */ + type ReactText = string | number; + /** + * @deprecated - This type is not relevant when using React. Inline the type instead to make the intent clear. + */ + type ReactChild = ReactElement | string | number; + + /** + * @deprecated Use either `ReactNode[]` if you need an array or `Iterable` if its passed to a host component. + */ + interface ReactNodeArray extends ReadonlyArray {} + /** + * WARNING: Not related to `React.Fragment`. + * @deprecated This type is not relevant when using React. Inline the type instead to make the intent clear. + */ + type ReactFragment = Iterable; + + /** + * Different release channels declare additional types of ReactNode this particular release channel accepts. + * App or library types should never augment this interface. + */ + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_REACT_NODES {} + + /** + * Represents all of the things React can render. + * + * Where {@link ReactElement} only represents JSX, `ReactNode` represents everything that can be rendered. + * + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/react-types/reactnode/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * // Typing children + * type Props = { children: ReactNode } + * + * const Component = ({ children }: Props) =>

{children}
+ * + * hello + * ``` + * + * @example + * + * ```tsx + * // Typing a custom element + * type Props = { customElement: ReactNode } + * + * const Component = ({ customElement }: Props) =>
{customElement}
+ * + * hello
} /> + * ``` + */ + // non-thenables need to be kept in sync with AwaitedReactNode + type ReactNode = + | ReactElement + | string + | number + | Iterable + | ReactPortal + | boolean + | null + | undefined + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_REACT_NODES[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_REACT_NODES + ]; + + // + // Top Level API + // ---------------------------------------------------------------------- + + // DOM Elements + /** @deprecated */ + function createFactory( + type: keyof ReactHTML, + ): HTMLFactory; + /** @deprecated */ + function createFactory( + type: keyof ReactSVG, + ): SVGFactory; + /** @deprecated */ + function createFactory

, T extends Element>( + type: string, + ): DOMFactory; + + // Custom components + /** @deprecated */ + function createFactory

(type: FunctionComponent

): FunctionComponentFactory

; + /** @deprecated */ + function createFactory, C extends ComponentClass

>( + type: ClassType, + ): CFactory; + /** @deprecated */ + function createFactory

(type: ComponentClass

): Factory

; + + // DOM Elements + // TODO: generalize this to everything in `keyof ReactHTML`, not just "input" + function createElement( + type: "input", + props?: InputHTMLAttributes & ClassAttributes | null, + ...children: ReactNode[] + ): DetailedReactHTMLElement, HTMLInputElement>; + function createElement

, T extends HTMLElement>( + type: keyof ReactHTML, + props?: ClassAttributes & P | null, + ...children: ReactNode[] + ): DetailedReactHTMLElement; + function createElement

, T extends SVGElement>( + type: keyof ReactSVG, + props?: ClassAttributes & P | null, + ...children: ReactNode[] + ): ReactSVGElement; + function createElement

, T extends Element>( + type: string, + props?: ClassAttributes & P | null, + ...children: ReactNode[] + ): DOMElement; + + // Custom components + + function createElement

( + type: FunctionComponent

, + props?: Attributes & P | null, + ...children: ReactNode[] + ): FunctionComponentElement

; + function createElement

, C extends ComponentClass

>( + type: ClassType, + props?: ClassAttributes & P | null, + ...children: ReactNode[] + ): CElement; + function createElement

( + type: FunctionComponent

| ComponentClass

| string, + props?: Attributes & P | null, + ...children: ReactNode[] + ): ReactElement

; + + // DOM Elements + // ReactHTMLElement + function cloneElement

, T extends HTMLElement>( + element: DetailedReactHTMLElement, + props?: P, + ...children: ReactNode[] + ): DetailedReactHTMLElement; + // ReactHTMLElement, less specific + function cloneElement

, T extends HTMLElement>( + element: ReactHTMLElement, + props?: P, + ...children: ReactNode[] + ): ReactHTMLElement; + // SVGElement + function cloneElement

, T extends SVGElement>( + element: ReactSVGElement, + props?: P, + ...children: ReactNode[] + ): ReactSVGElement; + // DOM Element (has to be the last, because type checking stops at first overload that fits) + function cloneElement

, T extends Element>( + element: DOMElement, + props?: DOMAttributes & P, + ...children: ReactNode[] + ): DOMElement; + + // Custom components + function cloneElement

( + element: FunctionComponentElement

, + props?: Partial

& Attributes, + ...children: ReactNode[] + ): FunctionComponentElement

; + function cloneElement>( + element: CElement, + props?: Partial

& ClassAttributes, + ...children: ReactNode[] + ): CElement; + function cloneElement

( + element: ReactElement

, + props?: Partial

& Attributes, + ...children: ReactNode[] + ): ReactElement

; + + /** + * Describes the props accepted by a Context {@link Provider}. + * + * @template T The type of the value the context provides. + */ + interface ProviderProps { + value: T; + children?: ReactNode | undefined; + } + + /** + * Describes the props accepted by a Context {@link Consumer}. + * + * @template T The type of the value the context provides. + */ + interface ConsumerProps { + children: (value: T) => ReactNode; + } + + /** + * An object masquerading as a component. These are created by functions + * like {@link forwardRef}, {@link memo}, and {@link createContext}. + * + * In order to make TypeScript work, we pretend that they are normal + * components. + * + * But they are, in fact, not callable - instead, they are objects which + * are treated specially by the renderer. + * + * @template P The props the component accepts. + */ + interface ExoticComponent

{ + (props: P): ReactNode; + readonly $$typeof: symbol; + } + + /** + * An {@link ExoticComponent} with a `displayName` property applied to it. + * + * @template P The props the component accepts. + */ + interface NamedExoticComponent

extends ExoticComponent

{ + /** + * Used in debugging messages. You might want to set it + * explicitly if you want to display a different name for + * debugging purposes. + * + * @see {@link https://legacy.reactjs.org/docs/react-component.html#displayname Legacy React Docs} + */ + displayName?: string | undefined; + } + + /** + * An {@link ExoticComponent} with a `propTypes` property applied to it. + * + * @template P The props the component accepts. + */ + interface ProviderExoticComponent

extends ExoticComponent

{ + propTypes?: WeakValidationMap

| undefined; + } + + /** + * Used to retrieve the type of a context object from a {@link Context}. + * + * @template C The context object. + * + * @example + * + * ```tsx + * import { createContext } from 'react'; + * + * const MyContext = createContext({ foo: 'bar' }); + * + * type ContextType = ContextType; + * // ContextType = { foo: string } + * ``` + */ + type ContextType> = C extends Context ? T : never; + + /** + * Wraps your components to specify the value of this context for all components inside. + * + * @see {@link https://react.dev/reference/react/createContext#provider React Docs} + * + * @example + * + * ```tsx + * import { createContext } from 'react'; + * + * const ThemeContext = createContext('light'); + * + * function App() { + * return ( + * + * + * + * ); + * } + * ``` + */ + type Provider = ProviderExoticComponent>; + + /** + * The old way to read context, before {@link useContext} existed. + * + * @see {@link https://react.dev/reference/react/createContext#consumer React Docs} + * + * @example + * + * ```tsx + * import { UserContext } from './user-context'; + * + * function Avatar() { + * return ( + * + * {user => {user.name}} + * + * ); + * } + * ``` + */ + type Consumer = ExoticComponent>; + + /** + * Context lets components pass information deep down without explicitly + * passing props. + * + * Created from {@link createContext} + * + * @see {@link https://react.dev/learn/passing-data-deeply-with-context React Docs} + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/context/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * import { createContext } from 'react'; + * + * const ThemeContext = createContext('light'); + * ``` + */ + interface Context { + Provider: Provider; + Consumer: Consumer; + /** + * Used in debugging messages. You might want to set it + * explicitly if you want to display a different name for + * debugging purposes. + * + * @see {@link https://legacy.reactjs.org/docs/react-component.html#displayname Legacy React Docs} + */ + displayName?: string | undefined; + } + + /** + * Lets you create a {@link Context} that components can provide or read. + * + * @param defaultValue The value you want the context to have when there is no matching + * {@link Provider} in the tree above the component reading the context. This is meant + * as a "last resort" fallback. + * + * @see {@link https://react.dev/reference/react/createContext#reference React Docs} + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/context/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * import { createContext } from 'react'; + * + * const ThemeContext = createContext('light'); + * ``` + */ + function createContext( + // If you thought this should be optional, see + // https://github.com/DefinitelyTyped/DefinitelyTyped/pull/24509#issuecomment-382213106 + defaultValue: T, + ): Context; + + function isValidElement

(object: {} | null | undefined): object is ReactElement

; + + /** + * Maintainer's note: Sync with {@link ReactChildren} until {@link ReactChildren} is removed. + */ + const Children: { + map( + children: C | readonly C[], + fn: (child: C, index: number) => T, + ): C extends null | undefined ? C : Array>; + forEach(children: C | readonly C[], fn: (child: C, index: number) => void): void; + count(children: any): number; + only(children: C): C extends any[] ? never : C; + toArray(children: ReactNode | ReactNode[]): Array>; + }; + /** + * Lets you group elements without a wrapper node. + * + * @see {@link https://react.dev/reference/react/Fragment React Docs} + * + * @example + * + * ```tsx + * import { Fragment } from 'react'; + * + * + * Hello + * World + * + * ``` + * + * @example + * + * ```tsx + * // Using the <> shorthand syntax: + * + * <> + * Hello + * World + * + * ``` + */ + const Fragment: ExoticComponent<{ children?: ReactNode | undefined }>; + + /** + * Lets you find common bugs in your components early during development. + * + * @see {@link https://react.dev/reference/react/StrictMode React Docs} + * + * @example + * + * ```tsx + * import { StrictMode } from 'react'; + * + * + * + * + * ``` + */ + const StrictMode: ExoticComponent<{ children?: ReactNode | undefined }>; + + /** + * The props accepted by {@link Suspense}. + * + * @see {@link https://react.dev/reference/react/Suspense React Docs} + */ + interface SuspenseProps { + children?: ReactNode | undefined; + + /** A fallback react tree to show when a Suspense child (like React.lazy) suspends */ + fallback?: ReactNode; + } + + /** + * Lets you display a fallback until its children have finished loading. + * + * @see {@link https://react.dev/reference/react/Suspense React Docs} + * + * @example + * + * ```tsx + * import { Suspense } from 'react'; + * + * }> + * + * + * ``` + */ + const Suspense: ExoticComponent; + const version: string; + + /** + * The callback passed to {@link ProfilerProps.onRender}. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + type ProfilerOnRenderCallback = ( + /** + * The string id prop of the {@link Profiler} tree that has just committed. This lets + * you identify which part of the tree was committed if you are using multiple + * profilers. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + id: string, + /** + * This lets you know whether the tree has just been mounted for the first time + * or re-rendered due to a change in props, state, or hooks. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + phase: "mount" | "update" | "nested-update", + /** + * The number of milliseconds spent rendering the {@link Profiler} and its descendants + * for the current update. This indicates how well the subtree makes use of + * memoization (e.g. {@link memo} and {@link useMemo}). Ideally this value should decrease + * significantly after the initial mount as many of the descendants will only need to + * re-render if their specific props change. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + actualDuration: number, + /** + * The number of milliseconds estimating how much time it would take to re-render the entire + * {@link Profiler} subtree without any optimizations. It is calculated by summing up the most + * recent render durations of each component in the tree. This value estimates a worst-case + * cost of rendering (e.g. the initial mount or a tree with no memoization). Compare + * {@link actualDuration} against it to see if memoization is working. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + baseDuration: number, + /** + * A numeric timestamp for when React began rendering the current update. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + startTime: number, + /** + * A numeric timestamp for when React committed the current update. This value is shared + * between all profilers in a commit, enabling them to be grouped if desirable. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + commitTime: number, + ) => void; + + /** + * The props accepted by {@link Profiler}. + * + * @see {@link https://react.dev/reference/react/Profiler React Docs} + */ + interface ProfilerProps { + children?: ReactNode | undefined; + id: string; + onRender: ProfilerOnRenderCallback; + } + + /** + * Lets you measure rendering performance of a React tree programmatically. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + * + * @example + * + * ```tsx + * + * + * + * ``` + */ + const Profiler: ExoticComponent; + + // + // Component API + // ---------------------------------------------------------------------- + + type ReactInstance = Component | Element; + + // Base component for plain JS classes + interface Component

extends ComponentLifecycle {} + class Component { + /** + * If set, `this.context` will be set at runtime to the current value of the given Context. + * + * @example + * + * ```ts + * type MyContext = number + * const Ctx = React.createContext(0) + * + * class Foo extends React.Component { + * static contextType = Ctx + * context!: React.ContextType + * render () { + * return <>My context's value: {this.context}; + * } + * } + * ``` + * + * @see {@link https://react.dev/reference/react/Component#static-contexttype} + */ + static contextType?: Context | undefined; + + /** + * If using the new style context, re-declare this in your class to be the + * `React.ContextType` of your `static contextType`. + * Should be used with type annotation or static contextType. + * + * @example + * ```ts + * static contextType = MyContext + * // For TS pre-3.7: + * context!: React.ContextType + * // For TS 3.7 and above: + * declare context: React.ContextType + * ``` + * + * @see {@link https://react.dev/reference/react/Component#context React Docs} + */ + context: unknown; + + constructor(props: P); + /** + * @deprecated + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html React Docs} + */ + constructor(props: P, context: any); + + // We MUST keep setState() as a unified signature because it allows proper checking of the method return type. + // See: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18365#issuecomment-351013257 + // Also, the ` | S` allows intellisense to not be dumbisense + setState( + state: ((prevState: Readonly, props: Readonly

) => Pick | S | null) | (Pick | S | null), + callback?: () => void, + ): void; + + forceUpdate(callback?: () => void): void; + render(): ReactNode; + + readonly props: Readonly

; + state: Readonly; + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/refs-and-the-dom.html#legacy-api-string-refs Legacy React Docs} + */ + refs: { + [key: string]: ReactInstance; + }; + } + + class PureComponent

extends Component {} + + /** + * @deprecated Use `ClassicComponent` from `create-react-class` + * + * @see {@link https://legacy.reactjs.org/docs/react-without-es6.html Legacy React Docs} + * @see {@link https://www.npmjs.com/package/create-react-class `create-react-class` on npm} + */ + interface ClassicComponent

extends Component { + replaceState(nextState: S, callback?: () => void): void; + isMounted(): boolean; + getInitialState?(): S; + } + + interface ChildContextProvider { + getChildContext(): CC; + } + + // + // Class Interfaces + // ---------------------------------------------------------------------- + + /** + * Represents the type of a function component. Can optionally + * receive a type argument that represents the props the component + * receives. + * + * @template P The props the component accepts. + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/function_components React TypeScript Cheatsheet} + * @alias for {@link FunctionComponent} + * + * @example + * + * ```tsx + * // With props: + * type Props = { name: string } + * + * const MyComponent: FC = (props) => { + * return

{props.name}
+ * } + * ``` + * + * @example + * + * ```tsx + * // Without props: + * const MyComponentWithoutProps: FC = () => { + * return
MyComponentWithoutProps
+ * } + * ``` + */ + type FC

= FunctionComponent

; + + /** + * Represents the type of a function component. Can optionally + * receive a type argument that represents the props the component + * accepts. + * + * @template P The props the component accepts. + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/function_components React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * // With props: + * type Props = { name: string } + * + * const MyComponent: FunctionComponent = (props) => { + * return

{props.name}
+ * } + * ``` + * + * @example + * + * ```tsx + * // Without props: + * const MyComponentWithoutProps: FunctionComponent = () => { + * return
MyComponentWithoutProps
+ * } + * ``` + */ + interface FunctionComponent

{ + ( + props: P, + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods React Docs} + */ + deprecatedLegacyContext?: any, + ): ReactNode; + /** + * Used to declare the types of the props accepted by the + * component. These types will be checked during rendering + * and in development only. + * + * We recommend using TypeScript instead of checking prop + * types at runtime. + * + * @see {@link https://react.dev/reference/react/Component#static-proptypes React Docs} + */ + propTypes?: WeakValidationMap

| undefined; + /** + * @deprecated + * + * Lets you specify which legacy context is consumed by + * this component. + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html Legacy React Docs} + */ + contextTypes?: ValidationMap | undefined; + /** + * Used to define default values for the props accepted by + * the component. + * + * @see {@link https://react.dev/reference/react/Component#static-defaultprops React Docs} + * + * @example + * + * ```tsx + * type Props = { name?: string } + * + * const MyComponent: FC = (props) => { + * return

{props.name}
+ * } + * + * MyComponent.defaultProps = { + * name: 'John Doe' + * } + * ``` + * + * @deprecated Use {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#default_value|default values for destructuring assignments instead}. + */ + defaultProps?: Partial

| undefined; + /** + * Used in debugging messages. You might want to set it + * explicitly if you want to display a different name for + * debugging purposes. + * + * @see {@link https://legacy.reactjs.org/docs/react-component.html#displayname Legacy React Docs} + * + * @example + * + * ```tsx + * + * const MyComponent: FC = () => { + * return

Hello!
+ * } + * + * MyComponent.displayName = 'MyAwesomeComponent' + * ``` + */ + displayName?: string | undefined; + } + + /** + * @deprecated - Equivalent to {@link React.FunctionComponent}. + * + * @see {@link React.FunctionComponent} + * @alias {@link VoidFunctionComponent} + */ + type VFC

= VoidFunctionComponent

; + + /** + * @deprecated - Equivalent to {@link React.FunctionComponent}. + * + * @see {@link React.FunctionComponent} + */ + interface VoidFunctionComponent

{ + ( + props: P, + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods React Docs} + */ + deprecatedLegacyContext?: any, + ): ReactNode; + propTypes?: WeakValidationMap

| undefined; + contextTypes?: ValidationMap | undefined; + /** + * @deprecated Use {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#default_value|default values for destructuring assignments instead}. + */ + defaultProps?: Partial

| undefined; + displayName?: string | undefined; + } + + /** + * The type of the ref received by a {@link ForwardRefRenderFunction}. + * + * @see {@link ForwardRefRenderFunction} + */ + type ForwardedRef = ((instance: T | null) => void) | MutableRefObject | null; + + /** + * The type of the function passed to {@link forwardRef}. This is considered different + * to a normal {@link FunctionComponent} because it receives an additional argument, + * + * @param props Props passed to the component, if any. + * @param ref A ref forwarded to the component of type {@link ForwardedRef}. + * + * @template T The type of the forwarded ref. + * @template P The type of the props the component accepts. + * + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/forward_and_create_ref/ React TypeScript Cheatsheet} + * @see {@link forwardRef} + */ + interface ForwardRefRenderFunction { + (props: P, ref: ForwardedRef): ReactNode; + /** + * Used in debugging messages. You might want to set it + * explicitly if you want to display a different name for + * debugging purposes. + * + * Will show `ForwardRef(${Component.displayName || Component.name})` + * in devtools by default, but can be given its own specific name. + * + * @see {@link https://legacy.reactjs.org/docs/react-component.html#displayname Legacy React Docs} + */ + displayName?: string | undefined; + /** + * defaultProps are not supported on render functions passed to forwardRef. + * + * @see {@link https://github.com/microsoft/TypeScript/issues/36826 linked GitHub issue} for context + * @see {@link https://react.dev/reference/react/Component#static-defaultprops React Docs} + */ + defaultProps?: never | undefined; + /** + * propTypes are not supported on render functions passed to forwardRef. + * + * @see {@link https://github.com/microsoft/TypeScript/issues/36826 linked GitHub issue} for context + * @see {@link https://react.dev/reference/react/Component#static-proptypes React Docs} + */ + propTypes?: never | undefined; + } + + /** + * Represents a component class in React. + * + * @template P The props the component accepts. + * @template S The internal state of the component. + */ + interface ComponentClass

extends StaticLifecycle { + new( + props: P, + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods React Docs} + */ + deprecatedLegacyContext?: any, + ): Component; + /** + * Used to declare the types of the props accepted by the + * component. These types will be checked during rendering + * and in development only. + * + * We recommend using TypeScript instead of checking prop + * types at runtime. + * + * @see {@link https://react.dev/reference/react/Component#static-proptypes React Docs} + */ + propTypes?: WeakValidationMap

| undefined; + contextType?: Context | undefined; + /** + * @deprecated use {@link ComponentClass.contextType} instead + * + * Lets you specify which legacy context is consumed by + * this component. + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html Legacy React Docs} + */ + contextTypes?: ValidationMap | undefined; + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#how-to-use-context Legacy React Docs} + */ + childContextTypes?: ValidationMap | undefined; + /** + * Used to define default values for the props accepted by + * the component. + * + * @see {@link https://react.dev/reference/react/Component#static-defaultprops React Docs} + */ + defaultProps?: Partial

| undefined; + /** + * Used in debugging messages. You might want to set it + * explicitly if you want to display a different name for + * debugging purposes. + * + * @see {@link https://legacy.reactjs.org/docs/react-component.html#displayname Legacy React Docs} + */ + displayName?: string | undefined; + } + + /** + * @deprecated Use `ClassicComponentClass` from `create-react-class` + * + * @see {@link https://legacy.reactjs.org/docs/react-without-es6.html Legacy React Docs} + * @see {@link https://www.npmjs.com/package/create-react-class `create-react-class` on npm} + */ + interface ClassicComponentClass

extends ComponentClass

{ + new(props: P, deprecatedLegacyContext?: any): ClassicComponent; + getDefaultProps?(): P; + } + + /** + * Used in {@link createElement} and {@link createFactory} to represent + * a class. + * + * An intersection type is used to infer multiple type parameters from + * a single argument, which is useful for many top-level API defs. + * See {@link https://github.com/Microsoft/TypeScript/issues/7234 this GitHub issue} + * for more info. + */ + type ClassType, C extends ComponentClass

> = + & C + & (new(props: P, deprecatedLegacyContext?: any) => T); + + // + // Component Specs and Lifecycle + // ---------------------------------------------------------------------- + + // This should actually be something like `Lifecycle | DeprecatedLifecycle`, + // as React will _not_ call the deprecated lifecycle methods if any of the new lifecycle + // methods are present. + interface ComponentLifecycle extends NewLifecycle, DeprecatedLifecycle { + /** + * Called immediately after a component is mounted. Setting state here will trigger re-rendering. + */ + componentDidMount?(): void; + /** + * Called to determine whether the change in props and state should trigger a re-render. + * + * `Component` always returns true. + * `PureComponent` implements a shallow comparison on props and state and returns true if any + * props or states have changed. + * + * If false is returned, {@link Component.render}, `componentWillUpdate` + * and `componentDidUpdate` will not be called. + */ + shouldComponentUpdate?(nextProps: Readonly

, nextState: Readonly, nextContext: any): boolean; + /** + * Called immediately before a component is destroyed. Perform any necessary cleanup in this method, such as + * cancelled network requests, or cleaning up any DOM elements created in `componentDidMount`. + */ + componentWillUnmount?(): void; + /** + * Catches exceptions generated in descendant components. Unhandled exceptions will cause + * the entire component tree to unmount. + */ + componentDidCatch?(error: Error, errorInfo: ErrorInfo): void; + } + + // Unfortunately, we have no way of declaring that the component constructor must implement this + interface StaticLifecycle { + getDerivedStateFromProps?: GetDerivedStateFromProps | undefined; + getDerivedStateFromError?: GetDerivedStateFromError | undefined; + } + + type GetDerivedStateFromProps = + /** + * Returns an update to a component's state based on its new props and old state. + * + * Note: its presence prevents any of the deprecated lifecycle methods from being invoked + */ + (nextProps: Readonly

, prevState: S) => Partial | null; + + type GetDerivedStateFromError = + /** + * This lifecycle is invoked after an error has been thrown by a descendant component. + * It receives the error that was thrown as a parameter and should return a value to update state. + * + * Note: its presence prevents any of the deprecated lifecycle methods from being invoked + */ + (error: any) => Partial | null; + + // This should be "infer SS" but can't use it yet + interface NewLifecycle { + /** + * Runs before React applies the result of {@link Component.render render} to the document, and + * returns an object to be given to {@link componentDidUpdate}. Useful for saving + * things such as scroll position before {@link Component.render render} causes changes to it. + * + * Note: the presence of this method prevents any of the deprecated + * lifecycle events from running. + */ + getSnapshotBeforeUpdate?(prevProps: Readonly

, prevState: Readonly): SS | null; + /** + * Called immediately after updating occurs. Not called for the initial render. + * + * The snapshot is only present if {@link getSnapshotBeforeUpdate} is present and returns non-null. + */ + componentDidUpdate?(prevProps: Readonly

, prevState: Readonly, snapshot?: SS): void; + } + + interface DeprecatedLifecycle { + /** + * Called immediately before mounting occurs, and before {@link Component.render}. + * Avoid introducing any side-effects or subscriptions in this method. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use {@link ComponentLifecycle.componentDidMount componentDidMount} or the constructor instead; will stop working in React 17 + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#initializing-state} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + componentWillMount?(): void; + /** + * Called immediately before mounting occurs, and before {@link Component.render}. + * Avoid introducing any side-effects or subscriptions in this method. + * + * This method will not stop working in React 17. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use {@link ComponentLifecycle.componentDidMount componentDidMount} or the constructor instead + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#initializing-state} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + UNSAFE_componentWillMount?(): void; + /** + * Called when the component may be receiving new props. + * React may call this even if props have not changed, so be sure to compare new and existing + * props if you only want to handle changes. + * + * Calling {@link Component.setState} generally does not trigger this method. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use static {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} instead; will stop working in React 17 + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#updating-state-based-on-props} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + componentWillReceiveProps?(nextProps: Readonly

, nextContext: any): void; + /** + * Called when the component may be receiving new props. + * React may call this even if props have not changed, so be sure to compare new and existing + * props if you only want to handle changes. + * + * Calling {@link Component.setState} generally does not trigger this method. + * + * This method will not stop working in React 17. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use static {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} instead + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#updating-state-based-on-props} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + UNSAFE_componentWillReceiveProps?(nextProps: Readonly

, nextContext: any): void; + /** + * Called immediately before rendering when new props or state is received. Not called for the initial render. + * + * Note: You cannot call {@link Component.setState} here. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use getSnapshotBeforeUpdate instead; will stop working in React 17 + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#reading-dom-properties-before-an-update} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + componentWillUpdate?(nextProps: Readonly

, nextState: Readonly, nextContext: any): void; + /** + * Called immediately before rendering when new props or state is received. Not called for the initial render. + * + * Note: You cannot call {@link Component.setState} here. + * + * This method will not stop working in React 17. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use getSnapshotBeforeUpdate instead + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#reading-dom-properties-before-an-update} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + UNSAFE_componentWillUpdate?(nextProps: Readonly

, nextState: Readonly, nextContext: any): void; + } + + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/blog/2016/07/13/mixins-considered-harmful.html Mixins Considered Harmful} + */ + interface Mixin extends ComponentLifecycle { + mixins?: Array> | undefined; + statics?: { + [key: string]: any; + } | undefined; + + displayName?: string | undefined; + propTypes?: ValidationMap | undefined; + contextTypes?: ValidationMap | undefined; + childContextTypes?: ValidationMap | undefined; + + getDefaultProps?(): P; + getInitialState?(): S; + } + + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/blog/2016/07/13/mixins-considered-harmful.html Mixins Considered Harmful} + */ + interface ComponentSpec extends Mixin { + render(): ReactNode; + + [propertyName: string]: any; + } + + function createRef(): RefObject; + + /** + * The type of the component returned from {@link forwardRef}. + * + * @template P The props the component accepts, if any. + * + * @see {@link ExoticComponent} + */ + interface ForwardRefExoticComponent

extends NamedExoticComponent

{ + /** + * @deprecated Use {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#default_value|default values for destructuring assignments instead}. + */ + defaultProps?: Partial

| undefined; + propTypes?: WeakValidationMap

| undefined; + } + + /** + * Lets your component expose a DOM node to a parent component + * using a ref. + * + * @see {@link https://react.dev/reference/react/forwardRef React Docs} + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/forward_and_create_ref/ React TypeScript Cheatsheet} + * + * @param render See the {@link ForwardRefRenderFunction}. + * + * @template T The type of the DOM node. + * @template P The props the component accepts, if any. + * + * @example + * + * ```tsx + * interface Props { + * children?: ReactNode; + * type: "submit" | "button"; + * } + * + * export const FancyButton = forwardRef((props, ref) => ( + * + * )); + * ``` + */ + function forwardRef( + render: ForwardRefRenderFunction, + ): ForwardRefExoticComponent & RefAttributes>; + + /** + * Omits the 'ref' attribute from the given props object. + * + * @template P The props object type. + */ + type PropsWithoutRef

= + // Omit would not be sufficient for this. We'd like to avoid unnecessary mapping and need a distributive conditional to support unions. + // see: https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types + // https://github.com/Microsoft/TypeScript/issues/28339 + P extends any ? ("ref" extends keyof P ? Omit : P) : P; + /** Ensures that the props do not include string ref, which cannot be forwarded */ + type PropsWithRef

= + // Note: String refs can be forwarded. We can't fix this bug without breaking a bunch of libraries now though. + // Just "P extends { ref?: infer R }" looks sufficient, but R will infer as {} if P is {}. + "ref" extends keyof P + ? P extends { ref?: infer R | undefined } + ? string extends R ? PropsWithoutRef

& { ref?: Exclude | undefined } + : P + : P + : P; + + type PropsWithChildren

= P & { children?: ReactNode | undefined }; + + /** + * Used to retrieve the props a component accepts. Can either be passed a string, + * indicating a DOM element (e.g. 'div', 'span', etc.) or the type of a React + * component. + * + * It's usually better to use {@link ComponentPropsWithRef} or {@link ComponentPropsWithoutRef} + * instead of this type, as they let you be explicit about whether or not to include + * the `ref` prop. + * + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/react-types/componentprops/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * // Retrieves the props an 'input' element accepts + * type InputProps = React.ComponentProps<'input'>; + * ``` + * + * @example + * + * ```tsx + * const MyComponent = (props: { foo: number, bar: string }) =>

; + * + * // Retrieves the props 'MyComponent' accepts + * type MyComponentProps = React.ComponentProps; + * ``` + */ + type ComponentProps> = T extends + JSXElementConstructor ? P + : T extends keyof JSX.IntrinsicElements ? JSX.IntrinsicElements[T] + : {}; + + /** + * Used to retrieve the props a component accepts with its ref. Can either be + * passed a string, indicating a DOM element (e.g. 'div', 'span', etc.) or the + * type of a React component. + * + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/react-types/componentprops/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * // Retrieves the props an 'input' element accepts + * type InputProps = React.ComponentPropsWithRef<'input'>; + * ``` + * + * @example + * + * ```tsx + * const MyComponent = (props: { foo: number, bar: string }) =>
; + * + * // Retrieves the props 'MyComponent' accepts + * type MyComponentPropsWithRef = React.ComponentPropsWithRef; + * ``` + */ + type ComponentPropsWithRef = T extends (new(props: infer P) => Component) + ? PropsWithoutRef

& RefAttributes> + : PropsWithRef>; + /** + * Used to retrieve the props a custom component accepts with its ref. + * + * Unlike {@link ComponentPropsWithRef}, this only works with custom + * components, i.e. components you define yourself. This is to improve + * type-checking performance. + * + * @example + * + * ```tsx + * const MyComponent = (props: { foo: number, bar: string }) =>

; + * + * // Retrieves the props 'MyComponent' accepts + * type MyComponentPropsWithRef = React.CustomComponentPropsWithRef; + * ``` + */ + type CustomComponentPropsWithRef = T extends (new(props: infer P) => Component) + ? (PropsWithoutRef

& RefAttributes>) + : T extends ((props: infer P, legacyContext?: any) => ReactNode) ? PropsWithRef

+ : never; + + /** + * Used to retrieve the props a component accepts without its ref. Can either be + * passed a string, indicating a DOM element (e.g. 'div', 'span', etc.) or the + * type of a React component. + * + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/react-types/componentprops/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * // Retrieves the props an 'input' element accepts + * type InputProps = React.ComponentPropsWithoutRef<'input'>; + * ``` + * + * @example + * + * ```tsx + * const MyComponent = (props: { foo: number, bar: string }) =>

; + * + * // Retrieves the props 'MyComponent' accepts + * type MyComponentPropsWithoutRef = React.ComponentPropsWithoutRef; + * ``` + */ + type ComponentPropsWithoutRef = PropsWithoutRef>; + + type ComponentRef = T extends NamedExoticComponent< + ComponentPropsWithoutRef & RefAttributes + > ? Method + : ComponentPropsWithRef extends RefAttributes ? Method + : never; + + // will show `Memo(${Component.displayName || Component.name})` in devtools by default, + // but can be given its own specific name + type MemoExoticComponent> = NamedExoticComponent> & { + readonly type: T; + }; + + /** + * Lets you skip re-rendering a component when its props are unchanged. + * + * @see {@link https://react.dev/reference/react/memo React Docs} + * + * @param Component The component to memoize. + * @param propsAreEqual A function that will be used to determine if the props have changed. + * + * @example + * + * ```tsx + * import { memo } from 'react'; + * + * const SomeComponent = memo(function SomeComponent(props: { foo: string }) { + * // ... + * }); + * ``` + */ + function memo

( + Component: FunctionComponent

, + propsAreEqual?: (prevProps: Readonly

, nextProps: Readonly

) => boolean, + ): NamedExoticComponent

; + function memo>( + Component: T, + propsAreEqual?: (prevProps: Readonly>, nextProps: Readonly>) => boolean, + ): MemoExoticComponent; + + interface LazyExoticComponent> + extends ExoticComponent> + { + readonly _result: T; + } + + /** + * Lets you defer loading a component’s code until it is rendered for the first time. + * + * @see {@link https://react.dev/reference/react/lazy React Docs} + * + * @param load A function that returns a `Promise` or another thenable (a `Promise`-like object with a + * then method). React will not call `load` until the first time you attempt to render the returned + * component. After React first calls load, it will wait for it to resolve, and then render the + * resolved value’s `.default` as a React component. Both the returned `Promise` and the `Promise`’s + * resolved value will be cached, so React will not call load more than once. If the `Promise` rejects, + * React will throw the rejection reason for the nearest Error Boundary to handle. + * + * @example + * + * ```tsx + * import { lazy } from 'react'; + * + * const MarkdownPreview = lazy(() => import('./MarkdownPreview.js')); + * ``` + */ + function lazy>( + load: () => Promise<{ default: T }>, + ): LazyExoticComponent; + + // + // React Hooks + // ---------------------------------------------------------------------- + + /** + * The instruction passed to a {@link Dispatch} function in {@link useState} + * to tell React what the next value of the {@link useState} should be. + * + * Often found wrapped in {@link Dispatch}. + * + * @template S The type of the state. + * + * @example + * + * ```tsx + * // This return type correctly represents the type of + * // `setCount` in the example below. + * const useCustomState = (): Dispatch> => { + * const [count, setCount] = useState(0); + * + * return setCount; + * } + * ``` + */ + type SetStateAction = S | ((prevState: S) => S); + + /** + * A function that can be used to update the state of a {@link useState} + * or {@link useReducer} hook. + */ + type Dispatch = (value: A) => void; + /** + * A {@link Dispatch} function can sometimes be called without any arguments. + */ + type DispatchWithoutAction = () => void; + // Unlike redux, the actions _can_ be anything + type Reducer = (prevState: S, action: A) => S; + // If useReducer accepts a reducer without action, dispatch may be called without any parameters. + type ReducerWithoutAction = (prevState: S) => S; + // types used to try and prevent the compiler from reducing S + // to a supertype common with the second argument to useReducer() + type ReducerState> = R extends Reducer ? S : never; + type ReducerAction> = R extends Reducer ? A : never; + // The identity check is done with the SameValue algorithm (Object.is), which is stricter than === + type ReducerStateWithoutAction> = R extends ReducerWithoutAction ? S + : never; + type DependencyList = readonly unknown[]; + + // NOTE: callbacks are _only_ allowed to return either void, or a destructor. + type EffectCallback = () => void | Destructor; + + interface MutableRefObject { + current: T; + } + + // This will technically work if you give a Consumer or Provider but it's deprecated and warns + /** + * Accepts a context object (the value returned from `React.createContext`) and returns the current + * context value, as given by the nearest context provider for the given context. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useContext} + */ + function useContext(context: Context /*, (not public API) observedBits?: number|boolean */): T; + /** + * Returns a stateful value, and a function to update it. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useState} + */ + function useState(initialState: S | (() => S)): [S, Dispatch>]; + // convenience overload when first argument is omitted + /** + * Returns a stateful value, and a function to update it. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useState} + */ + function useState(): [S | undefined, Dispatch>]; + /** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useReducer} + */ + // overload where dispatch could accept 0 arguments. + function useReducer, I>( + reducer: R, + initializerArg: I, + initializer: (arg: I) => ReducerStateWithoutAction, + ): [ReducerStateWithoutAction, DispatchWithoutAction]; + /** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useReducer} + */ + // overload where dispatch could accept 0 arguments. + function useReducer>( + reducer: R, + initializerArg: ReducerStateWithoutAction, + initializer?: undefined, + ): [ReducerStateWithoutAction, DispatchWithoutAction]; + /** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useReducer} + */ + // overload where "I" may be a subset of ReducerState; used to provide autocompletion. + // If "I" matches ReducerState exactly then the last overload will allow initializer to be omitted. + // the last overload effectively behaves as if the identity function (x => x) is the initializer. + function useReducer, I>( + reducer: R, + initializerArg: I & ReducerState, + initializer: (arg: I & ReducerState) => ReducerState, + ): [ReducerState, Dispatch>]; + /** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useReducer} + */ + // overload for free "I"; all goes as long as initializer converts it into "ReducerState". + function useReducer, I>( + reducer: R, + initializerArg: I, + initializer: (arg: I) => ReducerState, + ): [ReducerState, Dispatch>]; + /** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useReducer} + */ + + // I'm not sure if I keep this 2-ary or if I make it (2,3)-ary; it's currently (2,3)-ary. + // The Flow types do have an overload for 3-ary invocation with undefined initializer. + + // NOTE: without the ReducerState indirection, TypeScript would reduce S to be the most common + // supertype between the reducer's return type and the initialState (or the initializer's return type), + // which would prevent autocompletion from ever working. + + // TODO: double-check if this weird overload logic is necessary. It is possible it's either a bug + // in older versions, or a regression in newer versions of the typescript completion service. + function useReducer>( + reducer: R, + initialState: ReducerState, + initializer?: undefined, + ): [ReducerState, Dispatch>]; + /** + * `useRef` returns a mutable ref object whose `.current` property is initialized to the passed argument + * (`initialValue`). The returned object will persist for the full lifetime of the component. + * + * Note that `useRef()` is useful for more than the `ref` attribute. It’s handy for keeping any mutable + * value around similar to how you’d use instance fields in classes. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useRef} + */ + function useRef(initialValue: T): MutableRefObject; + // convenience overload for refs given as a ref prop as they typically start with a null value + /** + * `useRef` returns a mutable ref object whose `.current` property is initialized to the passed argument + * (`initialValue`). The returned object will persist for the full lifetime of the component. + * + * Note that `useRef()` is useful for more than the `ref` attribute. It’s handy for keeping any mutable + * value around similar to how you’d use instance fields in classes. + * + * Usage note: if you need the result of useRef to be directly mutable, include `| null` in the type + * of the generic argument. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useRef} + */ + function useRef(initialValue: T | null): RefObject; + // convenience overload for potentially undefined initialValue / call with 0 arguments + // has a default to stop it from defaulting to {} instead + /** + * `useRef` returns a mutable ref object whose `.current` property is initialized to the passed argument + * (`initialValue`). The returned object will persist for the full lifetime of the component. + * + * Note that `useRef()` is useful for more than the `ref` attribute. It’s handy for keeping any mutable + * value around similar to how you’d use instance fields in classes. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useRef} + */ + function useRef(): MutableRefObject; + /** + * The signature is identical to `useEffect`, but it fires synchronously after all DOM mutations. + * Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside + * `useLayoutEffect` will be flushed synchronously, before the browser has a chance to paint. + * + * Prefer the standard `useEffect` when possible to avoid blocking visual updates. + * + * If you’re migrating code from a class component, `useLayoutEffect` fires in the same phase as + * `componentDidMount` and `componentDidUpdate`. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useLayoutEffect} + */ + function useLayoutEffect(effect: EffectCallback, deps?: DependencyList): void; + /** + * Accepts a function that contains imperative, possibly effectful code. + * + * @param effect Imperative function that can return a cleanup function + * @param deps If present, effect will only activate if the values in the list change. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useEffect} + */ + function useEffect(effect: EffectCallback, deps?: DependencyList): void; + // NOTE: this does not accept strings, but this will have to be fixed by removing strings from type Ref + /** + * `useImperativeHandle` customizes the instance value that is exposed to parent components when using + * `ref`. As always, imperative code using refs should be avoided in most cases. + * + * `useImperativeHandle` should be used with `React.forwardRef`. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useImperativeHandle} + */ + function useImperativeHandle(ref: Ref | undefined, init: () => R, deps?: DependencyList): void; + // I made 'inputs' required here and in useMemo as there's no point to memoizing without the memoization key + // useCallback(X) is identical to just using X, useMemo(() => Y) is identical to just using Y. + /** + * `useCallback` will return a memoized version of the callback that only changes if one of the `inputs` + * has changed. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useCallback} + */ + // A specific function type would not trigger implicit any. + // See https://github.com/DefinitelyTyped/DefinitelyTyped/issues/52873#issuecomment-845806435 for a comparison between `Function` and more specific types. + // eslint-disable-next-line @typescript-eslint/ban-types + function useCallback(callback: T, deps: DependencyList): T; + /** + * `useMemo` will only recompute the memoized value when one of the `deps` has changed. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useMemo} + */ + // allow undefined, but don't make it optional as that is very likely a mistake + function useMemo(factory: () => T, deps: DependencyList): T; + /** + * `useDebugValue` can be used to display a label for custom hooks in React DevTools. + * + * NOTE: We don’t recommend adding debug values to every custom hook. + * It’s most valuable for custom hooks that are part of shared libraries. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useDebugValue} + */ + // the name of the custom hook is itself derived from the function name at runtime: + // it's just the function name without the "use" prefix. + function useDebugValue(value: T, format?: (value: T) => any): void; + + // must be synchronous + export type TransitionFunction = () => VoidOrUndefinedOnly; + // strange definition to allow vscode to show documentation on the invocation + export interface TransitionStartFunction { + /** + * State updates caused inside the callback are allowed to be deferred. + * + * **If some state update causes a component to suspend, that state update should be wrapped in a transition.** + * + * @param callback A _synchronous_ function which causes state updates that can be deferred. + */ + (callback: TransitionFunction): void; + } + + /** + * Returns a deferred version of the value that may “lag behind” it. + * + * This is commonly used to keep the interface responsive when you have something that renders immediately + * based on user input and something that needs to wait for a data fetch. + * + * A good example of this is a text input. + * + * @param value The value that is going to be deferred + * + * @see {@link https://react.dev/reference/react/useDeferredValue} + */ + export function useDeferredValue(value: T): T; + + /** + * Allows components to avoid undesirable loading states by waiting for content to load + * before transitioning to the next screen. It also allows components to defer slower, + * data fetching updates until subsequent renders so that more crucial updates can be + * rendered immediately. + * + * The `useTransition` hook returns two values in an array. + * + * The first is a boolean, React’s way of informing us whether we’re waiting for the transition to finish. + * The second is a function that takes a callback. We can use it to tell React which state we want to defer. + * + * **If some state update causes a component to suspend, that state update should be wrapped in a transition.** + * + * @see {@link https://react.dev/reference/react/useTransition} + */ + export function useTransition(): [boolean, TransitionStartFunction]; + + /** + * Similar to `useTransition` but allows uses where hooks are not available. + * + * @param callback A _synchronous_ function which causes state updates that can be deferred. + */ + export function startTransition(scope: TransitionFunction): void; + + /** + * Wrap any code rendering and triggering updates to your components into `act()` calls. + * + * Ensures that the behavior in your tests matches what happens in the browser + * more closely by executing pending `useEffect`s before returning. This also + * reduces the amount of re-renders done. + * + * @param callback A synchronous, void callback that will execute as a single, complete React commit. + * + * @see https://reactjs.org/blog/2019/02/06/react-v16.8.0.html#testing-hooks + */ + // While act does always return Thenable, if a void function is passed, we pretend the return value is also void to not trigger dangling Promise lint rules. + export function act(callback: () => VoidOrUndefinedOnly): void; + export function act(callback: () => T | Promise): Promise; + + export function useId(): string; + + /** + * @param effect Imperative function that can return a cleanup function + * @param deps If present, effect will only activate if the values in the list change. + * + * @see {@link https://github.com/facebook/react/pull/21913} + */ + export function useInsertionEffect(effect: EffectCallback, deps?: DependencyList): void; + + /** + * @param subscribe + * @param getSnapshot + * + * @see {@link https://github.com/reactwg/react-18/discussions/86} + */ + // keep in sync with `useSyncExternalStore` from `use-sync-external-store` + export function useSyncExternalStore( + subscribe: (onStoreChange: () => void) => () => void, + getSnapshot: () => Snapshot, + getServerSnapshot?: () => Snapshot, + ): Snapshot; + + // + // Event System + // ---------------------------------------------------------------------- + // TODO: change any to unknown when moving to TS v3 + interface BaseSyntheticEvent { + nativeEvent: E; + currentTarget: C; + target: T; + bubbles: boolean; + cancelable: boolean; + defaultPrevented: boolean; + eventPhase: number; + isTrusted: boolean; + preventDefault(): void; + isDefaultPrevented(): boolean; + stopPropagation(): void; + isPropagationStopped(): boolean; + persist(): void; + timeStamp: number; + type: string; + } + + /** + * currentTarget - a reference to the element on which the event listener is registered. + * + * target - a reference to the element from which the event was originally dispatched. + * This might be a child element to the element on which the event listener is registered. + * If you thought this should be `EventTarget & T`, see https://github.com/DefinitelyTyped/DefinitelyTyped/issues/11508#issuecomment-256045682 + */ + interface SyntheticEvent extends BaseSyntheticEvent {} + + interface ClipboardEvent extends SyntheticEvent { + clipboardData: DataTransfer; + } + + interface CompositionEvent extends SyntheticEvent { + data: string; + } + + interface DragEvent extends MouseEvent { + dataTransfer: DataTransfer; + } + + interface PointerEvent extends MouseEvent { + pointerId: number; + pressure: number; + tangentialPressure: number; + tiltX: number; + tiltY: number; + twist: number; + width: number; + height: number; + pointerType: "mouse" | "pen" | "touch"; + isPrimary: boolean; + } + + interface FocusEvent extends SyntheticEvent { + relatedTarget: (EventTarget & RelatedTarget) | null; + target: EventTarget & Target; + } + + interface FormEvent extends SyntheticEvent { + } + + interface InvalidEvent extends SyntheticEvent { + target: EventTarget & T; + } + + interface ChangeEvent extends SyntheticEvent { + target: EventTarget & T; + } + + export type ModifierKey = + | "Alt" + | "AltGraph" + | "CapsLock" + | "Control" + | "Fn" + | "FnLock" + | "Hyper" + | "Meta" + | "NumLock" + | "ScrollLock" + | "Shift" + | "Super" + | "Symbol" + | "SymbolLock"; + + interface KeyboardEvent extends UIEvent { + altKey: boolean; + /** @deprecated */ + charCode: number; + ctrlKey: boolean; + code: string; + /** + * See [DOM Level 3 Events spec](https://www.w3.org/TR/uievents-key/#keys-modifier). for a list of valid (case-sensitive) arguments to this method. + */ + getModifierState(key: ModifierKey): boolean; + /** + * See the [DOM Level 3 Events spec](https://www.w3.org/TR/uievents-key/#named-key-attribute-values). for possible values + */ + key: string; + /** @deprecated */ + keyCode: number; + locale: string; + location: number; + metaKey: boolean; + repeat: boolean; + shiftKey: boolean; + /** @deprecated */ + which: number; + } + + interface MouseEvent extends UIEvent { + altKey: boolean; + button: number; + buttons: number; + clientX: number; + clientY: number; + ctrlKey: boolean; + /** + * See [DOM Level 3 Events spec](https://www.w3.org/TR/uievents-key/#keys-modifier). for a list of valid (case-sensitive) arguments to this method. + */ + getModifierState(key: ModifierKey): boolean; + metaKey: boolean; + movementX: number; + movementY: number; + pageX: number; + pageY: number; + relatedTarget: EventTarget | null; + screenX: number; + screenY: number; + shiftKey: boolean; + } + + interface TouchEvent extends UIEvent { + altKey: boolean; + changedTouches: TouchList; + ctrlKey: boolean; + /** + * See [DOM Level 3 Events spec](https://www.w3.org/TR/uievents-key/#keys-modifier). for a list of valid (case-sensitive) arguments to this method. + */ + getModifierState(key: ModifierKey): boolean; + metaKey: boolean; + shiftKey: boolean; + targetTouches: TouchList; + touches: TouchList; + } + + interface UIEvent extends SyntheticEvent { + detail: number; + view: AbstractView; + } + + interface WheelEvent extends MouseEvent { + deltaMode: number; + deltaX: number; + deltaY: number; + deltaZ: number; + } + + interface AnimationEvent extends SyntheticEvent { + animationName: string; + elapsedTime: number; + pseudoElement: string; + } + + interface TransitionEvent extends SyntheticEvent { + elapsedTime: number; + propertyName: string; + pseudoElement: string; + } + + // + // Event Handler Types + // ---------------------------------------------------------------------- + + type EventHandler> = { bivarianceHack(event: E): void }["bivarianceHack"]; + + type ReactEventHandler = EventHandler>; + + type ClipboardEventHandler = EventHandler>; + type CompositionEventHandler = EventHandler>; + type DragEventHandler = EventHandler>; + type FocusEventHandler = EventHandler>; + type FormEventHandler = EventHandler>; + type ChangeEventHandler = EventHandler>; + type KeyboardEventHandler = EventHandler>; + type MouseEventHandler = EventHandler>; + type TouchEventHandler = EventHandler>; + type PointerEventHandler = EventHandler>; + type UIEventHandler = EventHandler>; + type WheelEventHandler = EventHandler>; + type AnimationEventHandler = EventHandler>; + type TransitionEventHandler = EventHandler>; + + // + // Props / DOM Attributes + // ---------------------------------------------------------------------- + + interface HTMLProps extends AllHTMLAttributes, ClassAttributes { + } + + type DetailedHTMLProps, T> = ClassAttributes & E; + + interface SVGProps extends SVGAttributes, ClassAttributes { + } + + interface SVGLineElementAttributes extends SVGProps {} + interface SVGTextElementAttributes extends SVGProps {} + + interface DOMAttributes { + children?: ReactNode | undefined; + dangerouslySetInnerHTML?: { + // Should be InnerHTML['innerHTML']. + // But unfortunately we're mixing renderer-specific type declarations. + __html: string | TrustedHTML; + } | undefined; + + // Clipboard Events + onCopy?: ClipboardEventHandler | undefined; + onCopyCapture?: ClipboardEventHandler | undefined; + onCut?: ClipboardEventHandler | undefined; + onCutCapture?: ClipboardEventHandler | undefined; + onPaste?: ClipboardEventHandler | undefined; + onPasteCapture?: ClipboardEventHandler | undefined; + + // Composition Events + onCompositionEnd?: CompositionEventHandler | undefined; + onCompositionEndCapture?: CompositionEventHandler | undefined; + onCompositionStart?: CompositionEventHandler | undefined; + onCompositionStartCapture?: CompositionEventHandler | undefined; + onCompositionUpdate?: CompositionEventHandler | undefined; + onCompositionUpdateCapture?: CompositionEventHandler | undefined; + + // Focus Events + onFocus?: FocusEventHandler | undefined; + onFocusCapture?: FocusEventHandler | undefined; + onBlur?: FocusEventHandler | undefined; + onBlurCapture?: FocusEventHandler | undefined; + + // Form Events + onChange?: FormEventHandler | undefined; + onChangeCapture?: FormEventHandler | undefined; + onBeforeInput?: FormEventHandler | undefined; + onBeforeInputCapture?: FormEventHandler | undefined; + onInput?: FormEventHandler | undefined; + onInputCapture?: FormEventHandler | undefined; + onReset?: FormEventHandler | undefined; + onResetCapture?: FormEventHandler | undefined; + onSubmit?: FormEventHandler | undefined; + onSubmitCapture?: FormEventHandler | undefined; + onInvalid?: FormEventHandler | undefined; + onInvalidCapture?: FormEventHandler | undefined; + + // Image Events + onLoad?: ReactEventHandler | undefined; + onLoadCapture?: ReactEventHandler | undefined; + onError?: ReactEventHandler | undefined; // also a Media Event + onErrorCapture?: ReactEventHandler | undefined; // also a Media Event + + // Keyboard Events + onKeyDown?: KeyboardEventHandler | undefined; + onKeyDownCapture?: KeyboardEventHandler | undefined; + /** @deprecated Use `onKeyUp` or `onKeyDown` instead */ + onKeyPress?: KeyboardEventHandler | undefined; + /** @deprecated Use `onKeyUpCapture` or `onKeyDownCapture` instead */ + onKeyPressCapture?: KeyboardEventHandler | undefined; + onKeyUp?: KeyboardEventHandler | undefined; + onKeyUpCapture?: KeyboardEventHandler | undefined; + + // Media Events + onAbort?: ReactEventHandler | undefined; + onAbortCapture?: ReactEventHandler | undefined; + onCanPlay?: ReactEventHandler | undefined; + onCanPlayCapture?: ReactEventHandler | undefined; + onCanPlayThrough?: ReactEventHandler | undefined; + onCanPlayThroughCapture?: ReactEventHandler | undefined; + onDurationChange?: ReactEventHandler | undefined; + onDurationChangeCapture?: ReactEventHandler | undefined; + onEmptied?: ReactEventHandler | undefined; + onEmptiedCapture?: ReactEventHandler | undefined; + onEncrypted?: ReactEventHandler | undefined; + onEncryptedCapture?: ReactEventHandler | undefined; + onEnded?: ReactEventHandler | undefined; + onEndedCapture?: ReactEventHandler | undefined; + onLoadedData?: ReactEventHandler | undefined; + onLoadedDataCapture?: ReactEventHandler | undefined; + onLoadedMetadata?: ReactEventHandler | undefined; + onLoadedMetadataCapture?: ReactEventHandler | undefined; + onLoadStart?: ReactEventHandler | undefined; + onLoadStartCapture?: ReactEventHandler | undefined; + onPause?: ReactEventHandler | undefined; + onPauseCapture?: ReactEventHandler | undefined; + onPlay?: ReactEventHandler | undefined; + onPlayCapture?: ReactEventHandler | undefined; + onPlaying?: ReactEventHandler | undefined; + onPlayingCapture?: ReactEventHandler | undefined; + onProgress?: ReactEventHandler | undefined; + onProgressCapture?: ReactEventHandler | undefined; + onRateChange?: ReactEventHandler | undefined; + onRateChangeCapture?: ReactEventHandler | undefined; + onResize?: ReactEventHandler | undefined; + onResizeCapture?: ReactEventHandler | undefined; + onSeeked?: ReactEventHandler | undefined; + onSeekedCapture?: ReactEventHandler | undefined; + onSeeking?: ReactEventHandler | undefined; + onSeekingCapture?: ReactEventHandler | undefined; + onStalled?: ReactEventHandler | undefined; + onStalledCapture?: ReactEventHandler | undefined; + onSuspend?: ReactEventHandler | undefined; + onSuspendCapture?: ReactEventHandler | undefined; + onTimeUpdate?: ReactEventHandler | undefined; + onTimeUpdateCapture?: ReactEventHandler | undefined; + onVolumeChange?: ReactEventHandler | undefined; + onVolumeChangeCapture?: ReactEventHandler | undefined; + onWaiting?: ReactEventHandler | undefined; + onWaitingCapture?: ReactEventHandler | undefined; + + // MouseEvents + onAuxClick?: MouseEventHandler | undefined; + onAuxClickCapture?: MouseEventHandler | undefined; + onClick?: MouseEventHandler | undefined; + onClickCapture?: MouseEventHandler | undefined; + onContextMenu?: MouseEventHandler | undefined; + onContextMenuCapture?: MouseEventHandler | undefined; + onDoubleClick?: MouseEventHandler | undefined; + onDoubleClickCapture?: MouseEventHandler | undefined; + onDrag?: DragEventHandler | undefined; + onDragCapture?: DragEventHandler | undefined; + onDragEnd?: DragEventHandler | undefined; + onDragEndCapture?: DragEventHandler | undefined; + onDragEnter?: DragEventHandler | undefined; + onDragEnterCapture?: DragEventHandler | undefined; + onDragExit?: DragEventHandler | undefined; + onDragExitCapture?: DragEventHandler | undefined; + onDragLeave?: DragEventHandler | undefined; + onDragLeaveCapture?: DragEventHandler | undefined; + onDragOver?: DragEventHandler | undefined; + onDragOverCapture?: DragEventHandler | undefined; + onDragStart?: DragEventHandler | undefined; + onDragStartCapture?: DragEventHandler | undefined; + onDrop?: DragEventHandler | undefined; + onDropCapture?: DragEventHandler | undefined; + onMouseDown?: MouseEventHandler | undefined; + onMouseDownCapture?: MouseEventHandler | undefined; + onMouseEnter?: MouseEventHandler | undefined; + onMouseLeave?: MouseEventHandler | undefined; + onMouseMove?: MouseEventHandler | undefined; + onMouseMoveCapture?: MouseEventHandler | undefined; + onMouseOut?: MouseEventHandler | undefined; + onMouseOutCapture?: MouseEventHandler | undefined; + onMouseOver?: MouseEventHandler | undefined; + onMouseOverCapture?: MouseEventHandler | undefined; + onMouseUp?: MouseEventHandler | undefined; + onMouseUpCapture?: MouseEventHandler | undefined; + + // Selection Events + onSelect?: ReactEventHandler | undefined; + onSelectCapture?: ReactEventHandler | undefined; + + // Touch Events + onTouchCancel?: TouchEventHandler | undefined; + onTouchCancelCapture?: TouchEventHandler | undefined; + onTouchEnd?: TouchEventHandler | undefined; + onTouchEndCapture?: TouchEventHandler | undefined; + onTouchMove?: TouchEventHandler | undefined; + onTouchMoveCapture?: TouchEventHandler | undefined; + onTouchStart?: TouchEventHandler | undefined; + onTouchStartCapture?: TouchEventHandler | undefined; + + // Pointer Events + onPointerDown?: PointerEventHandler | undefined; + onPointerDownCapture?: PointerEventHandler | undefined; + onPointerMove?: PointerEventHandler | undefined; + onPointerMoveCapture?: PointerEventHandler | undefined; + onPointerUp?: PointerEventHandler | undefined; + onPointerUpCapture?: PointerEventHandler | undefined; + onPointerCancel?: PointerEventHandler | undefined; + onPointerCancelCapture?: PointerEventHandler | undefined; + onPointerEnter?: PointerEventHandler | undefined; + onPointerLeave?: PointerEventHandler | undefined; + onPointerOver?: PointerEventHandler | undefined; + onPointerOverCapture?: PointerEventHandler | undefined; + onPointerOut?: PointerEventHandler | undefined; + onPointerOutCapture?: PointerEventHandler | undefined; + onGotPointerCapture?: PointerEventHandler | undefined; + onGotPointerCaptureCapture?: PointerEventHandler | undefined; + onLostPointerCapture?: PointerEventHandler | undefined; + onLostPointerCaptureCapture?: PointerEventHandler | undefined; + + // UI Events + onScroll?: UIEventHandler | undefined; + onScrollCapture?: UIEventHandler | undefined; + + // Wheel Events + onWheel?: WheelEventHandler | undefined; + onWheelCapture?: WheelEventHandler | undefined; + + // Animation Events + onAnimationStart?: AnimationEventHandler | undefined; + onAnimationStartCapture?: AnimationEventHandler | undefined; + onAnimationEnd?: AnimationEventHandler | undefined; + onAnimationEndCapture?: AnimationEventHandler | undefined; + onAnimationIteration?: AnimationEventHandler | undefined; + onAnimationIterationCapture?: AnimationEventHandler | undefined; + + // Transition Events + onTransitionEnd?: TransitionEventHandler | undefined; + onTransitionEndCapture?: TransitionEventHandler | undefined; + } + + export interface CSSProperties extends CSS.Properties { + /** + * The index signature was removed to enable closed typing for style + * using CSSType. You're able to use type assertion or module augmentation + * to add properties or an index signature of your own. + * + * For examples and more information, visit: + * https://github.com/frenic/csstype#what-should-i-do-when-i-get-type-errors + */ + } + + // All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/ + interface AriaAttributes { + /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */ + "aria-activedescendant"?: string | undefined; + /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */ + "aria-atomic"?: Booleanish | undefined; + /** + * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be + * presented if they are made. + */ + "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined; + /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */ + /** + * Defines a string value that labels the current element, which is intended to be converted into Braille. + * @see aria-label. + */ + "aria-braillelabel"?: string | undefined; + /** + * Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended to be converted into Braille. + * @see aria-roledescription. + */ + "aria-brailleroledescription"?: string | undefined; + "aria-busy"?: Booleanish | undefined; + /** + * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. + * @see aria-pressed @see aria-selected. + */ + "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined; + /** + * Defines the total number of columns in a table, grid, or treegrid. + * @see aria-colindex. + */ + "aria-colcount"?: number | undefined; + /** + * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. + * @see aria-colcount @see aria-colspan. + */ + "aria-colindex"?: number | undefined; + /** + * Defines a human readable text alternative of aria-colindex. + * @see aria-rowindextext. + */ + "aria-colindextext"?: string | undefined; + /** + * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-colindex @see aria-rowspan. + */ + "aria-colspan"?: number | undefined; + /** + * Identifies the element (or elements) whose contents or presence are controlled by the current element. + * @see aria-owns. + */ + "aria-controls"?: string | undefined; + /** Indicates the element that represents the current item within a container or set of related elements. */ + "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined; + /** + * Identifies the element (or elements) that describes the object. + * @see aria-labelledby + */ + "aria-describedby"?: string | undefined; + /** + * Defines a string value that describes or annotates the current element. + * @see related aria-describedby. + */ + "aria-description"?: string | undefined; + /** + * Identifies the element that provides a detailed, extended description for the object. + * @see aria-describedby. + */ + "aria-details"?: string | undefined; + /** + * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. + * @see aria-hidden @see aria-readonly. + */ + "aria-disabled"?: Booleanish | undefined; + /** + * Indicates what functions can be performed when a dragged object is released on the drop target. + * @deprecated in ARIA 1.1 + */ + "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined; + /** + * Identifies the element that provides an error message for the object. + * @see aria-invalid @see aria-describedby. + */ + "aria-errormessage"?: string | undefined; + /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */ + "aria-expanded"?: Booleanish | undefined; + /** + * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, + * allows assistive technology to override the general default of reading in document source order. + */ + "aria-flowto"?: string | undefined; + /** + * Indicates an element's "grabbed" state in a drag-and-drop operation. + * @deprecated in ARIA 1.1 + */ + "aria-grabbed"?: Booleanish | undefined; + /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */ + "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined; + /** + * Indicates whether the element is exposed to an accessibility API. + * @see aria-disabled. + */ + "aria-hidden"?: Booleanish | undefined; + /** + * Indicates the entered value does not conform to the format expected by the application. + * @see aria-errormessage. + */ + "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined; + /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */ + "aria-keyshortcuts"?: string | undefined; + /** + * Defines a string value that labels the current element. + * @see aria-labelledby. + */ + "aria-label"?: string | undefined; + /** + * Identifies the element (or elements) that labels the current element. + * @see aria-describedby. + */ + "aria-labelledby"?: string | undefined; + /** Defines the hierarchical level of an element within a structure. */ + "aria-level"?: number | undefined; + /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */ + "aria-live"?: "off" | "assertive" | "polite" | undefined; + /** Indicates whether an element is modal when displayed. */ + "aria-modal"?: Booleanish | undefined; + /** Indicates whether a text box accepts multiple lines of input or only a single line. */ + "aria-multiline"?: Booleanish | undefined; + /** Indicates that the user may select more than one item from the current selectable descendants. */ + "aria-multiselectable"?: Booleanish | undefined; + /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */ + "aria-orientation"?: "horizontal" | "vertical" | undefined; + /** + * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship + * between DOM elements where the DOM hierarchy cannot be used to represent the relationship. + * @see aria-controls. + */ + "aria-owns"?: string | undefined; + /** + * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. + * A hint could be a sample value or a brief description of the expected format. + */ + "aria-placeholder"?: string | undefined; + /** + * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-setsize. + */ + "aria-posinset"?: number | undefined; + /** + * Indicates the current "pressed" state of toggle buttons. + * @see aria-checked @see aria-selected. + */ + "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined; + /** + * Indicates that the element is not editable, but is otherwise operable. + * @see aria-disabled. + */ + "aria-readonly"?: Booleanish | undefined; + /** + * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. + * @see aria-atomic. + */ + "aria-relevant"?: + | "additions" + | "additions removals" + | "additions text" + | "all" + | "removals" + | "removals additions" + | "removals text" + | "text" + | "text additions" + | "text removals" + | undefined; + /** Indicates that user input is required on the element before a form may be submitted. */ + "aria-required"?: Booleanish | undefined; + /** Defines a human-readable, author-localized description for the role of an element. */ + "aria-roledescription"?: string | undefined; + /** + * Defines the total number of rows in a table, grid, or treegrid. + * @see aria-rowindex. + */ + "aria-rowcount"?: number | undefined; + /** + * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. + * @see aria-rowcount @see aria-rowspan. + */ + "aria-rowindex"?: number | undefined; + /** + * Defines a human readable text alternative of aria-rowindex. + * @see aria-colindextext. + */ + "aria-rowindextext"?: string | undefined; + /** + * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-rowindex @see aria-colspan. + */ + "aria-rowspan"?: number | undefined; + /** + * Indicates the current "selected" state of various widgets. + * @see aria-checked @see aria-pressed. + */ + "aria-selected"?: Booleanish | undefined; + /** + * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-posinset. + */ + "aria-setsize"?: number | undefined; + /** Indicates if items in a table or grid are sorted in ascending or descending order. */ + "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined; + /** Defines the maximum allowed value for a range widget. */ + "aria-valuemax"?: number | undefined; + /** Defines the minimum allowed value for a range widget. */ + "aria-valuemin"?: number | undefined; + /** + * Defines the current value for a range widget. + * @see aria-valuetext. + */ + "aria-valuenow"?: number | undefined; + /** Defines the human readable text alternative of aria-valuenow for a range widget. */ + "aria-valuetext"?: string | undefined; + } + + // All the WAI-ARIA 1.1 role attribute values from https://www.w3.org/TR/wai-aria-1.1/#role_definitions + type AriaRole = + | "alert" + | "alertdialog" + | "application" + | "article" + | "banner" + | "button" + | "cell" + | "checkbox" + | "columnheader" + | "combobox" + | "complementary" + | "contentinfo" + | "definition" + | "dialog" + | "directory" + | "document" + | "feed" + | "figure" + | "form" + | "grid" + | "gridcell" + | "group" + | "heading" + | "img" + | "link" + | "list" + | "listbox" + | "listitem" + | "log" + | "main" + | "marquee" + | "math" + | "menu" + | "menubar" + | "menuitem" + | "menuitemcheckbox" + | "menuitemradio" + | "navigation" + | "none" + | "note" + | "option" + | "presentation" + | "progressbar" + | "radio" + | "radiogroup" + | "region" + | "row" + | "rowgroup" + | "rowheader" + | "scrollbar" + | "search" + | "searchbox" + | "separator" + | "slider" + | "spinbutton" + | "status" + | "switch" + | "tab" + | "table" + | "tablist" + | "tabpanel" + | "term" + | "textbox" + | "timer" + | "toolbar" + | "tooltip" + | "tree" + | "treegrid" + | "treeitem" + | (string & {}); + + interface HTMLAttributes extends AriaAttributes, DOMAttributes { + // React-specific Attributes + defaultChecked?: boolean | undefined; + defaultValue?: string | number | readonly string[] | undefined; + suppressContentEditableWarning?: boolean | undefined; + suppressHydrationWarning?: boolean | undefined; + + // Standard HTML Attributes + accessKey?: string | undefined; + autoFocus?: boolean | undefined; + className?: string | undefined; + contentEditable?: Booleanish | "inherit" | "plaintext-only" | undefined; + contextMenu?: string | undefined; + dir?: string | undefined; + draggable?: Booleanish | undefined; + hidden?: boolean | undefined; + id?: string | undefined; + lang?: string | undefined; + nonce?: string | undefined; + slot?: string | undefined; + spellCheck?: Booleanish | undefined; + style?: CSSProperties | undefined; + tabIndex?: number | undefined; + title?: string | undefined; + translate?: "yes" | "no" | undefined; + + // Unknown + radioGroup?: string | undefined; // , + + // WAI-ARIA + role?: AriaRole | undefined; + + // RDFa Attributes + about?: string | undefined; + content?: string | undefined; + datatype?: string | undefined; + inlist?: any; + prefix?: string | undefined; + property?: string | undefined; + rel?: string | undefined; + resource?: string | undefined; + rev?: string | undefined; + typeof?: string | undefined; + vocab?: string | undefined; + + // Non-standard Attributes + autoCapitalize?: string | undefined; + autoCorrect?: string | undefined; + autoSave?: string | undefined; + color?: string | undefined; + itemProp?: string | undefined; + itemScope?: boolean | undefined; + itemType?: string | undefined; + itemID?: string | undefined; + itemRef?: string | undefined; + results?: number | undefined; + security?: string | undefined; + unselectable?: "on" | "off" | undefined; + + // Living Standard + /** + * Hints at the type of data that might be entered by the user while editing the element or its contents + * @see {@link https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute} + */ + inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined; + /** + * Specify that a standard HTML element should behave like a defined custom built-in element + * @see {@link https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is} + */ + is?: string | undefined; + } + + /** + * For internal usage only. + * Different release channels declare additional types of ReactNode this particular release channel accepts. + * App or library types should never augment this interface. + */ + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS {} + + interface AllHTMLAttributes extends HTMLAttributes { + // Standard HTML Attributes + accept?: string | undefined; + acceptCharset?: string | undefined; + action?: + | string + | undefined + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS + ]; + allowFullScreen?: boolean | undefined; + allowTransparency?: boolean | undefined; + alt?: string | undefined; + as?: string | undefined; + async?: boolean | undefined; + autoComplete?: string | undefined; + autoPlay?: boolean | undefined; + capture?: boolean | "user" | "environment" | undefined; + cellPadding?: number | string | undefined; + cellSpacing?: number | string | undefined; + charSet?: string | undefined; + challenge?: string | undefined; + checked?: boolean | undefined; + cite?: string | undefined; + classID?: string | undefined; + cols?: number | undefined; + colSpan?: number | undefined; + controls?: boolean | undefined; + coords?: string | undefined; + crossOrigin?: CrossOrigin; + data?: string | undefined; + dateTime?: string | undefined; + default?: boolean | undefined; + defer?: boolean | undefined; + disabled?: boolean | undefined; + download?: any; + encType?: string | undefined; + form?: string | undefined; + formAction?: + | string + | undefined + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS + ]; + formEncType?: string | undefined; + formMethod?: string | undefined; + formNoValidate?: boolean | undefined; + formTarget?: string | undefined; + frameBorder?: number | string | undefined; + headers?: string | undefined; + height?: number | string | undefined; + high?: number | undefined; + href?: string | undefined; + hrefLang?: string | undefined; + htmlFor?: string | undefined; + httpEquiv?: string | undefined; + integrity?: string | undefined; + keyParams?: string | undefined; + keyType?: string | undefined; + kind?: string | undefined; + label?: string | undefined; + list?: string | undefined; + loop?: boolean | undefined; + low?: number | undefined; + manifest?: string | undefined; + marginHeight?: number | undefined; + marginWidth?: number | undefined; + max?: number | string | undefined; + maxLength?: number | undefined; + media?: string | undefined; + mediaGroup?: string | undefined; + method?: string | undefined; + min?: number | string | undefined; + minLength?: number | undefined; + multiple?: boolean | undefined; + muted?: boolean | undefined; + name?: string | undefined; + noValidate?: boolean | undefined; + open?: boolean | undefined; + optimum?: number | undefined; + pattern?: string | undefined; + placeholder?: string | undefined; + playsInline?: boolean | undefined; + poster?: string | undefined; + preload?: string | undefined; + readOnly?: boolean | undefined; + required?: boolean | undefined; + reversed?: boolean | undefined; + rows?: number | undefined; + rowSpan?: number | undefined; + sandbox?: string | undefined; + scope?: string | undefined; + scoped?: boolean | undefined; + scrolling?: string | undefined; + seamless?: boolean | undefined; + selected?: boolean | undefined; + shape?: string | undefined; + size?: number | undefined; + sizes?: string | undefined; + span?: number | undefined; + src?: string | undefined; + srcDoc?: string | undefined; + srcLang?: string | undefined; + srcSet?: string | undefined; + start?: number | undefined; + step?: number | string | undefined; + summary?: string | undefined; + target?: string | undefined; + type?: string | undefined; + useMap?: string | undefined; + value?: string | readonly string[] | number | undefined; + width?: number | string | undefined; + wmode?: string | undefined; + wrap?: string | undefined; + } + + type HTMLAttributeReferrerPolicy = + | "" + | "no-referrer" + | "no-referrer-when-downgrade" + | "origin" + | "origin-when-cross-origin" + | "same-origin" + | "strict-origin" + | "strict-origin-when-cross-origin" + | "unsafe-url"; + + type HTMLAttributeAnchorTarget = + | "_self" + | "_blank" + | "_parent" + | "_top" + | (string & {}); + + interface AnchorHTMLAttributes extends HTMLAttributes { + download?: any; + href?: string | undefined; + hrefLang?: string | undefined; + media?: string | undefined; + ping?: string | undefined; + target?: HTMLAttributeAnchorTarget | undefined; + type?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + } + + interface AudioHTMLAttributes extends MediaHTMLAttributes {} + + interface AreaHTMLAttributes extends HTMLAttributes { + alt?: string | undefined; + coords?: string | undefined; + download?: any; + href?: string | undefined; + hrefLang?: string | undefined; + media?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + shape?: string | undefined; + target?: string | undefined; + } + + interface BaseHTMLAttributes extends HTMLAttributes { + href?: string | undefined; + target?: string | undefined; + } + + interface BlockquoteHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; + } + + interface ButtonHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + form?: string | undefined; + formAction?: + | string + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS + ] + | undefined; + formEncType?: string | undefined; + formMethod?: string | undefined; + formNoValidate?: boolean | undefined; + formTarget?: string | undefined; + name?: string | undefined; + type?: "submit" | "reset" | "button" | undefined; + value?: string | readonly string[] | number | undefined; + } + + interface CanvasHTMLAttributes extends HTMLAttributes { + height?: number | string | undefined; + width?: number | string | undefined; + } + + interface ColHTMLAttributes extends HTMLAttributes { + span?: number | undefined; + width?: number | string | undefined; + } + + interface ColgroupHTMLAttributes extends HTMLAttributes { + span?: number | undefined; + } + + interface DataHTMLAttributes extends HTMLAttributes { + value?: string | readonly string[] | number | undefined; + } + + interface DetailsHTMLAttributes extends HTMLAttributes { + open?: boolean | undefined; + onToggle?: ReactEventHandler | undefined; + name?: string | undefined; + } + + interface DelHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; + dateTime?: string | undefined; + } + + interface DialogHTMLAttributes extends HTMLAttributes { + onCancel?: ReactEventHandler | undefined; + onClose?: ReactEventHandler | undefined; + open?: boolean | undefined; + } + + interface EmbedHTMLAttributes extends HTMLAttributes { + height?: number | string | undefined; + src?: string | undefined; + type?: string | undefined; + width?: number | string | undefined; + } + + interface FieldsetHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + form?: string | undefined; + name?: string | undefined; + } + + interface FormHTMLAttributes extends HTMLAttributes { + acceptCharset?: string | undefined; + action?: + | string + | undefined + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS + ]; + autoComplete?: string | undefined; + encType?: string | undefined; + method?: string | undefined; + name?: string | undefined; + noValidate?: boolean | undefined; + target?: string | undefined; + } + + interface HtmlHTMLAttributes extends HTMLAttributes { + manifest?: string | undefined; + } + + interface IframeHTMLAttributes extends HTMLAttributes { + allow?: string | undefined; + allowFullScreen?: boolean | undefined; + allowTransparency?: boolean | undefined; + /** @deprecated */ + frameBorder?: number | string | undefined; + height?: number | string | undefined; + loading?: "eager" | "lazy" | undefined; + /** @deprecated */ + marginHeight?: number | undefined; + /** @deprecated */ + marginWidth?: number | undefined; + name?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + sandbox?: string | undefined; + /** @deprecated */ + scrolling?: string | undefined; + seamless?: boolean | undefined; + src?: string | undefined; + srcDoc?: string | undefined; + width?: number | string | undefined; + } + + interface ImgHTMLAttributes extends HTMLAttributes { + alt?: string | undefined; + crossOrigin?: CrossOrigin; + decoding?: "async" | "auto" | "sync" | undefined; + fetchPriority?: "high" | "low" | "auto"; + height?: number | string | undefined; + loading?: "eager" | "lazy" | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + sizes?: string | undefined; + src?: string | undefined; + srcSet?: string | undefined; + useMap?: string | undefined; + width?: number | string | undefined; + } + + interface InsHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; + dateTime?: string | undefined; + } + + type HTMLInputTypeAttribute = + | "button" + | "checkbox" + | "color" + | "date" + | "datetime-local" + | "email" + | "file" + | "hidden" + | "image" + | "month" + | "number" + | "password" + | "radio" + | "range" + | "reset" + | "search" + | "submit" + | "tel" + | "text" + | "time" + | "url" + | "week" + | (string & {}); + + type AutoFillAddressKind = "billing" | "shipping"; + type AutoFillBase = "" | "off" | "on"; + type AutoFillContactField = + | "email" + | "tel" + | "tel-area-code" + | "tel-country-code" + | "tel-extension" + | "tel-local" + | "tel-local-prefix" + | "tel-local-suffix" + | "tel-national"; + type AutoFillContactKind = "home" | "mobile" | "work"; + type AutoFillCredentialField = "webauthn"; + type AutoFillNormalField = + | "additional-name" + | "address-level1" + | "address-level2" + | "address-level3" + | "address-level4" + | "address-line1" + | "address-line2" + | "address-line3" + | "bday-day" + | "bday-month" + | "bday-year" + | "cc-csc" + | "cc-exp" + | "cc-exp-month" + | "cc-exp-year" + | "cc-family-name" + | "cc-given-name" + | "cc-name" + | "cc-number" + | "cc-type" + | "country" + | "country-name" + | "current-password" + | "family-name" + | "given-name" + | "honorific-prefix" + | "honorific-suffix" + | "name" + | "new-password" + | "one-time-code" + | "organization" + | "postal-code" + | "street-address" + | "transaction-amount" + | "transaction-currency" + | "username"; + type OptionalPrefixToken = `${T} ` | ""; + type OptionalPostfixToken = ` ${T}` | ""; + type AutoFillField = AutoFillNormalField | `${OptionalPrefixToken}${AutoFillContactField}`; + type AutoFillSection = `section-${string}`; + type AutoFill = + | AutoFillBase + | `${OptionalPrefixToken}${OptionalPrefixToken< + AutoFillAddressKind + >}${AutoFillField}${OptionalPostfixToken}`; + type HTMLInputAutoCompleteAttribute = AutoFill | (string & {}); + + interface InputHTMLAttributes extends HTMLAttributes { + accept?: string | undefined; + alt?: string | undefined; + autoComplete?: HTMLInputAutoCompleteAttribute | undefined; + capture?: boolean | "user" | "environment" | undefined; // https://www.w3.org/TR/html-media-capture/#the-capture-attribute + checked?: boolean | undefined; + disabled?: boolean | undefined; + enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined; + form?: string | undefined; + formAction?: + | string + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS + ] + | undefined; + formEncType?: string | undefined; + formMethod?: string | undefined; + formNoValidate?: boolean | undefined; + formTarget?: string | undefined; + height?: number | string | undefined; + list?: string | undefined; + max?: number | string | undefined; + maxLength?: number | undefined; + min?: number | string | undefined; + minLength?: number | undefined; + multiple?: boolean | undefined; + name?: string | undefined; + pattern?: string | undefined; + placeholder?: string | undefined; + readOnly?: boolean | undefined; + required?: boolean | undefined; + size?: number | undefined; + src?: string | undefined; + step?: number | string | undefined; + type?: HTMLInputTypeAttribute | undefined; + value?: string | readonly string[] | number | undefined; + width?: number | string | undefined; + + onChange?: ChangeEventHandler | undefined; + } + + interface KeygenHTMLAttributes extends HTMLAttributes { + challenge?: string | undefined; + disabled?: boolean | undefined; + form?: string | undefined; + keyType?: string | undefined; + keyParams?: string | undefined; + name?: string | undefined; + } + + interface LabelHTMLAttributes extends HTMLAttributes { + form?: string | undefined; + htmlFor?: string | undefined; + } + + interface LiHTMLAttributes extends HTMLAttributes { + value?: string | readonly string[] | number | undefined; + } + + interface LinkHTMLAttributes extends HTMLAttributes { + as?: string | undefined; + crossOrigin?: CrossOrigin; + fetchPriority?: "high" | "low" | "auto"; + href?: string | undefined; + hrefLang?: string | undefined; + integrity?: string | undefined; + media?: string | undefined; + imageSrcSet?: string | undefined; + imageSizes?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + sizes?: string | undefined; + type?: string | undefined; + charSet?: string | undefined; + } + + interface MapHTMLAttributes extends HTMLAttributes { + name?: string | undefined; + } + + interface MenuHTMLAttributes extends HTMLAttributes { + type?: string | undefined; + } + + interface MediaHTMLAttributes extends HTMLAttributes { + autoPlay?: boolean | undefined; + controls?: boolean | undefined; + controlsList?: string | undefined; + crossOrigin?: CrossOrigin; + loop?: boolean | undefined; + mediaGroup?: string | undefined; + muted?: boolean | undefined; + playsInline?: boolean | undefined; + preload?: string | undefined; + src?: string | undefined; + } + + interface MetaHTMLAttributes extends HTMLAttributes { + charSet?: string | undefined; + content?: string | undefined; + httpEquiv?: string | undefined; + media?: string | undefined; + name?: string | undefined; + } + + interface MeterHTMLAttributes extends HTMLAttributes { + form?: string | undefined; + high?: number | undefined; + low?: number | undefined; + max?: number | string | undefined; + min?: number | string | undefined; + optimum?: number | undefined; + value?: string | readonly string[] | number | undefined; + } + + interface QuoteHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; + } + + interface ObjectHTMLAttributes extends HTMLAttributes { + classID?: string | undefined; + data?: string | undefined; + form?: string | undefined; + height?: number | string | undefined; + name?: string | undefined; + type?: string | undefined; + useMap?: string | undefined; + width?: number | string | undefined; + wmode?: string | undefined; + } + + interface OlHTMLAttributes extends HTMLAttributes { + reversed?: boolean | undefined; + start?: number | undefined; + type?: "1" | "a" | "A" | "i" | "I" | undefined; + } + + interface OptgroupHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + label?: string | undefined; + } + + interface OptionHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + label?: string | undefined; + selected?: boolean | undefined; + value?: string | readonly string[] | number | undefined; + } + + interface OutputHTMLAttributes extends HTMLAttributes { + form?: string | undefined; + htmlFor?: string | undefined; + name?: string | undefined; + } + + interface ParamHTMLAttributes extends HTMLAttributes { + name?: string | undefined; + value?: string | readonly string[] | number | undefined; + } + + interface ProgressHTMLAttributes extends HTMLAttributes { + max?: number | string | undefined; + value?: string | readonly string[] | number | undefined; + } + + interface SlotHTMLAttributes extends HTMLAttributes { + name?: string | undefined; + } + + interface ScriptHTMLAttributes extends HTMLAttributes { + async?: boolean | undefined; + /** @deprecated */ + charSet?: string | undefined; + crossOrigin?: CrossOrigin; + defer?: boolean | undefined; + integrity?: string | undefined; + noModule?: boolean | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + src?: string | undefined; + type?: string | undefined; + } + + interface SelectHTMLAttributes extends HTMLAttributes { + autoComplete?: string | undefined; + disabled?: boolean | undefined; + form?: string | undefined; + multiple?: boolean | undefined; + name?: string | undefined; + required?: boolean | undefined; + size?: number | undefined; + value?: string | readonly string[] | number | undefined; + onChange?: ChangeEventHandler | undefined; + } + + interface SourceHTMLAttributes extends HTMLAttributes { + height?: number | string | undefined; + media?: string | undefined; + sizes?: string | undefined; + src?: string | undefined; + srcSet?: string | undefined; + type?: string | undefined; + width?: number | string | undefined; + } + + interface StyleHTMLAttributes extends HTMLAttributes { + media?: string | undefined; + scoped?: boolean | undefined; + type?: string | undefined; + } + + interface TableHTMLAttributes extends HTMLAttributes { + align?: "left" | "center" | "right" | undefined; + bgcolor?: string | undefined; + border?: number | undefined; + cellPadding?: number | string | undefined; + cellSpacing?: number | string | undefined; + frame?: boolean | undefined; + rules?: "none" | "groups" | "rows" | "columns" | "all" | undefined; + summary?: string | undefined; + width?: number | string | undefined; + } + + interface TextareaHTMLAttributes extends HTMLAttributes { + autoComplete?: string | undefined; + cols?: number | undefined; + dirName?: string | undefined; + disabled?: boolean | undefined; + form?: string | undefined; + maxLength?: number | undefined; + minLength?: number | undefined; + name?: string | undefined; + placeholder?: string | undefined; + readOnly?: boolean | undefined; + required?: boolean | undefined; + rows?: number | undefined; + value?: string | readonly string[] | number | undefined; + wrap?: string | undefined; + + onChange?: ChangeEventHandler | undefined; + } + + interface TdHTMLAttributes extends HTMLAttributes { + align?: "left" | "center" | "right" | "justify" | "char" | undefined; + colSpan?: number | undefined; + headers?: string | undefined; + rowSpan?: number | undefined; + scope?: string | undefined; + abbr?: string | undefined; + height?: number | string | undefined; + width?: number | string | undefined; + valign?: "top" | "middle" | "bottom" | "baseline" | undefined; + } + + interface ThHTMLAttributes extends HTMLAttributes { + align?: "left" | "center" | "right" | "justify" | "char" | undefined; + colSpan?: number | undefined; + headers?: string | undefined; + rowSpan?: number | undefined; + scope?: string | undefined; + abbr?: string | undefined; + } + + interface TimeHTMLAttributes extends HTMLAttributes { + dateTime?: string | undefined; + } + + interface TrackHTMLAttributes extends HTMLAttributes { + default?: boolean | undefined; + kind?: string | undefined; + label?: string | undefined; + src?: string | undefined; + srcLang?: string | undefined; + } + + interface VideoHTMLAttributes extends MediaHTMLAttributes { + height?: number | string | undefined; + playsInline?: boolean | undefined; + poster?: string | undefined; + width?: number | string | undefined; + disablePictureInPicture?: boolean | undefined; + disableRemotePlayback?: boolean | undefined; + } + + // this list is "complete" in that it contains every SVG attribute + // that React supports, but the types can be improved. + // Full list here: https://facebook.github.io/react/docs/dom-elements.html + // + // The three broad type categories are (in order of restrictiveness): + // - "number | string" + // - "string" + // - union of string literals + interface SVGAttributes extends AriaAttributes, DOMAttributes { + // React-specific Attributes + suppressHydrationWarning?: boolean | undefined; + + // Attributes which also defined in HTMLAttributes + // See comment in SVGDOMPropertyConfig.js + className?: string | undefined; + color?: string | undefined; + height?: number | string | undefined; + id?: string | undefined; + lang?: string | undefined; + max?: number | string | undefined; + media?: string | undefined; + method?: string | undefined; + min?: number | string | undefined; + name?: string | undefined; + style?: CSSProperties | undefined; + target?: string | undefined; + type?: string | undefined; + width?: number | string | undefined; + + // Other HTML properties supported by SVG elements in browsers + role?: AriaRole | undefined; + tabIndex?: number | undefined; + crossOrigin?: CrossOrigin; + + // SVG Specific attributes + accentHeight?: number | string | undefined; + accumulate?: "none" | "sum" | undefined; + additive?: "replace" | "sum" | undefined; + alignmentBaseline?: + | "auto" + | "baseline" + | "before-edge" + | "text-before-edge" + | "middle" + | "central" + | "after-edge" + | "text-after-edge" + | "ideographic" + | "alphabetic" + | "hanging" + | "mathematical" + | "inherit" + | undefined; + allowReorder?: "no" | "yes" | undefined; + alphabetic?: number | string | undefined; + amplitude?: number | string | undefined; + arabicForm?: "initial" | "medial" | "terminal" | "isolated" | undefined; + ascent?: number | string | undefined; + attributeName?: string | undefined; + attributeType?: string | undefined; + autoReverse?: Booleanish | undefined; + azimuth?: number | string | undefined; + baseFrequency?: number | string | undefined; + baselineShift?: number | string | undefined; + baseProfile?: number | string | undefined; + bbox?: number | string | undefined; + begin?: number | string | undefined; + bias?: number | string | undefined; + by?: number | string | undefined; + calcMode?: number | string | undefined; + capHeight?: number | string | undefined; + clip?: number | string | undefined; + clipPath?: string | undefined; + clipPathUnits?: number | string | undefined; + clipRule?: number | string | undefined; + colorInterpolation?: number | string | undefined; + colorInterpolationFilters?: "auto" | "sRGB" | "linearRGB" | "inherit" | undefined; + colorProfile?: number | string | undefined; + colorRendering?: number | string | undefined; + contentScriptType?: number | string | undefined; + contentStyleType?: number | string | undefined; + cursor?: number | string | undefined; + cx?: number | string | undefined; + cy?: number | string | undefined; + d?: string | undefined; + decelerate?: number | string | undefined; + descent?: number | string | undefined; + diffuseConstant?: number | string | undefined; + direction?: number | string | undefined; + display?: number | string | undefined; + divisor?: number | string | undefined; + dominantBaseline?: number | string | undefined; + dur?: number | string | undefined; + dx?: number | string | undefined; + dy?: number | string | undefined; + edgeMode?: number | string | undefined; + elevation?: number | string | undefined; + enableBackground?: number | string | undefined; + end?: number | string | undefined; + exponent?: number | string | undefined; + externalResourcesRequired?: Booleanish | undefined; + fill?: string | undefined; + fillOpacity?: number | string | undefined; + fillRule?: "nonzero" | "evenodd" | "inherit" | undefined; + filter?: string | undefined; + filterRes?: number | string | undefined; + filterUnits?: number | string | undefined; + floodColor?: number | string | undefined; + floodOpacity?: number | string | undefined; + focusable?: Booleanish | "auto" | undefined; + fontFamily?: string | undefined; + fontSize?: number | string | undefined; + fontSizeAdjust?: number | string | undefined; + fontStretch?: number | string | undefined; + fontStyle?: number | string | undefined; + fontVariant?: number | string | undefined; + fontWeight?: number | string | undefined; + format?: number | string | undefined; + fr?: number | string | undefined; + from?: number | string | undefined; + fx?: number | string | undefined; + fy?: number | string | undefined; + g1?: number | string | undefined; + g2?: number | string | undefined; + glyphName?: number | string | undefined; + glyphOrientationHorizontal?: number | string | undefined; + glyphOrientationVertical?: number | string | undefined; + glyphRef?: number | string | undefined; + gradientTransform?: string | undefined; + gradientUnits?: string | undefined; + hanging?: number | string | undefined; + horizAdvX?: number | string | undefined; + horizOriginX?: number | string | undefined; + href?: string | undefined; + ideographic?: number | string | undefined; + imageRendering?: number | string | undefined; + in2?: number | string | undefined; + in?: string | undefined; + intercept?: number | string | undefined; + k1?: number | string | undefined; + k2?: number | string | undefined; + k3?: number | string | undefined; + k4?: number | string | undefined; + k?: number | string | undefined; + kernelMatrix?: number | string | undefined; + kernelUnitLength?: number | string | undefined; + kerning?: number | string | undefined; + keyPoints?: number | string | undefined; + keySplines?: number | string | undefined; + keyTimes?: number | string | undefined; + lengthAdjust?: number | string | undefined; + letterSpacing?: number | string | undefined; + lightingColor?: number | string | undefined; + limitingConeAngle?: number | string | undefined; + local?: number | string | undefined; + markerEnd?: string | undefined; + markerHeight?: number | string | undefined; + markerMid?: string | undefined; + markerStart?: string | undefined; + markerUnits?: number | string | undefined; + markerWidth?: number | string | undefined; + mask?: string | undefined; + maskContentUnits?: number | string | undefined; + maskUnits?: number | string | undefined; + mathematical?: number | string | undefined; + mode?: number | string | undefined; + numOctaves?: number | string | undefined; + offset?: number | string | undefined; + opacity?: number | string | undefined; + operator?: number | string | undefined; + order?: number | string | undefined; + orient?: number | string | undefined; + orientation?: number | string | undefined; + origin?: number | string | undefined; + overflow?: number | string | undefined; + overlinePosition?: number | string | undefined; + overlineThickness?: number | string | undefined; + paintOrder?: number | string | undefined; + panose1?: number | string | undefined; + path?: string | undefined; + pathLength?: number | string | undefined; + patternContentUnits?: string | undefined; + patternTransform?: number | string | undefined; + patternUnits?: string | undefined; + pointerEvents?: number | string | undefined; + points?: string | undefined; + pointsAtX?: number | string | undefined; + pointsAtY?: number | string | undefined; + pointsAtZ?: number | string | undefined; + preserveAlpha?: Booleanish | undefined; + preserveAspectRatio?: string | undefined; + primitiveUnits?: number | string | undefined; + r?: number | string | undefined; + radius?: number | string | undefined; + refX?: number | string | undefined; + refY?: number | string | undefined; + renderingIntent?: number | string | undefined; + repeatCount?: number | string | undefined; + repeatDur?: number | string | undefined; + requiredExtensions?: number | string | undefined; + requiredFeatures?: number | string | undefined; + restart?: number | string | undefined; + result?: string | undefined; + rotate?: number | string | undefined; + rx?: number | string | undefined; + ry?: number | string | undefined; + scale?: number | string | undefined; + seed?: number | string | undefined; + shapeRendering?: number | string | undefined; + slope?: number | string | undefined; + spacing?: number | string | undefined; + specularConstant?: number | string | undefined; + specularExponent?: number | string | undefined; + speed?: number | string | undefined; + spreadMethod?: string | undefined; + startOffset?: number | string | undefined; + stdDeviation?: number | string | undefined; + stemh?: number | string | undefined; + stemv?: number | string | undefined; + stitchTiles?: number | string | undefined; + stopColor?: string | undefined; + stopOpacity?: number | string | undefined; + strikethroughPosition?: number | string | undefined; + strikethroughThickness?: number | string | undefined; + string?: number | string | undefined; + stroke?: string | undefined; + strokeDasharray?: string | number | undefined; + strokeDashoffset?: string | number | undefined; + strokeLinecap?: "butt" | "round" | "square" | "inherit" | undefined; + strokeLinejoin?: "miter" | "round" | "bevel" | "inherit" | undefined; + strokeMiterlimit?: number | string | undefined; + strokeOpacity?: number | string | undefined; + strokeWidth?: number | string | undefined; + surfaceScale?: number | string | undefined; + systemLanguage?: number | string | undefined; + tableValues?: number | string | undefined; + targetX?: number | string | undefined; + targetY?: number | string | undefined; + textAnchor?: string | undefined; + textDecoration?: number | string | undefined; + textLength?: number | string | undefined; + textRendering?: number | string | undefined; + to?: number | string | undefined; + transform?: string | undefined; + u1?: number | string | undefined; + u2?: number | string | undefined; + underlinePosition?: number | string | undefined; + underlineThickness?: number | string | undefined; + unicode?: number | string | undefined; + unicodeBidi?: number | string | undefined; + unicodeRange?: number | string | undefined; + unitsPerEm?: number | string | undefined; + vAlphabetic?: number | string | undefined; + values?: string | undefined; + vectorEffect?: number | string | undefined; + version?: string | undefined; + vertAdvY?: number | string | undefined; + vertOriginX?: number | string | undefined; + vertOriginY?: number | string | undefined; + vHanging?: number | string | undefined; + vIdeographic?: number | string | undefined; + viewBox?: string | undefined; + viewTarget?: number | string | undefined; + visibility?: number | string | undefined; + vMathematical?: number | string | undefined; + widths?: number | string | undefined; + wordSpacing?: number | string | undefined; + writingMode?: number | string | undefined; + x1?: number | string | undefined; + x2?: number | string | undefined; + x?: number | string | undefined; + xChannelSelector?: string | undefined; + xHeight?: number | string | undefined; + xlinkActuate?: string | undefined; + xlinkArcrole?: string | undefined; + xlinkHref?: string | undefined; + xlinkRole?: string | undefined; + xlinkShow?: string | undefined; + xlinkTitle?: string | undefined; + xlinkType?: string | undefined; + xmlBase?: string | undefined; + xmlLang?: string | undefined; + xmlns?: string | undefined; + xmlnsXlink?: string | undefined; + xmlSpace?: string | undefined; + y1?: number | string | undefined; + y2?: number | string | undefined; + y?: number | string | undefined; + yChannelSelector?: string | undefined; + z?: number | string | undefined; + zoomAndPan?: string | undefined; + } + + interface WebViewHTMLAttributes extends HTMLAttributes { + allowFullScreen?: boolean | undefined; + allowpopups?: boolean | undefined; + autosize?: boolean | undefined; + blinkfeatures?: string | undefined; + disableblinkfeatures?: string | undefined; + disableguestresize?: boolean | undefined; + disablewebsecurity?: boolean | undefined; + guestinstance?: string | undefined; + httpreferrer?: string | undefined; + nodeintegration?: boolean | undefined; + partition?: string | undefined; + plugins?: boolean | undefined; + preload?: string | undefined; + src?: string | undefined; + useragent?: string | undefined; + webpreferences?: string | undefined; + } + + // + // React.DOM + // ---------------------------------------------------------------------- + + interface ReactHTML { + a: DetailedHTMLFactory, HTMLAnchorElement>; + abbr: DetailedHTMLFactory, HTMLElement>; + address: DetailedHTMLFactory, HTMLElement>; + area: DetailedHTMLFactory, HTMLAreaElement>; + article: DetailedHTMLFactory, HTMLElement>; + aside: DetailedHTMLFactory, HTMLElement>; + audio: DetailedHTMLFactory, HTMLAudioElement>; + b: DetailedHTMLFactory, HTMLElement>; + base: DetailedHTMLFactory, HTMLBaseElement>; + bdi: DetailedHTMLFactory, HTMLElement>; + bdo: DetailedHTMLFactory, HTMLElement>; + big: DetailedHTMLFactory, HTMLElement>; + blockquote: DetailedHTMLFactory, HTMLQuoteElement>; + body: DetailedHTMLFactory, HTMLBodyElement>; + br: DetailedHTMLFactory, HTMLBRElement>; + button: DetailedHTMLFactory, HTMLButtonElement>; + canvas: DetailedHTMLFactory, HTMLCanvasElement>; + caption: DetailedHTMLFactory, HTMLElement>; + center: DetailedHTMLFactory, HTMLElement>; + cite: DetailedHTMLFactory, HTMLElement>; + code: DetailedHTMLFactory, HTMLElement>; + col: DetailedHTMLFactory, HTMLTableColElement>; + colgroup: DetailedHTMLFactory, HTMLTableColElement>; + data: DetailedHTMLFactory, HTMLDataElement>; + datalist: DetailedHTMLFactory, HTMLDataListElement>; + dd: DetailedHTMLFactory, HTMLElement>; + del: DetailedHTMLFactory, HTMLModElement>; + details: DetailedHTMLFactory, HTMLDetailsElement>; + dfn: DetailedHTMLFactory, HTMLElement>; + dialog: DetailedHTMLFactory, HTMLDialogElement>; + div: DetailedHTMLFactory, HTMLDivElement>; + dl: DetailedHTMLFactory, HTMLDListElement>; + dt: DetailedHTMLFactory, HTMLElement>; + em: DetailedHTMLFactory, HTMLElement>; + embed: DetailedHTMLFactory, HTMLEmbedElement>; + fieldset: DetailedHTMLFactory, HTMLFieldSetElement>; + figcaption: DetailedHTMLFactory, HTMLElement>; + figure: DetailedHTMLFactory, HTMLElement>; + footer: DetailedHTMLFactory, HTMLElement>; + form: DetailedHTMLFactory, HTMLFormElement>; + h1: DetailedHTMLFactory, HTMLHeadingElement>; + h2: DetailedHTMLFactory, HTMLHeadingElement>; + h3: DetailedHTMLFactory, HTMLHeadingElement>; + h4: DetailedHTMLFactory, HTMLHeadingElement>; + h5: DetailedHTMLFactory, HTMLHeadingElement>; + h6: DetailedHTMLFactory, HTMLHeadingElement>; + head: DetailedHTMLFactory, HTMLHeadElement>; + header: DetailedHTMLFactory, HTMLElement>; + hgroup: DetailedHTMLFactory, HTMLElement>; + hr: DetailedHTMLFactory, HTMLHRElement>; + html: DetailedHTMLFactory, HTMLHtmlElement>; + i: DetailedHTMLFactory, HTMLElement>; + iframe: DetailedHTMLFactory, HTMLIFrameElement>; + img: DetailedHTMLFactory, HTMLImageElement>; + input: DetailedHTMLFactory, HTMLInputElement>; + ins: DetailedHTMLFactory, HTMLModElement>; + kbd: DetailedHTMLFactory, HTMLElement>; + keygen: DetailedHTMLFactory, HTMLElement>; + label: DetailedHTMLFactory, HTMLLabelElement>; + legend: DetailedHTMLFactory, HTMLLegendElement>; + li: DetailedHTMLFactory, HTMLLIElement>; + link: DetailedHTMLFactory, HTMLLinkElement>; + main: DetailedHTMLFactory, HTMLElement>; + map: DetailedHTMLFactory, HTMLMapElement>; + mark: DetailedHTMLFactory, HTMLElement>; + menu: DetailedHTMLFactory, HTMLElement>; + menuitem: DetailedHTMLFactory, HTMLElement>; + meta: DetailedHTMLFactory, HTMLMetaElement>; + meter: DetailedHTMLFactory, HTMLMeterElement>; + nav: DetailedHTMLFactory, HTMLElement>; + noscript: DetailedHTMLFactory, HTMLElement>; + object: DetailedHTMLFactory, HTMLObjectElement>; + ol: DetailedHTMLFactory, HTMLOListElement>; + optgroup: DetailedHTMLFactory, HTMLOptGroupElement>; + option: DetailedHTMLFactory, HTMLOptionElement>; + output: DetailedHTMLFactory, HTMLOutputElement>; + p: DetailedHTMLFactory, HTMLParagraphElement>; + param: DetailedHTMLFactory, HTMLParamElement>; + picture: DetailedHTMLFactory, HTMLElement>; + pre: DetailedHTMLFactory, HTMLPreElement>; + progress: DetailedHTMLFactory, HTMLProgressElement>; + q: DetailedHTMLFactory, HTMLQuoteElement>; + rp: DetailedHTMLFactory, HTMLElement>; + rt: DetailedHTMLFactory, HTMLElement>; + ruby: DetailedHTMLFactory, HTMLElement>; + s: DetailedHTMLFactory, HTMLElement>; + samp: DetailedHTMLFactory, HTMLElement>; + search: DetailedHTMLFactory, HTMLElement>; + slot: DetailedHTMLFactory, HTMLSlotElement>; + script: DetailedHTMLFactory, HTMLScriptElement>; + section: DetailedHTMLFactory, HTMLElement>; + select: DetailedHTMLFactory, HTMLSelectElement>; + small: DetailedHTMLFactory, HTMLElement>; + source: DetailedHTMLFactory, HTMLSourceElement>; + span: DetailedHTMLFactory, HTMLSpanElement>; + strong: DetailedHTMLFactory, HTMLElement>; + style: DetailedHTMLFactory, HTMLStyleElement>; + sub: DetailedHTMLFactory, HTMLElement>; + summary: DetailedHTMLFactory, HTMLElement>; + sup: DetailedHTMLFactory, HTMLElement>; + table: DetailedHTMLFactory, HTMLTableElement>; + template: DetailedHTMLFactory, HTMLTemplateElement>; + tbody: DetailedHTMLFactory, HTMLTableSectionElement>; + td: DetailedHTMLFactory, HTMLTableDataCellElement>; + textarea: DetailedHTMLFactory, HTMLTextAreaElement>; + tfoot: DetailedHTMLFactory, HTMLTableSectionElement>; + th: DetailedHTMLFactory, HTMLTableHeaderCellElement>; + thead: DetailedHTMLFactory, HTMLTableSectionElement>; + time: DetailedHTMLFactory, HTMLTimeElement>; + title: DetailedHTMLFactory, HTMLTitleElement>; + tr: DetailedHTMLFactory, HTMLTableRowElement>; + track: DetailedHTMLFactory, HTMLTrackElement>; + u: DetailedHTMLFactory, HTMLElement>; + ul: DetailedHTMLFactory, HTMLUListElement>; + "var": DetailedHTMLFactory, HTMLElement>; + video: DetailedHTMLFactory, HTMLVideoElement>; + wbr: DetailedHTMLFactory, HTMLElement>; + webview: DetailedHTMLFactory, HTMLWebViewElement>; + } + + interface ReactSVG { + animate: SVGFactory; + circle: SVGFactory; + clipPath: SVGFactory; + defs: SVGFactory; + desc: SVGFactory; + ellipse: SVGFactory; + feBlend: SVGFactory; + feColorMatrix: SVGFactory; + feComponentTransfer: SVGFactory; + feComposite: SVGFactory; + feConvolveMatrix: SVGFactory; + feDiffuseLighting: SVGFactory; + feDisplacementMap: SVGFactory; + feDistantLight: SVGFactory; + feDropShadow: SVGFactory; + feFlood: SVGFactory; + feFuncA: SVGFactory; + feFuncB: SVGFactory; + feFuncG: SVGFactory; + feFuncR: SVGFactory; + feGaussianBlur: SVGFactory; + feImage: SVGFactory; + feMerge: SVGFactory; + feMergeNode: SVGFactory; + feMorphology: SVGFactory; + feOffset: SVGFactory; + fePointLight: SVGFactory; + feSpecularLighting: SVGFactory; + feSpotLight: SVGFactory; + feTile: SVGFactory; + feTurbulence: SVGFactory; + filter: SVGFactory; + foreignObject: SVGFactory; + g: SVGFactory; + image: SVGFactory; + line: SVGFactory; + linearGradient: SVGFactory; + marker: SVGFactory; + mask: SVGFactory; + metadata: SVGFactory; + path: SVGFactory; + pattern: SVGFactory; + polygon: SVGFactory; + polyline: SVGFactory; + radialGradient: SVGFactory; + rect: SVGFactory; + stop: SVGFactory; + svg: SVGFactory; + switch: SVGFactory; + symbol: SVGFactory; + text: SVGFactory; + textPath: SVGFactory; + tspan: SVGFactory; + use: SVGFactory; + view: SVGFactory; + } + + interface ReactDOM extends ReactHTML, ReactSVG {} + + // + // React.PropTypes + // ---------------------------------------------------------------------- + + /** + * @deprecated Use `Validator` from the ´prop-types` instead. + */ + type Validator = PropTypes.Validator; + + /** + * @deprecated Use `Requireable` from the ´prop-types` instead. + */ + type Requireable = PropTypes.Requireable; + + /** + * @deprecated Use `ValidationMap` from the ´prop-types` instead. + */ + type ValidationMap = PropTypes.ValidationMap; + + /** + * @deprecated Use `WeakValidationMap` from the ´prop-types` instead. + */ + type WeakValidationMap = { + [K in keyof T]?: null extends T[K] ? Validator + : undefined extends T[K] ? Validator + : Validator; + }; + + /** + * @deprecated Use `PropTypes.*` where `PropTypes` comes from `import * as PropTypes from 'prop-types'` instead. + */ + interface ReactPropTypes { + any: typeof PropTypes.any; + array: typeof PropTypes.array; + bool: typeof PropTypes.bool; + func: typeof PropTypes.func; + number: typeof PropTypes.number; + object: typeof PropTypes.object; + string: typeof PropTypes.string; + node: typeof PropTypes.node; + element: typeof PropTypes.element; + instanceOf: typeof PropTypes.instanceOf; + oneOf: typeof PropTypes.oneOf; + oneOfType: typeof PropTypes.oneOfType; + arrayOf: typeof PropTypes.arrayOf; + objectOf: typeof PropTypes.objectOf; + shape: typeof PropTypes.shape; + exact: typeof PropTypes.exact; + } + + // + // React.Children + // ---------------------------------------------------------------------- + + /** + * @deprecated - Use `typeof React.Children` instead. + */ + // Sync with type of `const Children`. + interface ReactChildren { + map( + children: C | readonly C[], + fn: (child: C, index: number) => T, + ): C extends null | undefined ? C : Array>; + forEach(children: C | readonly C[], fn: (child: C, index: number) => void): void; + count(children: any): number; + only(children: C): C extends any[] ? never : C; + toArray(children: ReactNode | ReactNode[]): Array>; + } + + // + // Browser Interfaces + // https://github.com/nikeee/2048-typescript/blob/master/2048/js/touch.d.ts + // ---------------------------------------------------------------------- + + interface AbstractView { + styleMedia: StyleMedia; + document: Document; + } + + interface Touch { + identifier: number; + target: EventTarget; + screenX: number; + screenY: number; + clientX: number; + clientY: number; + pageX: number; + pageY: number; + } + + interface TouchList { + [index: number]: Touch; + length: number; + item(index: number): Touch; + identifiedTouch(identifier: number): Touch; + } + + // + // Error Interfaces + // ---------------------------------------------------------------------- + interface ErrorInfo { + /** + * Captures which component contained the exception, and its ancestors. + */ + componentStack?: string | null; + digest?: string | null; + } + + // Keep in sync with JSX namespace in ./jsx-runtime.d.ts and ./jsx-dev-runtime.d.ts + namespace JSX { + type ElementType = GlobalJSXElementType; + interface Element extends GlobalJSXElement {} + interface ElementClass extends GlobalJSXElementClass {} + interface ElementAttributesProperty extends GlobalJSXElementAttributesProperty {} + interface ElementChildrenAttribute extends GlobalJSXElementChildrenAttribute {} + + type LibraryManagedAttributes = GlobalJSXLibraryManagedAttributes; + + interface IntrinsicAttributes extends GlobalJSXIntrinsicAttributes {} + interface IntrinsicClassAttributes extends GlobalJSXIntrinsicClassAttributes {} + interface IntrinsicElements extends GlobalJSXIntrinsicElements {} + } +} + +// naked 'any' type in a conditional type will short circuit and union both the then/else branches +// so boolean is only resolved for T = any +type IsExactlyAny = boolean extends (T extends never ? true : false) ? true : false; + +type ExactlyAnyPropertyKeys = { [K in keyof T]: IsExactlyAny extends true ? K : never }[keyof T]; +type NotExactlyAnyPropertyKeys = Exclude>; + +// Try to resolve ill-defined props like for JS users: props can be any, or sometimes objects with properties of type any +type MergePropTypes = + // Distribute over P in case it is a union type + P extends any + // If props is type any, use propTypes definitions + ? IsExactlyAny

extends true ? T + // If declared props have indexed properties, ignore inferred props entirely as keyof gets widened + : string extends keyof P ? P + // Prefer declared types which are not exactly any + : + & Pick> + // For props which are exactly any, use the type inferred from propTypes if present + & Pick>> + // Keep leftover props not specified in propTypes + & Pick> + : never; + +type InexactPartial = { [K in keyof T]?: T[K] | undefined }; + +// Any prop that has a default prop becomes optional, but its type is unchanged +// Undeclared default props are augmented into the resulting allowable attributes +// If declared props have indexed properties, ignore default props entirely as keyof gets widened +// Wrap in an outer-level conditional type to allow distribution over props that are unions +type Defaultize = P extends any ? string extends keyof P ? P + : + & Pick> + & InexactPartial>> + & InexactPartial>> + : never; + +type ReactManagedAttributes = C extends { propTypes: infer T; defaultProps: infer D } + ? Defaultize>, D> + : C extends { propTypes: infer T } ? MergePropTypes> + : C extends { defaultProps: infer D } ? Defaultize + : P; + +declare global { + /** + * @deprecated Use `React.JSX` instead of the global `JSX` namespace. + */ + namespace JSX { + // We don't just alias React.ElementType because React.ElementType + // historically does more than we need it to. + // E.g. it also contains .propTypes and so TS also verifies the declared + // props type does match the declared .propTypes. + // But if libraries declared their .propTypes but not props type, + // or they mismatch, you won't be able to use the class component + // as a JSX.ElementType. + // We could fix this everywhere but we're ultimately not interested in + // .propTypes assignability so we might as well drop it entirely here to + // reduce the work of the type-checker. + // TODO: Check impact of making React.ElementType

= React.JSXElementConstructor

+ type ElementType = string | React.JSXElementConstructor; + interface Element extends React.ReactElement {} + interface ElementClass extends React.Component { + render(): React.ReactNode; + } + interface ElementAttributesProperty { + props: {}; + } + interface ElementChildrenAttribute { + children: {}; + } + + // We can't recurse forever because `type` can't be self-referential; + // let's assume it's reasonable to do a single React.lazy() around a single React.memo() / vice-versa + type LibraryManagedAttributes = C extends + React.MemoExoticComponent | React.LazyExoticComponent + ? T extends React.MemoExoticComponent | React.LazyExoticComponent + ? ReactManagedAttributes + : ReactManagedAttributes + : ReactManagedAttributes; + + interface IntrinsicAttributes extends React.Attributes {} + interface IntrinsicClassAttributes extends React.ClassAttributes {} + + interface IntrinsicElements { + // HTML + a: React.DetailedHTMLProps, HTMLAnchorElement>; + abbr: React.DetailedHTMLProps, HTMLElement>; + address: React.DetailedHTMLProps, HTMLElement>; + area: React.DetailedHTMLProps, HTMLAreaElement>; + article: React.DetailedHTMLProps, HTMLElement>; + aside: React.DetailedHTMLProps, HTMLElement>; + audio: React.DetailedHTMLProps, HTMLAudioElement>; + b: React.DetailedHTMLProps, HTMLElement>; + base: React.DetailedHTMLProps, HTMLBaseElement>; + bdi: React.DetailedHTMLProps, HTMLElement>; + bdo: React.DetailedHTMLProps, HTMLElement>; + big: React.DetailedHTMLProps, HTMLElement>; + blockquote: React.DetailedHTMLProps, HTMLQuoteElement>; + body: React.DetailedHTMLProps, HTMLBodyElement>; + br: React.DetailedHTMLProps, HTMLBRElement>; + button: React.DetailedHTMLProps, HTMLButtonElement>; + canvas: React.DetailedHTMLProps, HTMLCanvasElement>; + caption: React.DetailedHTMLProps, HTMLElement>; + center: React.DetailedHTMLProps, HTMLElement>; + cite: React.DetailedHTMLProps, HTMLElement>; + code: React.DetailedHTMLProps, HTMLElement>; + col: React.DetailedHTMLProps, HTMLTableColElement>; + colgroup: React.DetailedHTMLProps, HTMLTableColElement>; + data: React.DetailedHTMLProps, HTMLDataElement>; + datalist: React.DetailedHTMLProps, HTMLDataListElement>; + dd: React.DetailedHTMLProps, HTMLElement>; + del: React.DetailedHTMLProps, HTMLModElement>; + details: React.DetailedHTMLProps, HTMLDetailsElement>; + dfn: React.DetailedHTMLProps, HTMLElement>; + dialog: React.DetailedHTMLProps, HTMLDialogElement>; + div: React.DetailedHTMLProps, HTMLDivElement>; + dl: React.DetailedHTMLProps, HTMLDListElement>; + dt: React.DetailedHTMLProps, HTMLElement>; + em: React.DetailedHTMLProps, HTMLElement>; + embed: React.DetailedHTMLProps, HTMLEmbedElement>; + fieldset: React.DetailedHTMLProps, HTMLFieldSetElement>; + figcaption: React.DetailedHTMLProps, HTMLElement>; + figure: React.DetailedHTMLProps, HTMLElement>; + footer: React.DetailedHTMLProps, HTMLElement>; + form: React.DetailedHTMLProps, HTMLFormElement>; + h1: React.DetailedHTMLProps, HTMLHeadingElement>; + h2: React.DetailedHTMLProps, HTMLHeadingElement>; + h3: React.DetailedHTMLProps, HTMLHeadingElement>; + h4: React.DetailedHTMLProps, HTMLHeadingElement>; + h5: React.DetailedHTMLProps, HTMLHeadingElement>; + h6: React.DetailedHTMLProps, HTMLHeadingElement>; + head: React.DetailedHTMLProps, HTMLHeadElement>; + header: React.DetailedHTMLProps, HTMLElement>; + hgroup: React.DetailedHTMLProps, HTMLElement>; + hr: React.DetailedHTMLProps, HTMLHRElement>; + html: React.DetailedHTMLProps, HTMLHtmlElement>; + i: React.DetailedHTMLProps, HTMLElement>; + iframe: React.DetailedHTMLProps, HTMLIFrameElement>; + img: React.DetailedHTMLProps, HTMLImageElement>; + input: React.DetailedHTMLProps, HTMLInputElement>; + ins: React.DetailedHTMLProps, HTMLModElement>; + kbd: React.DetailedHTMLProps, HTMLElement>; + keygen: React.DetailedHTMLProps, HTMLElement>; + label: React.DetailedHTMLProps, HTMLLabelElement>; + legend: React.DetailedHTMLProps, HTMLLegendElement>; + li: React.DetailedHTMLProps, HTMLLIElement>; + link: React.DetailedHTMLProps, HTMLLinkElement>; + main: React.DetailedHTMLProps, HTMLElement>; + map: React.DetailedHTMLProps, HTMLMapElement>; + mark: React.DetailedHTMLProps, HTMLElement>; + menu: React.DetailedHTMLProps, HTMLElement>; + menuitem: React.DetailedHTMLProps, HTMLElement>; + meta: React.DetailedHTMLProps, HTMLMetaElement>; + meter: React.DetailedHTMLProps, HTMLMeterElement>; + nav: React.DetailedHTMLProps, HTMLElement>; + noindex: React.DetailedHTMLProps, HTMLElement>; + noscript: React.DetailedHTMLProps, HTMLElement>; + object: React.DetailedHTMLProps, HTMLObjectElement>; + ol: React.DetailedHTMLProps, HTMLOListElement>; + optgroup: React.DetailedHTMLProps, HTMLOptGroupElement>; + option: React.DetailedHTMLProps, HTMLOptionElement>; + output: React.DetailedHTMLProps, HTMLOutputElement>; + p: React.DetailedHTMLProps, HTMLParagraphElement>; + param: React.DetailedHTMLProps, HTMLParamElement>; + picture: React.DetailedHTMLProps, HTMLElement>; + pre: React.DetailedHTMLProps, HTMLPreElement>; + progress: React.DetailedHTMLProps, HTMLProgressElement>; + q: React.DetailedHTMLProps, HTMLQuoteElement>; + rp: React.DetailedHTMLProps, HTMLElement>; + rt: React.DetailedHTMLProps, HTMLElement>; + ruby: React.DetailedHTMLProps, HTMLElement>; + s: React.DetailedHTMLProps, HTMLElement>; + samp: React.DetailedHTMLProps, HTMLElement>; + search: React.DetailedHTMLProps, HTMLElement>; + slot: React.DetailedHTMLProps, HTMLSlotElement>; + script: React.DetailedHTMLProps, HTMLScriptElement>; + section: React.DetailedHTMLProps, HTMLElement>; + select: React.DetailedHTMLProps, HTMLSelectElement>; + small: React.DetailedHTMLProps, HTMLElement>; + source: React.DetailedHTMLProps, HTMLSourceElement>; + span: React.DetailedHTMLProps, HTMLSpanElement>; + strong: React.DetailedHTMLProps, HTMLElement>; + style: React.DetailedHTMLProps, HTMLStyleElement>; + sub: React.DetailedHTMLProps, HTMLElement>; + summary: React.DetailedHTMLProps, HTMLElement>; + sup: React.DetailedHTMLProps, HTMLElement>; + table: React.DetailedHTMLProps, HTMLTableElement>; + template: React.DetailedHTMLProps, HTMLTemplateElement>; + tbody: React.DetailedHTMLProps, HTMLTableSectionElement>; + td: React.DetailedHTMLProps, HTMLTableDataCellElement>; + textarea: React.DetailedHTMLProps, HTMLTextAreaElement>; + tfoot: React.DetailedHTMLProps, HTMLTableSectionElement>; + th: React.DetailedHTMLProps, HTMLTableHeaderCellElement>; + thead: React.DetailedHTMLProps, HTMLTableSectionElement>; + time: React.DetailedHTMLProps, HTMLTimeElement>; + title: React.DetailedHTMLProps, HTMLTitleElement>; + tr: React.DetailedHTMLProps, HTMLTableRowElement>; + track: React.DetailedHTMLProps, HTMLTrackElement>; + u: React.DetailedHTMLProps, HTMLElement>; + ul: React.DetailedHTMLProps, HTMLUListElement>; + "var": React.DetailedHTMLProps, HTMLElement>; + video: React.DetailedHTMLProps, HTMLVideoElement>; + wbr: React.DetailedHTMLProps, HTMLElement>; + webview: React.DetailedHTMLProps, HTMLWebViewElement>; + + // SVG + svg: React.SVGProps; + + animate: React.SVGProps; // TODO: It is SVGAnimateElement but is not in TypeScript's lib.dom.d.ts for now. + animateMotion: React.SVGProps; + animateTransform: React.SVGProps; // TODO: It is SVGAnimateTransformElement but is not in TypeScript's lib.dom.d.ts for now. + circle: React.SVGProps; + clipPath: React.SVGProps; + defs: React.SVGProps; + desc: React.SVGProps; + ellipse: React.SVGProps; + feBlend: React.SVGProps; + feColorMatrix: React.SVGProps; + feComponentTransfer: React.SVGProps; + feComposite: React.SVGProps; + feConvolveMatrix: React.SVGProps; + feDiffuseLighting: React.SVGProps; + feDisplacementMap: React.SVGProps; + feDistantLight: React.SVGProps; + feDropShadow: React.SVGProps; + feFlood: React.SVGProps; + feFuncA: React.SVGProps; + feFuncB: React.SVGProps; + feFuncG: React.SVGProps; + feFuncR: React.SVGProps; + feGaussianBlur: React.SVGProps; + feImage: React.SVGProps; + feMerge: React.SVGProps; + feMergeNode: React.SVGProps; + feMorphology: React.SVGProps; + feOffset: React.SVGProps; + fePointLight: React.SVGProps; + feSpecularLighting: React.SVGProps; + feSpotLight: React.SVGProps; + feTile: React.SVGProps; + feTurbulence: React.SVGProps; + filter: React.SVGProps; + foreignObject: React.SVGProps; + g: React.SVGProps; + image: React.SVGProps; + line: React.SVGLineElementAttributes; + linearGradient: React.SVGProps; + marker: React.SVGProps; + mask: React.SVGProps; + metadata: React.SVGProps; + mpath: React.SVGProps; + path: React.SVGProps; + pattern: React.SVGProps; + polygon: React.SVGProps; + polyline: React.SVGProps; + radialGradient: React.SVGProps; + rect: React.SVGProps; + set: React.SVGProps; + stop: React.SVGProps; + switch: React.SVGProps; + symbol: React.SVGProps; + text: React.SVGTextElementAttributes; + textPath: React.SVGProps; + tspan: React.SVGProps; + use: React.SVGProps; + view: React.SVGProps; + } + } +} + +// React.JSX needs to point to global.JSX to keep global module augmentations intact. +// But we can't access global.JSX so we need to create these aliases instead. +// Once the global JSX namespace will be removed we replace React.JSX with the contents of global.JSX +type GlobalJSXElementType = JSX.ElementType; +interface GlobalJSXElement extends JSX.Element {} +interface GlobalJSXElementClass extends JSX.ElementClass {} +interface GlobalJSXElementAttributesProperty extends JSX.ElementAttributesProperty {} +interface GlobalJSXElementChildrenAttribute extends JSX.ElementChildrenAttribute {} + +type GlobalJSXLibraryManagedAttributes = JSX.LibraryManagedAttributes; + +interface GlobalJSXIntrinsicAttributes extends JSX.IntrinsicAttributes {} +interface GlobalJSXIntrinsicClassAttributes extends JSX.IntrinsicClassAttributes {} + +interface GlobalJSXIntrinsicElements extends JSX.IntrinsicElements {} diff --git a/node_modules/@types/react/jsx-dev-runtime.d.ts b/node_modules/@types/react/jsx-dev-runtime.d.ts new file mode 100644 index 0000000..d28644c --- /dev/null +++ b/node_modules/@types/react/jsx-dev-runtime.d.ts @@ -0,0 +1,45 @@ +import * as React from "./"; +export { Fragment } from "./"; + +export namespace JSX { + type ElementType = React.JSX.ElementType; + interface Element extends React.JSX.Element {} + interface ElementClass extends React.JSX.ElementClass {} + interface ElementAttributesProperty extends React.JSX.ElementAttributesProperty {} + interface ElementChildrenAttribute extends React.JSX.ElementChildrenAttribute {} + type LibraryManagedAttributes = React.JSX.LibraryManagedAttributes; + interface IntrinsicAttributes extends React.JSX.IntrinsicAttributes {} + interface IntrinsicClassAttributes extends React.JSX.IntrinsicClassAttributes {} + interface IntrinsicElements extends React.JSX.IntrinsicElements {} +} + +export interface JSXSource { + /** + * The source file where the element originates from. + */ + fileName?: string | undefined; + + /** + * The line number where the element was created. + */ + lineNumber?: number | undefined; + + /** + * The column number where the element was created. + */ + columnNumber?: number | undefined; +} + +/** + * Create a React element. + * + * You should not use this function directly. Use JSX and a transpiler instead. + */ +export function jsxDEV( + type: React.ElementType, + props: unknown, + key: React.Key | undefined, + isStatic: boolean, + source?: JSXSource, + self?: unknown, +): React.ReactElement; diff --git a/node_modules/@types/react/jsx-runtime.d.ts b/node_modules/@types/react/jsx-runtime.d.ts new file mode 100644 index 0000000..e9fea27 --- /dev/null +++ b/node_modules/@types/react/jsx-runtime.d.ts @@ -0,0 +1,36 @@ +import * as React from "./"; +export { Fragment } from "./"; + +export namespace JSX { + type ElementType = React.JSX.ElementType; + interface Element extends React.JSX.Element {} + interface ElementClass extends React.JSX.ElementClass {} + interface ElementAttributesProperty extends React.JSX.ElementAttributesProperty {} + interface ElementChildrenAttribute extends React.JSX.ElementChildrenAttribute {} + type LibraryManagedAttributes = React.JSX.LibraryManagedAttributes; + interface IntrinsicAttributes extends React.JSX.IntrinsicAttributes {} + interface IntrinsicClassAttributes extends React.JSX.IntrinsicClassAttributes {} + interface IntrinsicElements extends React.JSX.IntrinsicElements {} +} + +/** + * Create a React element. + * + * You should not use this function directly. Use JSX and a transpiler instead. + */ +export function jsx( + type: React.ElementType, + props: unknown, + key?: React.Key, +): React.ReactElement; + +/** + * Create a React element. + * + * You should not use this function directly. Use JSX and a transpiler instead. + */ +export function jsxs( + type: React.ElementType, + props: unknown, + key?: React.Key, +): React.ReactElement; diff --git a/node_modules/@types/react/package.json b/node_modules/@types/react/package.json new file mode 100644 index 0000000..44e5b62 --- /dev/null +++ b/node_modules/@types/react/package.json @@ -0,0 +1,210 @@ +{ + "name": "@types/react", + "version": "18.3.4", + "description": "TypeScript definitions for react", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react", + "license": "MIT", + "contributors": [ + { + "name": "Asana", + "url": "https://asana.com" + }, + { + "name": "AssureSign", + "url": "http://www.assuresign.com" + }, + { + "name": "Microsoft", + "url": "https://microsoft.com" + }, + { + "name": "John Reilly", + "githubUsername": "johnnyreilly", + "url": "https://github.com/johnnyreilly" + }, + { + "name": "Benoit Benezech", + "githubUsername": "bbenezech", + "url": "https://github.com/bbenezech" + }, + { + "name": "Patricio Zavolinsky", + "githubUsername": "pzavolinsky", + "url": "https://github.com/pzavolinsky" + }, + { + "name": "Eric Anderson", + "githubUsername": "ericanderson", + "url": "https://github.com/ericanderson" + }, + { + "name": "Dovydas Navickas", + "githubUsername": "DovydasNavickas", + "url": "https://github.com/DovydasNavickas" + }, + { + "name": "Josh Rutherford", + "githubUsername": "theruther4d", + "url": "https://github.com/theruther4d" + }, + { + "name": "Guilherme Hübner", + "githubUsername": "guilhermehubner", + "url": "https://github.com/guilhermehubner" + }, + { + "name": "Ferdy Budhidharma", + "githubUsername": "ferdaber", + "url": "https://github.com/ferdaber" + }, + { + "name": "Johann Rakotoharisoa", + "githubUsername": "jrakotoharisoa", + "url": "https://github.com/jrakotoharisoa" + }, + { + "name": "Olivier Pascal", + "githubUsername": "pascaloliv", + "url": "https://github.com/pascaloliv" + }, + { + "name": "Martin Hochel", + "githubUsername": "hotell", + "url": "https://github.com/hotell" + }, + { + "name": "Frank Li", + "githubUsername": "franklixuefei", + "url": "https://github.com/franklixuefei" + }, + { + "name": "Jessica Franco", + "githubUsername": "Jessidhia", + "url": "https://github.com/Jessidhia" + }, + { + "name": "Saransh Kataria", + "githubUsername": "saranshkataria", + "url": "https://github.com/saranshkataria" + }, + { + "name": "Kanitkorn Sujautra", + "githubUsername": "lukyth", + "url": "https://github.com/lukyth" + }, + { + "name": "Sebastian Silbermann", + "githubUsername": "eps1lon", + "url": "https://github.com/eps1lon" + }, + { + "name": "Kyle Scully", + "githubUsername": "zieka", + "url": "https://github.com/zieka" + }, + { + "name": "Cong Zhang", + "githubUsername": "dancerphil", + "url": "https://github.com/dancerphil" + }, + { + "name": "Dimitri Mitropoulos", + "githubUsername": "dimitropoulos", + "url": "https://github.com/dimitropoulos" + }, + { + "name": "JongChan Choi", + "githubUsername": "disjukr", + "url": "https://github.com/disjukr" + }, + { + "name": "Victor Magalhães", + "githubUsername": "vhfmag", + "url": "https://github.com/vhfmag" + }, + { + "name": "Dale Tan", + "githubUsername": "hellatan", + "url": "https://github.com/hellatan" + }, + { + "name": "Priyanshu Rav", + "githubUsername": "priyanshurav", + "url": "https://github.com/priyanshurav" + }, + { + "name": "Dmitry Semigradsky", + "githubUsername": "Semigradsky", + "url": "https://github.com/Semigradsky" + }, + { + "name": "Matt Pocock", + "githubUsername": "mattpocock", + "url": "https://github.com/mattpocock" + } + ], + "main": "", + "types": "index.d.ts", + "typesVersions": { + "<=5.0": { + "*": [ + "ts5.0/*" + ] + } + }, + "exports": { + ".": { + "types@<=5.0": { + "default": "./ts5.0/index.d.ts" + }, + "types": { + "default": "./index.d.ts" + } + }, + "./canary": { + "types@<=5.0": { + "default": "./ts5.0/canary.d.ts" + }, + "types": { + "default": "./canary.d.ts" + } + }, + "./experimental": { + "types@<=5.0": { + "default": "./ts5.0/experimental.d.ts" + }, + "types": { + "default": "./experimental.d.ts" + } + }, + "./jsx-runtime": { + "types@<=5.0": { + "default": "./ts5.0/jsx-runtime.d.ts" + }, + "types": { + "default": "./jsx-runtime.d.ts" + } + }, + "./jsx-dev-runtime": { + "types@<=5.0": { + "default": "./ts5.0/jsx-dev-runtime.d.ts" + }, + "types": { + "default": "./jsx-dev-runtime.d.ts" + } + }, + "./package.json": "./package.json" + }, + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/react" + }, + "scripts": {}, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + }, + "typesPublisherContentHash": "ba3791a79e7cc51baa23cc8bd3b97abbea13332ebe70a49c6ac36a1fa08f33f7", + "typeScriptVersion": "4.8" +} \ No newline at end of file diff --git a/node_modules/@types/react/ts5.0/canary.d.ts b/node_modules/@types/react/ts5.0/canary.d.ts new file mode 100644 index 0000000..6e9b801 --- /dev/null +++ b/node_modules/@types/react/ts5.0/canary.d.ts @@ -0,0 +1,157 @@ +/** + * These are types for things that are present in the React `canary` release channel. + * + * To load the types declared here in an actual project, there are three ways. The easiest one, + * if your `tsconfig.json` already has a `"types"` array in the `"compilerOptions"` section, + * is to add `"react/canary"` to the `"types"` array. + * + * Alternatively, a specific import syntax can to be used from a typescript file. + * This module does not exist in reality, which is why the {} is important: + * + * ```ts + * import {} from 'react/canary' + * ``` + * + * It is also possible to include it through a triple-slash reference: + * + * ```ts + * /// + * ``` + * + * Either the import or the reference only needs to appear once, anywhere in the project. + */ + +// See https://github.com/facebook/react/blob/main/packages/react/src/React.js to see how the exports are declared, + +import React = require("."); + +export {}; + +declare const UNDEFINED_VOID_ONLY: unique symbol; +type VoidOrUndefinedOnly = void | { [UNDEFINED_VOID_ONLY]: never }; + +type NativeToggleEvent = ToggleEvent; + +declare module "." { + export type Usable = PromiseLike | Context; + + export function use(usable: Usable): T; + + interface ServerContextJSONArray extends ReadonlyArray {} + export type ServerContextJSONValue = + | string + | boolean + | number + | null + | ServerContextJSONArray + | { [key: string]: ServerContextJSONValue }; + export interface ServerContext { + Provider: Provider; + } + /** + * Accepts a context object (the value returned from `React.createContext` or `React.createServerContext`) and returns the current + * context value, as given by the nearest context provider for the given context. + * + * @version 16.8.0 + * @see https://react.dev/reference/react/useContext + */ + function useContext(context: ServerContext): T; + export function createServerContext( + globalName: string, + defaultValue: T, + ): ServerContext; + + // eslint-disable-next-line @typescript-eslint/ban-types + export function cache(fn: CachedFunction): CachedFunction; + + export function unstable_useCacheRefresh(): () => void; + + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS { + functions: (formData: FormData) => void; + } + + export interface TransitionStartFunction { + /** + * Marks all state updates inside the async function as transitions + * + * @see {https://react.dev/reference/react/useTransition#starttransition} + * + * @param callback + */ + (callback: () => Promise): void; + } + + /** + * Similar to `useTransition` but allows uses where hooks are not available. + * + * @param callback An _asynchronous_ function which causes state updates that can be deferred. + */ + export function startTransition(scope: () => Promise): void; + + export function useOptimistic( + passthrough: State, + ): [State, (action: State | ((pendingState: State) => State)) => void]; + export function useOptimistic( + passthrough: State, + reducer: (state: State, action: Action) => State, + ): [State, (action: Action) => void]; + + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES { + cleanup: () => VoidOrUndefinedOnly; + } + + export function useActionState( + action: (state: Awaited) => State | Promise, + initialState: Awaited, + permalink?: string, + ): [state: Awaited, dispatch: () => void, isPending: boolean]; + export function useActionState( + action: (state: Awaited, payload: Payload) => State | Promise, + initialState: Awaited, + permalink?: string, + ): [state: Awaited, dispatch: (payload: Payload) => void, isPending: boolean]; + + interface DOMAttributes { + // Transition Events + onTransitionCancel?: TransitionEventHandler | undefined; + onTransitionCancelCapture?: TransitionEventHandler | undefined; + onTransitionRun?: TransitionEventHandler | undefined; + onTransitionRunCapture?: TransitionEventHandler | undefined; + onTransitionStart?: TransitionEventHandler | undefined; + onTransitionStartCapture?: TransitionEventHandler | undefined; + } + + type ToggleEventHandler = EventHandler>; + + interface HTMLAttributes { + popover?: "" | "auto" | "manual" | undefined; + popoverTargetAction?: "toggle" | "show" | "hide" | undefined; + popoverTarget?: string | undefined; + onToggle?: ToggleEventHandler | undefined; + onBeforeToggle?: ToggleEventHandler | undefined; + } + + interface ToggleEvent extends SyntheticEvent { + oldState: "closed" | "open"; + newState: "closed" | "open"; + } + + /** + * @internal Use `Awaited` instead + */ + // Helper type to enable `Awaited`. + // Must be a copy of the non-thenables of `ReactNode`. + type AwaitedReactNode = + | ReactElement + | string + | number + | Iterable + | ReactPortal + | boolean + | null + | undefined; + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_REACT_NODES { + promises: Promise; + bigints: bigint; + } +} diff --git a/node_modules/@types/react/ts5.0/experimental.d.ts b/node_modules/@types/react/ts5.0/experimental.d.ts new file mode 100644 index 0000000..a14be61 --- /dev/null +++ b/node_modules/@types/react/ts5.0/experimental.d.ts @@ -0,0 +1,127 @@ +/** + * These are types for things that are present in the `experimental` builds of React but not yet + * on a stable build. + * + * Once they are promoted to stable they can just be moved to the main index file. + * + * To load the types declared here in an actual project, there are three ways. The easiest one, + * if your `tsconfig.json` already has a `"types"` array in the `"compilerOptions"` section, + * is to add `"react/experimental"` to the `"types"` array. + * + * Alternatively, a specific import syntax can to be used from a typescript file. + * This module does not exist in reality, which is why the {} is important: + * + * ```ts + * import {} from 'react/experimental' + * ``` + * + * It is also possible to include it through a triple-slash reference: + * + * ```ts + * /// + * ``` + * + * Either the import or the reference only needs to appear once, anywhere in the project. + */ + +// See https://github.com/facebook/react/blob/master/packages/react/src/React.js to see how the exports are declared, +// and https://github.com/facebook/react/blob/master/packages/shared/ReactFeatureFlags.js to verify which APIs are +// flagged experimental or not. Experimental APIs will be tagged with `__EXPERIMENTAL__`. +// +// For the inputs of types exported as simply a fiber tag, the `beginWork` function of ReactFiberBeginWork.js +// is a good place to start looking for details; it generally calls prop validation functions or delegates +// all tasks done as part of the render phase (the concurrent part of the React update cycle). +// +// Suspense-related handling can be found in ReactFiberThrow.js. + +import React = require("./canary"); + +export {}; + +declare const UNDEFINED_VOID_ONLY: unique symbol; +type VoidOrUndefinedOnly = void | { [UNDEFINED_VOID_ONLY]: never }; + +declare module "." { + export interface SuspenseProps { + /** + * The presence of this prop indicates that the content is computationally expensive to render. + * In other words, the tree is CPU bound and not I/O bound (e.g. due to fetching data). + * @see {@link https://github.com/facebook/react/pull/19936} + */ + unstable_expectedLoadTime?: number | undefined; + } + + export type SuspenseListRevealOrder = "forwards" | "backwards" | "together"; + export type SuspenseListTailMode = "collapsed" | "hidden"; + + export interface SuspenseListCommonProps { + /** + * Note that SuspenseList require more than one child; + * it is a runtime warning to provide only a single child. + * + * It does, however, allow those children to be wrapped inside a single + * level of ``. + */ + children: ReactElement | Iterable; + } + + interface DirectionalSuspenseListProps extends SuspenseListCommonProps { + /** + * Defines the order in which the `SuspenseList` children should be revealed. + */ + revealOrder: "forwards" | "backwards"; + /** + * Dictates how unloaded items in a SuspenseList is shown. + * + * - By default, `SuspenseList` will show all fallbacks in the list. + * - `collapsed` shows only the next fallback in the list. + * - `hidden` doesn’t show any unloaded items. + */ + tail?: SuspenseListTailMode | undefined; + } + + interface NonDirectionalSuspenseListProps extends SuspenseListCommonProps { + /** + * Defines the order in which the `SuspenseList` children should be revealed. + */ + revealOrder?: Exclude | undefined; + /** + * The tail property is invalid when not using the `forwards` or `backwards` reveal orders. + */ + tail?: never | undefined; + } + + export type SuspenseListProps = DirectionalSuspenseListProps | NonDirectionalSuspenseListProps; + + /** + * `SuspenseList` helps coordinate many components that can suspend by orchestrating the order + * in which these components are revealed to the user. + * + * When multiple components need to fetch data, this data may arrive in an unpredictable order. + * However, if you wrap these items in a `SuspenseList`, React will not show an item in the list + * until previous items have been displayed (this behavior is adjustable). + * + * @see https://reactjs.org/docs/concurrent-mode-reference.html#suspenselist + * @see https://reactjs.org/docs/concurrent-mode-patterns.html#suspenselist + */ + export const unstable_SuspenseList: ExoticComponent; + + // eslint-disable-next-line @typescript-eslint/ban-types + export function experimental_useEffectEvent(event: T): T; + + type Reference = object; + type TaintableUniqueValue = string | bigint | ArrayBufferView; + function experimental_taintUniqueValue( + message: string | undefined, + lifetime: Reference, + value: TaintableUniqueValue, + ): void; + function experimental_taintObjectReference(message: string | undefined, object: Reference): void; + + export interface HTMLAttributes { + /** + * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/inert + */ + inert?: boolean | undefined; + } +} diff --git a/node_modules/@types/react/ts5.0/global.d.ts b/node_modules/@types/react/ts5.0/global.d.ts new file mode 100644 index 0000000..8ae2ddd --- /dev/null +++ b/node_modules/@types/react/ts5.0/global.d.ts @@ -0,0 +1,160 @@ +/* +React projects that don't include the DOM library need these interfaces to compile. +React Native applications use React, but there is no DOM available. The JavaScript runtime +is ES6/ES2015 only. These definitions allow such projects to compile with only `--lib ES6`. + +Warning: all of these interfaces are empty. If you want type definitions for various properties +(such as HTMLInputElement.prototype.value), you need to add `--lib DOM` (via command line or tsconfig.json). +*/ + +interface Event {} +interface AnimationEvent extends Event {} +interface ClipboardEvent extends Event {} +interface CompositionEvent extends Event {} +interface DragEvent extends Event {} +interface FocusEvent extends Event {} +interface KeyboardEvent extends Event {} +interface MouseEvent extends Event {} +interface TouchEvent extends Event {} +interface PointerEvent extends Event {} +interface ToggleEvent extends Event {} +interface TransitionEvent extends Event {} +interface UIEvent extends Event {} +interface WheelEvent extends Event {} + +interface EventTarget {} +interface Document {} +interface DataTransfer {} +interface StyleMedia {} + +interface Element {} +interface DocumentFragment {} + +interface HTMLElement extends Element {} +interface HTMLAnchorElement extends HTMLElement {} +interface HTMLAreaElement extends HTMLElement {} +interface HTMLAudioElement extends HTMLElement {} +interface HTMLBaseElement extends HTMLElement {} +interface HTMLBodyElement extends HTMLElement {} +interface HTMLBRElement extends HTMLElement {} +interface HTMLButtonElement extends HTMLElement {} +interface HTMLCanvasElement extends HTMLElement {} +interface HTMLDataElement extends HTMLElement {} +interface HTMLDataListElement extends HTMLElement {} +interface HTMLDetailsElement extends HTMLElement {} +interface HTMLDialogElement extends HTMLElement {} +interface HTMLDivElement extends HTMLElement {} +interface HTMLDListElement extends HTMLElement {} +interface HTMLEmbedElement extends HTMLElement {} +interface HTMLFieldSetElement extends HTMLElement {} +interface HTMLFormElement extends HTMLElement {} +interface HTMLHeadingElement extends HTMLElement {} +interface HTMLHeadElement extends HTMLElement {} +interface HTMLHRElement extends HTMLElement {} +interface HTMLHtmlElement extends HTMLElement {} +interface HTMLIFrameElement extends HTMLElement {} +interface HTMLImageElement extends HTMLElement {} +interface HTMLInputElement extends HTMLElement {} +interface HTMLModElement extends HTMLElement {} +interface HTMLLabelElement extends HTMLElement {} +interface HTMLLegendElement extends HTMLElement {} +interface HTMLLIElement extends HTMLElement {} +interface HTMLLinkElement extends HTMLElement {} +interface HTMLMapElement extends HTMLElement {} +interface HTMLMetaElement extends HTMLElement {} +interface HTMLMeterElement extends HTMLElement {} +interface HTMLObjectElement extends HTMLElement {} +interface HTMLOListElement extends HTMLElement {} +interface HTMLOptGroupElement extends HTMLElement {} +interface HTMLOptionElement extends HTMLElement {} +interface HTMLOutputElement extends HTMLElement {} +interface HTMLParagraphElement extends HTMLElement {} +interface HTMLParamElement extends HTMLElement {} +interface HTMLPreElement extends HTMLElement {} +interface HTMLProgressElement extends HTMLElement {} +interface HTMLQuoteElement extends HTMLElement {} +interface HTMLSlotElement extends HTMLElement {} +interface HTMLScriptElement extends HTMLElement {} +interface HTMLSelectElement extends HTMLElement {} +interface HTMLSourceElement extends HTMLElement {} +interface HTMLSpanElement extends HTMLElement {} +interface HTMLStyleElement extends HTMLElement {} +interface HTMLTableElement extends HTMLElement {} +interface HTMLTableColElement extends HTMLElement {} +interface HTMLTableDataCellElement extends HTMLElement {} +interface HTMLTableHeaderCellElement extends HTMLElement {} +interface HTMLTableRowElement extends HTMLElement {} +interface HTMLTableSectionElement extends HTMLElement {} +interface HTMLTemplateElement extends HTMLElement {} +interface HTMLTextAreaElement extends HTMLElement {} +interface HTMLTimeElement extends HTMLElement {} +interface HTMLTitleElement extends HTMLElement {} +interface HTMLTrackElement extends HTMLElement {} +interface HTMLUListElement extends HTMLElement {} +interface HTMLVideoElement extends HTMLElement {} +interface HTMLWebViewElement extends HTMLElement {} + +interface SVGElement extends Element {} +interface SVGSVGElement extends SVGElement {} +interface SVGCircleElement extends SVGElement {} +interface SVGClipPathElement extends SVGElement {} +interface SVGDefsElement extends SVGElement {} +interface SVGDescElement extends SVGElement {} +interface SVGEllipseElement extends SVGElement {} +interface SVGFEBlendElement extends SVGElement {} +interface SVGFEColorMatrixElement extends SVGElement {} +interface SVGFEComponentTransferElement extends SVGElement {} +interface SVGFECompositeElement extends SVGElement {} +interface SVGFEConvolveMatrixElement extends SVGElement {} +interface SVGFEDiffuseLightingElement extends SVGElement {} +interface SVGFEDisplacementMapElement extends SVGElement {} +interface SVGFEDistantLightElement extends SVGElement {} +interface SVGFEDropShadowElement extends SVGElement {} +interface SVGFEFloodElement extends SVGElement {} +interface SVGFEFuncAElement extends SVGElement {} +interface SVGFEFuncBElement extends SVGElement {} +interface SVGFEFuncGElement extends SVGElement {} +interface SVGFEFuncRElement extends SVGElement {} +interface SVGFEGaussianBlurElement extends SVGElement {} +interface SVGFEImageElement extends SVGElement {} +interface SVGFEMergeElement extends SVGElement {} +interface SVGFEMergeNodeElement extends SVGElement {} +interface SVGFEMorphologyElement extends SVGElement {} +interface SVGFEOffsetElement extends SVGElement {} +interface SVGFEPointLightElement extends SVGElement {} +interface SVGFESpecularLightingElement extends SVGElement {} +interface SVGFESpotLightElement extends SVGElement {} +interface SVGFETileElement extends SVGElement {} +interface SVGFETurbulenceElement extends SVGElement {} +interface SVGFilterElement extends SVGElement {} +interface SVGForeignObjectElement extends SVGElement {} +interface SVGGElement extends SVGElement {} +interface SVGImageElement extends SVGElement {} +interface SVGLineElement extends SVGElement {} +interface SVGLinearGradientElement extends SVGElement {} +interface SVGMarkerElement extends SVGElement {} +interface SVGMaskElement extends SVGElement {} +interface SVGMetadataElement extends SVGElement {} +interface SVGPathElement extends SVGElement {} +interface SVGPatternElement extends SVGElement {} +interface SVGPolygonElement extends SVGElement {} +interface SVGPolylineElement extends SVGElement {} +interface SVGRadialGradientElement extends SVGElement {} +interface SVGRectElement extends SVGElement {} +interface SVGSetElement extends SVGElement {} +interface SVGStopElement extends SVGElement {} +interface SVGSwitchElement extends SVGElement {} +interface SVGSymbolElement extends SVGElement {} +interface SVGTextElement extends SVGElement {} +interface SVGTextPathElement extends SVGElement {} +interface SVGTSpanElement extends SVGElement {} +interface SVGUseElement extends SVGElement {} +interface SVGViewElement extends SVGElement {} + +interface FormData {} +interface Text {} +interface TouchList {} +interface WebGLRenderingContext {} +interface WebGL2RenderingContext {} + +interface TrustedHTML {} diff --git a/node_modules/@types/react/ts5.0/index.d.ts b/node_modules/@types/react/ts5.0/index.d.ts new file mode 100644 index 0000000..302fad1 --- /dev/null +++ b/node_modules/@types/react/ts5.0/index.d.ts @@ -0,0 +1,4524 @@ +// NOTE: Users of the `experimental` builds of React should add a reference +// to 'react/experimental' in their project. See experimental.d.ts's top comment +// for reference and documentation on how exactly to do it. + +/// + +import * as CSS from "csstype"; +import * as PropTypes from "prop-types"; + +type NativeAnimationEvent = AnimationEvent; +type NativeClipboardEvent = ClipboardEvent; +type NativeCompositionEvent = CompositionEvent; +type NativeDragEvent = DragEvent; +type NativeFocusEvent = FocusEvent; +type NativeKeyboardEvent = KeyboardEvent; +type NativeMouseEvent = MouseEvent; +type NativeTouchEvent = TouchEvent; +type NativePointerEvent = PointerEvent; +type NativeTransitionEvent = TransitionEvent; +type NativeUIEvent = UIEvent; +type NativeWheelEvent = WheelEvent; + +/** + * Used to represent DOM API's where users can either pass + * true or false as a boolean or as its equivalent strings. + */ +type Booleanish = boolean | "true" | "false"; + +/** + * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin MDN} + */ +type CrossOrigin = "anonymous" | "use-credentials" | "" | undefined; + +declare const UNDEFINED_VOID_ONLY: unique symbol; + +/** + * The function returned from an effect passed to {@link React.useEffect useEffect}, + * which can be used to clean up the effect when the component unmounts. + * + * @see {@link https://react.dev/reference/react/useEffect React Docs} + */ +type Destructor = () => void | { [UNDEFINED_VOID_ONLY]: never }; +type VoidOrUndefinedOnly = void | { [UNDEFINED_VOID_ONLY]: never }; + +// eslint-disable-next-line @definitelytyped/export-just-namespace +export = React; +export as namespace React; + +declare namespace React { + // + // React Elements + // ---------------------------------------------------------------------- + + /** + * Used to retrieve the possible components which accept a given set of props. + * + * Can be passed no type parameters to get a union of all possible components + * and tags. + * + * Is a superset of {@link ComponentType}. + * + * @template P The props to match against. If not passed, defaults to any. + * @template Tag An optional tag to match against. If not passed, attempts to match against all possible tags. + * + * @example + * + * ```tsx + * // All components and tags (img, embed etc.) + * // which accept `src` + * type SrcComponents = ElementType<{ src: any }>; + * ``` + * + * @example + * + * ```tsx + * // All components + * type AllComponents = ElementType; + * ``` + * + * @example + * + * ```tsx + * // All custom components which match `src`, and tags which + * // match `src`, narrowed down to just `audio` and `embed` + * type SrcComponents = ElementType<{ src: any }, 'audio' | 'embed'>; + * ``` + */ + type ElementType

= + | { [K in Tag]: P extends JSX.IntrinsicElements[K] ? K : never }[Tag] + | ComponentType

; + + /** + * Represents any user-defined component, either as a function or a class. + * + * Similar to {@link JSXElementConstructor}, but with extra properties like + * {@link FunctionComponent.defaultProps defaultProps } and + * {@link ComponentClass.contextTypes contextTypes}. + * + * @template P The props the component accepts. + * + * @see {@link ComponentClass} + * @see {@link FunctionComponent} + */ + type ComponentType

= ComponentClass

| FunctionComponent

; + + /** + * Represents any user-defined component, either as a function or a class. + * + * Similar to {@link ComponentType}, but without extra properties like + * {@link FunctionComponent.defaultProps defaultProps } and + * {@link ComponentClass.contextTypes contextTypes}. + * + * @template P The props the component accepts. + */ + type JSXElementConstructor

= + | (( + props: P, + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-stateless-function-components React Docs} + */ + deprecatedLegacyContext?: any, + ) => ReactElement | null) + | (new( + props: P, + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods React Docs} + */ + deprecatedLegacyContext?: any, + ) => Component); + + /** + * A readonly ref container where {@link current} cannot be mutated. + * + * Created by {@link createRef}, or {@link useRef} when passed `null`. + * + * @template T The type of the ref's value. + * + * @example + * + * ```tsx + * const ref = createRef(); + * + * ref.current = document.createElement('div'); // Error + * ``` + */ + interface RefObject { + /** + * The current value of the ref. + */ + readonly current: T | null; + } + + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES { + } + /** + * A callback fired whenever the ref's value changes. + * + * @template T The type of the ref's value. + * + * @see {@link https://react.dev/reference/react-dom/components/common#ref-callback React Docs} + * + * @example + * + * ```tsx + *

console.log(node)} /> + * ``` + */ + type RefCallback = { + bivarianceHack( + instance: T | null, + ): + | void + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES + ]; + }["bivarianceHack"]; + + /** + * A union type of all possible shapes for React refs. + * + * @see {@link RefCallback} + * @see {@link RefObject} + */ + + type Ref = RefCallback | RefObject | null; + /** + * A legacy implementation of refs where you can pass a string to a ref prop. + * + * @see {@link https://react.dev/reference/react/Component#refs React Docs} + * + * @example + * + * ```tsx + *
+ * ``` + */ + // TODO: Remove the string ref special case from `PropsWithRef` once we remove LegacyRef + type LegacyRef = string | Ref; + + /** + * Retrieves the type of the 'ref' prop for a given component type or tag name. + * + * @template C The component type. + * + * @example + * + * ```tsx + * type MyComponentRef = React.ElementRef; + * ``` + * + * @example + * + * ```tsx + * type DivRef = React.ElementRef<'div'>; + * ``` + */ + type ElementRef< + C extends + | ForwardRefExoticComponent + | { new(props: any): Component } + | ((props: any, deprecatedLegacyContext?: any) => ReactElement | null) + | keyof JSX.IntrinsicElements, + > = + // need to check first if `ref` is a valid prop for ts@3.0 + // otherwise it will infer `{}` instead of `never` + "ref" extends keyof ComponentPropsWithRef + ? NonNullable["ref"]> extends RefAttributes< + infer Instance + >["ref"] ? Instance + : never + : never; + + type ComponentState = any; + + /** + * A value which uniquely identifies a node among items in an array. + * + * @see {@link https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key React Docs} + */ + type Key = string | number | bigint; + + /** + * @internal The props any component can receive. + * You don't have to add this type. All components automatically accept these props. + * ```tsx + * const Component = () =>
; + * + * ``` + * + * WARNING: The implementation of a component will never have access to these attributes. + * The following example would be incorrect usage because {@link Component} would never have access to `key`: + * ```tsx + * const Component = (props: React.Attributes) => props.key; + * ``` + */ + interface Attributes { + key?: Key | null | undefined; + } + /** + * The props any component accepting refs can receive. + * Class components, built-in browser components (e.g. `div`) and forwardRef components can receive refs and automatically accept these props. + * ```tsx + * const Component = forwardRef(() =>
); + * console.log(current)} /> + * ``` + * + * You only need this type if you manually author the types of props that need to be compatible with legacy refs. + * ```tsx + * interface Props extends React.RefAttributes {} + * declare const Component: React.FunctionComponent; + * ``` + * + * Otherwise it's simpler to directly use {@link Ref} since you can safely use the + * props type to describe to props that a consumer can pass to the component + * as well as describing the props the implementation of a component "sees". + * {@link RefAttributes} is generally not safe to describe both consumer and seen props. + * + * ```tsx + * interface Props extends { + * ref?: React.Ref | undefined; + * } + * declare const Component: React.FunctionComponent; + * ``` + * + * WARNING: The implementation of a component will not have access to the same type in versions of React supporting string refs. + * The following example would be incorrect usage because {@link Component} would never have access to a `ref` with type `string` + * ```tsx + * const Component = (props: React.RefAttributes) => props.ref; + * ``` + */ + interface RefAttributes extends Attributes { + /** + * Allows getting a ref to the component instance. + * Once the component unmounts, React will set `ref.current` to `null` + * (or call the ref with `null` if you passed a callback ref). + * + * @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} + */ + ref?: LegacyRef | undefined; + } + + /** + * Represents the built-in attributes available to class components. + */ + interface ClassAttributes extends RefAttributes { + } + + /** + * Represents a JSX element. + * + * Where {@link ReactNode} represents everything that can be rendered, `ReactElement` + * only represents JSX. + * + * @template P The type of the props object + * @template T The type of the component or tag + * + * @example + * + * ```tsx + * const element: ReactElement =
; + * ``` + */ + interface ReactElement< + P = any, + T extends string | JSXElementConstructor = string | JSXElementConstructor, + > { + type: T; + props: P; + key: string | null; + } + + /** + * @deprecated + */ + interface ReactComponentElement< + T extends keyof JSX.IntrinsicElements | JSXElementConstructor, + P = Pick, Exclude, "key" | "ref">>, + > extends ReactElement> {} + + interface FunctionComponentElement

extends ReactElement> { + ref?: ("ref" extends keyof P ? P extends { ref?: infer R | undefined } ? R : never : never) | undefined; + } + + type CElement> = ComponentElement; + interface ComponentElement> extends ReactElement> { + ref?: LegacyRef | undefined; + } + + /** + * @deprecated Use {@link ComponentElement} instead. + */ + type ClassicElement

= CElement>; + + // string fallback for custom web-components + interface DOMElement

| SVGAttributes, T extends Element> + extends ReactElement + { + ref: LegacyRef; + } + + // ReactHTML for ReactHTMLElement + interface ReactHTMLElement extends DetailedReactHTMLElement, T> {} + + interface DetailedReactHTMLElement

, T extends HTMLElement> extends DOMElement { + type: keyof ReactHTML; + } + + // ReactSVG for ReactSVGElement + interface ReactSVGElement extends DOMElement, SVGElement> { + type: keyof ReactSVG; + } + + interface ReactPortal extends ReactElement { + children: ReactNode; + } + + // + // Factories + // ---------------------------------------------------------------------- + + type Factory

= (props?: Attributes & P, ...children: ReactNode[]) => ReactElement

; + + /** + * @deprecated Please use `FunctionComponentFactory` + */ + type SFCFactory

= FunctionComponentFactory

; + + type FunctionComponentFactory

= ( + props?: Attributes & P, + ...children: ReactNode[] + ) => FunctionComponentElement

; + + type ComponentFactory> = ( + props?: ClassAttributes & P, + ...children: ReactNode[] + ) => CElement; + + type CFactory> = ComponentFactory; + type ClassicFactory

= CFactory>; + + type DOMFactory

, T extends Element> = ( + props?: ClassAttributes & P | null, + ...children: ReactNode[] + ) => DOMElement; + + interface HTMLFactory extends DetailedHTMLFactory, T> {} + + interface DetailedHTMLFactory

, T extends HTMLElement> extends DOMFactory { + (props?: ClassAttributes & P | null, ...children: ReactNode[]): DetailedReactHTMLElement; + } + + interface SVGFactory extends DOMFactory, SVGElement> { + ( + props?: ClassAttributes & SVGAttributes | null, + ...children: ReactNode[] + ): ReactSVGElement; + } + + /** + * @deprecated - This type is not relevant when using React. Inline the type instead to make the intent clear. + */ + type ReactText = string | number; + /** + * @deprecated - This type is not relevant when using React. Inline the type instead to make the intent clear. + */ + type ReactChild = ReactElement | string | number; + + /** + * @deprecated Use either `ReactNode[]` if you need an array or `Iterable` if its passed to a host component. + */ + interface ReactNodeArray extends ReadonlyArray {} + /** + * WARNING: Not related to `React.Fragment`. + * @deprecated This type is not relevant when using React. Inline the type instead to make the intent clear. + */ + type ReactFragment = Iterable; + + /** + * For internal usage only. + * Different release channels declare additional types of ReactNode this particular release channel accepts. + * App or library types should never augment this interface. + */ + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_REACT_NODES {} + + /** + * Represents all of the things React can render. + * + * Where {@link ReactElement} only represents JSX, `ReactNode` represents everything that can be rendered. + * + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/react-types/reactnode/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * // Typing children + * type Props = { children: ReactNode } + * + * const Component = ({ children }: Props) =>

{children}
+ * + * hello + * ``` + * + * @example + * + * ```tsx + * // Typing a custom element + * type Props = { customElement: ReactNode } + * + * const Component = ({ customElement }: Props) =>
{customElement}
+ * + * hello
} /> + * ``` + */ + // non-thenables need to be kept in sync with AwaitedReactNode + type ReactNode = + | ReactElement + | string + | number + | Iterable + | ReactPortal + | boolean + | null + | undefined + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_REACT_NODES[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_REACT_NODES + ]; + + // + // Top Level API + // ---------------------------------------------------------------------- + + // DOM Elements + /** @deprecated */ + function createFactory( + type: keyof ReactHTML, + ): HTMLFactory; + /** @deprecated */ + function createFactory( + type: keyof ReactSVG, + ): SVGFactory; + /** @deprecated */ + function createFactory

, T extends Element>( + type: string, + ): DOMFactory; + + // Custom components + /** @deprecated */ + function createFactory

(type: FunctionComponent

): FunctionComponentFactory

; + /** @deprecated */ + function createFactory, C extends ComponentClass

>( + type: ClassType, + ): CFactory; + /** @deprecated */ + function createFactory

(type: ComponentClass

): Factory

; + + // DOM Elements + // TODO: generalize this to everything in `keyof ReactHTML`, not just "input" + function createElement( + type: "input", + props?: InputHTMLAttributes & ClassAttributes | null, + ...children: ReactNode[] + ): DetailedReactHTMLElement, HTMLInputElement>; + function createElement

, T extends HTMLElement>( + type: keyof ReactHTML, + props?: ClassAttributes & P | null, + ...children: ReactNode[] + ): DetailedReactHTMLElement; + function createElement

, T extends SVGElement>( + type: keyof ReactSVG, + props?: ClassAttributes & P | null, + ...children: ReactNode[] + ): ReactSVGElement; + function createElement

, T extends Element>( + type: string, + props?: ClassAttributes & P | null, + ...children: ReactNode[] + ): DOMElement; + + // Custom components + + function createElement

( + type: FunctionComponent

, + props?: Attributes & P | null, + ...children: ReactNode[] + ): FunctionComponentElement

; + function createElement

, C extends ComponentClass

>( + type: ClassType, + props?: ClassAttributes & P | null, + ...children: ReactNode[] + ): CElement; + function createElement

( + type: FunctionComponent

| ComponentClass

| string, + props?: Attributes & P | null, + ...children: ReactNode[] + ): ReactElement

; + + // DOM Elements + // ReactHTMLElement + function cloneElement

, T extends HTMLElement>( + element: DetailedReactHTMLElement, + props?: P, + ...children: ReactNode[] + ): DetailedReactHTMLElement; + // ReactHTMLElement, less specific + function cloneElement

, T extends HTMLElement>( + element: ReactHTMLElement, + props?: P, + ...children: ReactNode[] + ): ReactHTMLElement; + // SVGElement + function cloneElement

, T extends SVGElement>( + element: ReactSVGElement, + props?: P, + ...children: ReactNode[] + ): ReactSVGElement; + // DOM Element (has to be the last, because type checking stops at first overload that fits) + function cloneElement

, T extends Element>( + element: DOMElement, + props?: DOMAttributes & P, + ...children: ReactNode[] + ): DOMElement; + + // Custom components + function cloneElement

( + element: FunctionComponentElement

, + props?: Partial

& Attributes, + ...children: ReactNode[] + ): FunctionComponentElement

; + function cloneElement>( + element: CElement, + props?: Partial

& ClassAttributes, + ...children: ReactNode[] + ): CElement; + function cloneElement

( + element: ReactElement

, + props?: Partial

& Attributes, + ...children: ReactNode[] + ): ReactElement

; + + /** + * Describes the props accepted by a Context {@link Provider}. + * + * @template T The type of the value the context provides. + */ + interface ProviderProps { + value: T; + children?: ReactNode | undefined; + } + + /** + * Describes the props accepted by a Context {@link Consumer}. + * + * @template T The type of the value the context provides. + */ + interface ConsumerProps { + children: (value: T) => ReactNode; + } + + /** + * An object masquerading as a component. These are created by functions + * like {@link forwardRef}, {@link memo}, and {@link createContext}. + * + * In order to make TypeScript work, we pretend that they are normal + * components. + * + * But they are, in fact, not callable - instead, they are objects which + * are treated specially by the renderer. + * + * @template P The props the component accepts. + */ + interface ExoticComponent

{ + (props: P): ReactElement | null; + readonly $$typeof: symbol; + } + + /** + * An {@link ExoticComponent} with a `displayName` property applied to it. + * + * @template P The props the component accepts. + */ + interface NamedExoticComponent

extends ExoticComponent

{ + /** + * Used in debugging messages. You might want to set it + * explicitly if you want to display a different name for + * debugging purposes. + * + * @see {@link https://legacy.reactjs.org/docs/react-component.html#displayname Legacy React Docs} + */ + displayName?: string | undefined; + } + + /** + * An {@link ExoticComponent} with a `propTypes` property applied to it. + * + * @template P The props the component accepts. + */ + interface ProviderExoticComponent

extends ExoticComponent

{ + propTypes?: WeakValidationMap

| undefined; + } + + /** + * Used to retrieve the type of a context object from a {@link Context}. + * + * @template C The context object. + * + * @example + * + * ```tsx + * import { createContext } from 'react'; + * + * const MyContext = createContext({ foo: 'bar' }); + * + * type ContextType = ContextType; + * // ContextType = { foo: string } + * ``` + */ + type ContextType> = C extends Context ? T : never; + + /** + * Wraps your components to specify the value of this context for all components inside. + * + * @see {@link https://react.dev/reference/react/createContext#provider React Docs} + * + * @example + * + * ```tsx + * import { createContext } from 'react'; + * + * const ThemeContext = createContext('light'); + * + * function App() { + * return ( + * + * + * + * ); + * } + * ``` + */ + type Provider = ProviderExoticComponent>; + + /** + * The old way to read context, before {@link useContext} existed. + * + * @see {@link https://react.dev/reference/react/createContext#consumer React Docs} + * + * @example + * + * ```tsx + * import { UserContext } from './user-context'; + * + * function Avatar() { + * return ( + * + * {user => {user.name}} + * + * ); + * } + * ``` + */ + type Consumer = ExoticComponent>; + + /** + * Context lets components pass information deep down without explicitly + * passing props. + * + * Created from {@link createContext} + * + * @see {@link https://react.dev/learn/passing-data-deeply-with-context React Docs} + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/context/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * import { createContext } from 'react'; + * + * const ThemeContext = createContext('light'); + * ``` + */ + interface Context { + Provider: Provider; + Consumer: Consumer; + /** + * Used in debugging messages. You might want to set it + * explicitly if you want to display a different name for + * debugging purposes. + * + * @see {@link https://legacy.reactjs.org/docs/react-component.html#displayname Legacy React Docs} + */ + displayName?: string | undefined; + } + + /** + * Lets you create a {@link Context} that components can provide or read. + * + * @param defaultValue The value you want the context to have when there is no matching + * {@link Provider} in the tree above the component reading the context. This is meant + * as a "last resort" fallback. + * + * @see {@link https://react.dev/reference/react/createContext#reference React Docs} + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/context/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * import { createContext } from 'react'; + * + * const ThemeContext = createContext('light'); + * ``` + */ + function createContext( + // If you thought this should be optional, see + // https://github.com/DefinitelyTyped/DefinitelyTyped/pull/24509#issuecomment-382213106 + defaultValue: T, + ): Context; + + function isValidElement

(object: {} | null | undefined): object is ReactElement

; + + /** + * Maintainer's note: Sync with {@link ReactChildren} until {@link ReactChildren} is removed. + */ + const Children: { + map( + children: C | readonly C[], + fn: (child: C, index: number) => T, + ): C extends null | undefined ? C : Array>; + forEach(children: C | readonly C[], fn: (child: C, index: number) => void): void; + count(children: any): number; + only(children: C): C extends any[] ? never : C; + toArray(children: ReactNode | ReactNode[]): Array>; + }; + /** + * Lets you group elements without a wrapper node. + * + * @see {@link https://react.dev/reference/react/Fragment React Docs} + * + * @example + * + * ```tsx + * import { Fragment } from 'react'; + * + * + * Hello + * World + * + * ``` + * + * @example + * + * ```tsx + * // Using the <> shorthand syntax: + * + * <> + * Hello + * World + * + * ``` + */ + const Fragment: ExoticComponent<{ children?: ReactNode | undefined }>; + + /** + * Lets you find common bugs in your components early during development. + * + * @see {@link https://react.dev/reference/react/StrictMode React Docs} + * + * @example + * + * ```tsx + * import { StrictMode } from 'react'; + * + * + * + * + * ``` + */ + const StrictMode: ExoticComponent<{ children?: ReactNode | undefined }>; + + /** + * The props accepted by {@link Suspense}. + * + * @see {@link https://react.dev/reference/react/Suspense React Docs} + */ + interface SuspenseProps { + children?: ReactNode | undefined; + + /** A fallback react tree to show when a Suspense child (like React.lazy) suspends */ + fallback?: ReactNode; + } + + /** + * Lets you display a fallback until its children have finished loading. + * + * @see {@link https://react.dev/reference/react/Suspense React Docs} + * + * @example + * + * ```tsx + * import { Suspense } from 'react'; + * + * }> + * + * + * ``` + */ + const Suspense: ExoticComponent; + const version: string; + + /** + * The callback passed to {@link ProfilerProps.onRender}. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + type ProfilerOnRenderCallback = ( + /** + * The string id prop of the {@link Profiler} tree that has just committed. This lets + * you identify which part of the tree was committed if you are using multiple + * profilers. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + id: string, + /** + * This lets you know whether the tree has just been mounted for the first time + * or re-rendered due to a change in props, state, or hooks. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + phase: "mount" | "update" | "nested-update", + /** + * The number of milliseconds spent rendering the {@link Profiler} and its descendants + * for the current update. This indicates how well the subtree makes use of + * memoization (e.g. {@link memo} and {@link useMemo}). Ideally this value should decrease + * significantly after the initial mount as many of the descendants will only need to + * re-render if their specific props change. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + actualDuration: number, + /** + * The number of milliseconds estimating how much time it would take to re-render the entire + * {@link Profiler} subtree without any optimizations. It is calculated by summing up the most + * recent render durations of each component in the tree. This value estimates a worst-case + * cost of rendering (e.g. the initial mount or a tree with no memoization). Compare + * {@link actualDuration} against it to see if memoization is working. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + baseDuration: number, + /** + * A numeric timestamp for when React began rendering the current update. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + startTime: number, + /** + * A numeric timestamp for when React committed the current update. This value is shared + * between all profilers in a commit, enabling them to be grouped if desirable. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + */ + commitTime: number, + ) => void; + + /** + * The props accepted by {@link Profiler}. + * + * @see {@link https://react.dev/reference/react/Profiler React Docs} + */ + interface ProfilerProps { + children?: ReactNode | undefined; + id: string; + onRender: ProfilerOnRenderCallback; + } + + /** + * Lets you measure rendering performance of a React tree programmatically. + * + * @see {@link https://react.dev/reference/react/Profiler#onrender-callback React Docs} + * + * @example + * + * ```tsx + * + * + * + * ``` + */ + const Profiler: ExoticComponent; + + // + // Component API + // ---------------------------------------------------------------------- + + type ReactInstance = Component | Element; + + // Base component for plain JS classes + interface Component

extends ComponentLifecycle {} + class Component { + /** + * If set, `this.context` will be set at runtime to the current value of the given Context. + * + * @example + * + * ```ts + * type MyContext = number + * const Ctx = React.createContext(0) + * + * class Foo extends React.Component { + * static contextType = Ctx + * context!: React.ContextType + * render () { + * return <>My context's value: {this.context}; + * } + * } + * ``` + * + * @see {@link https://react.dev/reference/react/Component#static-contexttype} + */ + static contextType?: Context | undefined; + + /** + * If using the new style context, re-declare this in your class to be the + * `React.ContextType` of your `static contextType`. + * Should be used with type annotation or static contextType. + * + * @example + * ```ts + * static contextType = MyContext + * // For TS pre-3.7: + * context!: React.ContextType + * // For TS 3.7 and above: + * declare context: React.ContextType + * ``` + * + * @see {@link https://react.dev/reference/react/Component#context React Docs} + */ + context: unknown; + + constructor(props: P); + /** + * @deprecated + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html React Docs} + */ + constructor(props: P, context: any); + + // We MUST keep setState() as a unified signature because it allows proper checking of the method return type. + // See: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18365#issuecomment-351013257 + // Also, the ` | S` allows intellisense to not be dumbisense + setState( + state: ((prevState: Readonly, props: Readonly

) => Pick | S | null) | (Pick | S | null), + callback?: () => void, + ): void; + + forceUpdate(callback?: () => void): void; + render(): ReactNode; + + readonly props: Readonly

; + state: Readonly; + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/refs-and-the-dom.html#legacy-api-string-refs Legacy React Docs} + */ + refs: { + [key: string]: ReactInstance; + }; + } + + class PureComponent

extends Component {} + + /** + * @deprecated Use `ClassicComponent` from `create-react-class` + * + * @see {@link https://legacy.reactjs.org/docs/react-without-es6.html Legacy React Docs} + * @see {@link https://www.npmjs.com/package/create-react-class `create-react-class` on npm} + */ + interface ClassicComponent

extends Component { + replaceState(nextState: S, callback?: () => void): void; + isMounted(): boolean; + getInitialState?(): S; + } + + interface ChildContextProvider { + getChildContext(): CC; + } + + // + // Class Interfaces + // ---------------------------------------------------------------------- + + /** + * Represents the type of a function component. Can optionally + * receive a type argument that represents the props the component + * receives. + * + * @template P The props the component accepts. + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/function_components React TypeScript Cheatsheet} + * @alias for {@link FunctionComponent} + * + * @example + * + * ```tsx + * // With props: + * type Props = { name: string } + * + * const MyComponent: FC = (props) => { + * return

{props.name}
+ * } + * ``` + * + * @example + * + * ```tsx + * // Without props: + * const MyComponentWithoutProps: FC = () => { + * return
MyComponentWithoutProps
+ * } + * ``` + */ + type FC

= FunctionComponent

; + + /** + * Represents the type of a function component. Can optionally + * receive a type argument that represents the props the component + * accepts. + * + * @template P The props the component accepts. + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/function_components React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * // With props: + * type Props = { name: string } + * + * const MyComponent: FunctionComponent = (props) => { + * return

{props.name}
+ * } + * ``` + * + * @example + * + * ```tsx + * // Without props: + * const MyComponentWithoutProps: FunctionComponent = () => { + * return
MyComponentWithoutProps
+ * } + * ``` + */ + interface FunctionComponent

{ + ( + props: P, + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods React Docs} + */ + deprecatedLegacyContext?: any, + ): ReactElement | null; + /** + * Used to declare the types of the props accepted by the + * component. These types will be checked during rendering + * and in development only. + * + * We recommend using TypeScript instead of checking prop + * types at runtime. + * + * @see {@link https://react.dev/reference/react/Component#static-proptypes React Docs} + */ + propTypes?: WeakValidationMap

| undefined; + /** + * @deprecated + * + * Lets you specify which legacy context is consumed by + * this component. + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html Legacy React Docs} + */ + contextTypes?: ValidationMap | undefined; + /** + * Used to define default values for the props accepted by + * the component. + * + * @see {@link https://react.dev/reference/react/Component#static-defaultprops React Docs} + * + * @example + * + * ```tsx + * type Props = { name?: string } + * + * const MyComponent: FC = (props) => { + * return

{props.name}
+ * } + * + * MyComponent.defaultProps = { + * name: 'John Doe' + * } + * ``` + * + * @deprecated Use {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#default_value|default values for destructuring assignments instead}. + */ + defaultProps?: Partial

| undefined; + /** + * Used in debugging messages. You might want to set it + * explicitly if you want to display a different name for + * debugging purposes. + * + * @see {@link https://legacy.reactjs.org/docs/react-component.html#displayname Legacy React Docs} + * + * @example + * + * ```tsx + * + * const MyComponent: FC = () => { + * return

Hello!
+ * } + * + * MyComponent.displayName = 'MyAwesomeComponent' + * ``` + */ + displayName?: string | undefined; + } + + /** + * @deprecated - Equivalent to {@link React.FunctionComponent}. + * + * @see {@link React.FunctionComponent} + * @alias {@link VoidFunctionComponent} + */ + type VFC

= VoidFunctionComponent

; + + /** + * @deprecated - Equivalent to {@link React.FunctionComponent}. + * + * @see {@link React.FunctionComponent} + */ + interface VoidFunctionComponent

{ + ( + props: P, + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods React Docs} + */ + deprecatedLegacyContext?: any, + ): ReactElement | null; + propTypes?: WeakValidationMap

| undefined; + contextTypes?: ValidationMap | undefined; + /** + * @deprecated Use {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#default_value|default values for destructuring assignments instead}. + */ + defaultProps?: Partial

| undefined; + displayName?: string | undefined; + } + + /** + * The type of the ref received by a {@link ForwardRefRenderFunction}. + * + * @see {@link ForwardRefRenderFunction} + */ + type ForwardedRef = ((instance: T | null) => void) | MutableRefObject | null; + + /** + * The type of the function passed to {@link forwardRef}. This is considered different + * to a normal {@link FunctionComponent} because it receives an additional argument, + * + * @param props Props passed to the component, if any. + * @param ref A ref forwarded to the component of type {@link ForwardedRef}. + * + * @template T The type of the forwarded ref. + * @template P The type of the props the component accepts. + * + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/forward_and_create_ref/ React TypeScript Cheatsheet} + * @see {@link forwardRef} + */ + interface ForwardRefRenderFunction { + (props: P, ref: ForwardedRef): ReactElement | null; + /** + * Used in debugging messages. You might want to set it + * explicitly if you want to display a different name for + * debugging purposes. + * + * Will show `ForwardRef(${Component.displayName || Component.name})` + * in devtools by default, but can be given its own specific name. + * + * @see {@link https://legacy.reactjs.org/docs/react-component.html#displayname Legacy React Docs} + */ + displayName?: string | undefined; + /** + * defaultProps are not supported on render functions passed to forwardRef. + * + * @see {@link https://github.com/microsoft/TypeScript/issues/36826 linked GitHub issue} for context + * @see {@link https://react.dev/reference/react/Component#static-defaultprops React Docs} + */ + defaultProps?: never | undefined; + /** + * propTypes are not supported on render functions passed to forwardRef. + * + * @see {@link https://github.com/microsoft/TypeScript/issues/36826 linked GitHub issue} for context + * @see {@link https://react.dev/reference/react/Component#static-proptypes React Docs} + */ + propTypes?: never | undefined; + } + + /** + * Represents a component class in React. + * + * @template P The props the component accepts. + * @template S The internal state of the component. + */ + interface ComponentClass

extends StaticLifecycle { + new( + props: P, + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods React Docs} + */ + deprecatedLegacyContext?: any, + ): Component; + /** + * Used to declare the types of the props accepted by the + * component. These types will be checked during rendering + * and in development only. + * + * We recommend using TypeScript instead of checking prop + * types at runtime. + * + * @see {@link https://react.dev/reference/react/Component#static-proptypes React Docs} + */ + propTypes?: WeakValidationMap

| undefined; + contextType?: Context | undefined; + /** + * @deprecated use {@link ComponentClass.contextType} instead + * + * Lets you specify which legacy context is consumed by + * this component. + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html Legacy React Docs} + */ + contextTypes?: ValidationMap | undefined; + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/docs/legacy-context.html#how-to-use-context Legacy React Docs} + */ + childContextTypes?: ValidationMap | undefined; + /** + * Used to define default values for the props accepted by + * the component. + * + * @see {@link https://react.dev/reference/react/Component#static-defaultprops React Docs} + */ + defaultProps?: Partial

| undefined; + /** + * Used in debugging messages. You might want to set it + * explicitly if you want to display a different name for + * debugging purposes. + * + * @see {@link https://legacy.reactjs.org/docs/react-component.html#displayname Legacy React Docs} + */ + displayName?: string | undefined; + } + + /** + * @deprecated Use `ClassicComponentClass` from `create-react-class` + * + * @see {@link https://legacy.reactjs.org/docs/react-without-es6.html Legacy React Docs} + * @see {@link https://www.npmjs.com/package/create-react-class `create-react-class` on npm} + */ + interface ClassicComponentClass

extends ComponentClass

{ + new(props: P, deprecatedLegacyContext?: any): ClassicComponent; + getDefaultProps?(): P; + } + + /** + * Used in {@link createElement} and {@link createFactory} to represent + * a class. + * + * An intersection type is used to infer multiple type parameters from + * a single argument, which is useful for many top-level API defs. + * See {@link https://github.com/Microsoft/TypeScript/issues/7234 this GitHub issue} + * for more info. + */ + type ClassType, C extends ComponentClass

> = + & C + & (new(props: P, deprecatedLegacyContext?: any) => T); + + // + // Component Specs and Lifecycle + // ---------------------------------------------------------------------- + + // This should actually be something like `Lifecycle | DeprecatedLifecycle`, + // as React will _not_ call the deprecated lifecycle methods if any of the new lifecycle + // methods are present. + interface ComponentLifecycle extends NewLifecycle, DeprecatedLifecycle { + /** + * Called immediately after a component is mounted. Setting state here will trigger re-rendering. + */ + componentDidMount?(): void; + /** + * Called to determine whether the change in props and state should trigger a re-render. + * + * `Component` always returns true. + * `PureComponent` implements a shallow comparison on props and state and returns true if any + * props or states have changed. + * + * If false is returned, {@link Component.render}, `componentWillUpdate` + * and `componentDidUpdate` will not be called. + */ + shouldComponentUpdate?(nextProps: Readonly

, nextState: Readonly, nextContext: any): boolean; + /** + * Called immediately before a component is destroyed. Perform any necessary cleanup in this method, such as + * cancelled network requests, or cleaning up any DOM elements created in `componentDidMount`. + */ + componentWillUnmount?(): void; + /** + * Catches exceptions generated in descendant components. Unhandled exceptions will cause + * the entire component tree to unmount. + */ + componentDidCatch?(error: Error, errorInfo: ErrorInfo): void; + } + + // Unfortunately, we have no way of declaring that the component constructor must implement this + interface StaticLifecycle { + getDerivedStateFromProps?: GetDerivedStateFromProps | undefined; + getDerivedStateFromError?: GetDerivedStateFromError | undefined; + } + + type GetDerivedStateFromProps = + /** + * Returns an update to a component's state based on its new props and old state. + * + * Note: its presence prevents any of the deprecated lifecycle methods from being invoked + */ + (nextProps: Readonly

, prevState: S) => Partial | null; + + type GetDerivedStateFromError = + /** + * This lifecycle is invoked after an error has been thrown by a descendant component. + * It receives the error that was thrown as a parameter and should return a value to update state. + * + * Note: its presence prevents any of the deprecated lifecycle methods from being invoked + */ + (error: any) => Partial | null; + + // This should be "infer SS" but can't use it yet + interface NewLifecycle { + /** + * Runs before React applies the result of {@link Component.render render} to the document, and + * returns an object to be given to {@link componentDidUpdate}. Useful for saving + * things such as scroll position before {@link Component.render render} causes changes to it. + * + * Note: the presence of this method prevents any of the deprecated + * lifecycle events from running. + */ + getSnapshotBeforeUpdate?(prevProps: Readonly

, prevState: Readonly): SS | null; + /** + * Called immediately after updating occurs. Not called for the initial render. + * + * The snapshot is only present if {@link getSnapshotBeforeUpdate} is present and returns non-null. + */ + componentDidUpdate?(prevProps: Readonly

, prevState: Readonly, snapshot?: SS): void; + } + + interface DeprecatedLifecycle { + /** + * Called immediately before mounting occurs, and before {@link Component.render}. + * Avoid introducing any side-effects or subscriptions in this method. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use {@link ComponentLifecycle.componentDidMount componentDidMount} or the constructor instead; will stop working in React 17 + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#initializing-state} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + componentWillMount?(): void; + /** + * Called immediately before mounting occurs, and before {@link Component.render}. + * Avoid introducing any side-effects or subscriptions in this method. + * + * This method will not stop working in React 17. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use {@link ComponentLifecycle.componentDidMount componentDidMount} or the constructor instead + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#initializing-state} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + UNSAFE_componentWillMount?(): void; + /** + * Called when the component may be receiving new props. + * React may call this even if props have not changed, so be sure to compare new and existing + * props if you only want to handle changes. + * + * Calling {@link Component.setState} generally does not trigger this method. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use static {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} instead; will stop working in React 17 + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#updating-state-based-on-props} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + componentWillReceiveProps?(nextProps: Readonly

, nextContext: any): void; + /** + * Called when the component may be receiving new props. + * React may call this even if props have not changed, so be sure to compare new and existing + * props if you only want to handle changes. + * + * Calling {@link Component.setState} generally does not trigger this method. + * + * This method will not stop working in React 17. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use static {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} instead + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#updating-state-based-on-props} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + UNSAFE_componentWillReceiveProps?(nextProps: Readonly

, nextContext: any): void; + /** + * Called immediately before rendering when new props or state is received. Not called for the initial render. + * + * Note: You cannot call {@link Component.setState} here. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use getSnapshotBeforeUpdate instead; will stop working in React 17 + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#reading-dom-properties-before-an-update} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + componentWillUpdate?(nextProps: Readonly

, nextState: Readonly, nextContext: any): void; + /** + * Called immediately before rendering when new props or state is received. Not called for the initial render. + * + * Note: You cannot call {@link Component.setState} here. + * + * This method will not stop working in React 17. + * + * Note: the presence of {@link NewLifecycle.getSnapshotBeforeUpdate getSnapshotBeforeUpdate} + * or {@link StaticLifecycle.getDerivedStateFromProps getDerivedStateFromProps} prevents + * this from being invoked. + * + * @deprecated 16.3, use getSnapshotBeforeUpdate instead + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#reading-dom-properties-before-an-update} + * @see {@link https://legacy.reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path} + */ + UNSAFE_componentWillUpdate?(nextProps: Readonly

, nextState: Readonly, nextContext: any): void; + } + + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/blog/2016/07/13/mixins-considered-harmful.html Mixins Considered Harmful} + */ + interface Mixin extends ComponentLifecycle { + mixins?: Array> | undefined; + statics?: { + [key: string]: any; + } | undefined; + + displayName?: string | undefined; + propTypes?: ValidationMap | undefined; + contextTypes?: ValidationMap | undefined; + childContextTypes?: ValidationMap | undefined; + + getDefaultProps?(): P; + getInitialState?(): S; + } + + /** + * @deprecated + * + * @see {@link https://legacy.reactjs.org/blog/2016/07/13/mixins-considered-harmful.html Mixins Considered Harmful} + */ + interface ComponentSpec extends Mixin { + render(): ReactNode; + + [propertyName: string]: any; + } + + function createRef(): RefObject; + + /** + * The type of the component returned from {@link forwardRef}. + * + * @template P The props the component accepts, if any. + * + * @see {@link ExoticComponent} + */ + interface ForwardRefExoticComponent

extends NamedExoticComponent

{ + /** + * @deprecated Use {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#default_value|default values for destructuring assignments instead}. + */ + defaultProps?: Partial

| undefined; + propTypes?: WeakValidationMap

| undefined; + } + + /** + * Lets your component expose a DOM node to a parent component + * using a ref. + * + * @see {@link https://react.dev/reference/react/forwardRef React Docs} + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/forward_and_create_ref/ React TypeScript Cheatsheet} + * + * @param render See the {@link ForwardRefRenderFunction}. + * + * @template T The type of the DOM node. + * @template P The props the component accepts, if any. + * + * @example + * + * ```tsx + * interface Props { + * children?: ReactNode; + * type: "submit" | "button"; + * } + * + * export const FancyButton = forwardRef((props, ref) => ( + * + * )); + * ``` + */ + function forwardRef( + render: ForwardRefRenderFunction, + ): ForwardRefExoticComponent & RefAttributes>; + + /** + * Omits the 'ref' attribute from the given props object. + * + * @template P The props object type. + */ + type PropsWithoutRef

= + // Omit would not be sufficient for this. We'd like to avoid unnecessary mapping and need a distributive conditional to support unions. + // see: https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types + // https://github.com/Microsoft/TypeScript/issues/28339 + P extends any ? ("ref" extends keyof P ? Omit : P) : P; + /** Ensures that the props do not include string ref, which cannot be forwarded */ + type PropsWithRef

= + // Note: String refs can be forwarded. We can't fix this bug without breaking a bunch of libraries now though. + // Just "P extends { ref?: infer R }" looks sufficient, but R will infer as {} if P is {}. + "ref" extends keyof P + ? P extends { ref?: infer R | undefined } + ? string extends R ? PropsWithoutRef

& { ref?: Exclude | undefined } + : P + : P + : P; + + type PropsWithChildren

= P & { children?: ReactNode | undefined }; + + /** + * Used to retrieve the props a component accepts. Can either be passed a string, + * indicating a DOM element (e.g. 'div', 'span', etc.) or the type of a React + * component. + * + * It's usually better to use {@link ComponentPropsWithRef} or {@link ComponentPropsWithoutRef} + * instead of this type, as they let you be explicit about whether or not to include + * the `ref` prop. + * + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/react-types/componentprops/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * // Retrieves the props an 'input' element accepts + * type InputProps = React.ComponentProps<'input'>; + * ``` + * + * @example + * + * ```tsx + * const MyComponent = (props: { foo: number, bar: string }) =>

; + * + * // Retrieves the props 'MyComponent' accepts + * type MyComponentProps = React.ComponentProps; + * ``` + */ + type ComponentProps> = T extends + JSXElementConstructor ? P + : T extends keyof JSX.IntrinsicElements ? JSX.IntrinsicElements[T] + : {}; + + /** + * Used to retrieve the props a component accepts with its ref. Can either be + * passed a string, indicating a DOM element (e.g. 'div', 'span', etc.) or the + * type of a React component. + * + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/react-types/componentprops/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * // Retrieves the props an 'input' element accepts + * type InputProps = React.ComponentPropsWithRef<'input'>; + * ``` + * + * @example + * + * ```tsx + * const MyComponent = (props: { foo: number, bar: string }) =>
; + * + * // Retrieves the props 'MyComponent' accepts + * type MyComponentPropsWithRef = React.ComponentPropsWithRef; + * ``` + */ + type ComponentPropsWithRef = T extends (new(props: infer P) => Component) + ? PropsWithoutRef

& RefAttributes> + : PropsWithRef>; + /** + * Used to retrieve the props a custom component accepts with its ref. + * + * Unlike {@link ComponentPropsWithRef}, this only works with custom + * components, i.e. components you define yourself. This is to improve + * type-checking performance. + * + * @example + * + * ```tsx + * const MyComponent = (props: { foo: number, bar: string }) =>

; + * + * // Retrieves the props 'MyComponent' accepts + * type MyComponentPropsWithRef = React.CustomComponentPropsWithRef; + * ``` + */ + type CustomComponentPropsWithRef = T extends (new(props: infer P) => Component) + ? (PropsWithoutRef

& RefAttributes>) + : T extends ((props: infer P, legacyContext?: any) => ReactNode) ? PropsWithRef

+ : never; + + /** + * Used to retrieve the props a component accepts without its ref. Can either be + * passed a string, indicating a DOM element (e.g. 'div', 'span', etc.) or the + * type of a React component. + * + * @see {@link https://react-typescript-cheatsheet.netlify.app/docs/react-types/componentprops/ React TypeScript Cheatsheet} + * + * @example + * + * ```tsx + * // Retrieves the props an 'input' element accepts + * type InputProps = React.ComponentPropsWithoutRef<'input'>; + * ``` + * + * @example + * + * ```tsx + * const MyComponent = (props: { foo: number, bar: string }) =>

; + * + * // Retrieves the props 'MyComponent' accepts + * type MyComponentPropsWithoutRef = React.ComponentPropsWithoutRef; + * ``` + */ + type ComponentPropsWithoutRef = PropsWithoutRef>; + + type ComponentRef = T extends NamedExoticComponent< + ComponentPropsWithoutRef & RefAttributes + > ? Method + : ComponentPropsWithRef extends RefAttributes ? Method + : never; + + // will show `Memo(${Component.displayName || Component.name})` in devtools by default, + // but can be given its own specific name + type MemoExoticComponent> = NamedExoticComponent> & { + readonly type: T; + }; + + /** + * Lets you skip re-rendering a component when its props are unchanged. + * + * @see {@link https://react.dev/reference/react/memo React Docs} + * + * @param Component The component to memoize. + * @param propsAreEqual A function that will be used to determine if the props have changed. + * + * @example + * + * ```tsx + * import { memo } from 'react'; + * + * const SomeComponent = memo(function SomeComponent(props: { foo: string }) { + * // ... + * }); + * ``` + */ + function memo

( + Component: FunctionComponent

, + propsAreEqual?: (prevProps: Readonly

, nextProps: Readonly

) => boolean, + ): NamedExoticComponent

; + function memo>( + Component: T, + propsAreEqual?: (prevProps: Readonly>, nextProps: Readonly>) => boolean, + ): MemoExoticComponent; + + interface LazyExoticComponent> + extends ExoticComponent> + { + readonly _result: T; + } + + /** + * Lets you defer loading a component’s code until it is rendered for the first time. + * + * @see {@link https://react.dev/reference/react/lazy React Docs} + * + * @param load A function that returns a `Promise` or another thenable (a `Promise`-like object with a + * then method). React will not call `load` until the first time you attempt to render the returned + * component. After React first calls load, it will wait for it to resolve, and then render the + * resolved value’s `.default` as a React component. Both the returned `Promise` and the `Promise`’s + * resolved value will be cached, so React will not call load more than once. If the `Promise` rejects, + * React will throw the rejection reason for the nearest Error Boundary to handle. + * + * @example + * + * ```tsx + * import { lazy } from 'react'; + * + * const MarkdownPreview = lazy(() => import('./MarkdownPreview.js')); + * ``` + */ + function lazy>( + load: () => Promise<{ default: T }>, + ): LazyExoticComponent; + + // + // React Hooks + // ---------------------------------------------------------------------- + + /** + * The instruction passed to a {@link Dispatch} function in {@link useState} + * to tell React what the next value of the {@link useState} should be. + * + * Often found wrapped in {@link Dispatch}. + * + * @template S The type of the state. + * + * @example + * + * ```tsx + * // This return type correctly represents the type of + * // `setCount` in the example below. + * const useCustomState = (): Dispatch> => { + * const [count, setCount] = useState(0); + * + * return setCount; + * } + * ``` + */ + type SetStateAction = S | ((prevState: S) => S); + + /** + * A function that can be used to update the state of a {@link useState} + * or {@link useReducer} hook. + */ + type Dispatch = (value: A) => void; + /** + * A {@link Dispatch} function can sometimes be called without any arguments. + */ + type DispatchWithoutAction = () => void; + // Unlike redux, the actions _can_ be anything + type Reducer = (prevState: S, action: A) => S; + // If useReducer accepts a reducer without action, dispatch may be called without any parameters. + type ReducerWithoutAction = (prevState: S) => S; + // types used to try and prevent the compiler from reducing S + // to a supertype common with the second argument to useReducer() + type ReducerState> = R extends Reducer ? S : never; + type ReducerAction> = R extends Reducer ? A : never; + // The identity check is done with the SameValue algorithm (Object.is), which is stricter than === + type ReducerStateWithoutAction> = R extends ReducerWithoutAction ? S + : never; + type DependencyList = readonly unknown[]; + + // NOTE: callbacks are _only_ allowed to return either void, or a destructor. + type EffectCallback = () => void | Destructor; + + interface MutableRefObject { + current: T; + } + + // This will technically work if you give a Consumer or Provider but it's deprecated and warns + /** + * Accepts a context object (the value returned from `React.createContext`) and returns the current + * context value, as given by the nearest context provider for the given context. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useContext} + */ + function useContext(context: Context /*, (not public API) observedBits?: number|boolean */): T; + /** + * Returns a stateful value, and a function to update it. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useState} + */ + function useState(initialState: S | (() => S)): [S, Dispatch>]; + // convenience overload when first argument is omitted + /** + * Returns a stateful value, and a function to update it. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useState} + */ + function useState(): [S | undefined, Dispatch>]; + /** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useReducer} + */ + // overload where dispatch could accept 0 arguments. + function useReducer, I>( + reducer: R, + initializerArg: I, + initializer: (arg: I) => ReducerStateWithoutAction, + ): [ReducerStateWithoutAction, DispatchWithoutAction]; + /** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useReducer} + */ + // overload where dispatch could accept 0 arguments. + function useReducer>( + reducer: R, + initializerArg: ReducerStateWithoutAction, + initializer?: undefined, + ): [ReducerStateWithoutAction, DispatchWithoutAction]; + /** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useReducer} + */ + // overload where "I" may be a subset of ReducerState; used to provide autocompletion. + // If "I" matches ReducerState exactly then the last overload will allow initializer to be omitted. + // the last overload effectively behaves as if the identity function (x => x) is the initializer. + function useReducer, I>( + reducer: R, + initializerArg: I & ReducerState, + initializer: (arg: I & ReducerState) => ReducerState, + ): [ReducerState, Dispatch>]; + /** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useReducer} + */ + // overload for free "I"; all goes as long as initializer converts it into "ReducerState". + function useReducer, I>( + reducer: R, + initializerArg: I, + initializer: (arg: I) => ReducerState, + ): [ReducerState, Dispatch>]; + /** + * An alternative to `useState`. + * + * `useReducer` is usually preferable to `useState` when you have complex state logic that involves + * multiple sub-values. It also lets you optimize performance for components that trigger deep + * updates because you can pass `dispatch` down instead of callbacks. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useReducer} + */ + + // I'm not sure if I keep this 2-ary or if I make it (2,3)-ary; it's currently (2,3)-ary. + // The Flow types do have an overload for 3-ary invocation with undefined initializer. + + // NOTE: without the ReducerState indirection, TypeScript would reduce S to be the most common + // supertype between the reducer's return type and the initialState (or the initializer's return type), + // which would prevent autocompletion from ever working. + + // TODO: double-check if this weird overload logic is necessary. It is possible it's either a bug + // in older versions, or a regression in newer versions of the typescript completion service. + function useReducer>( + reducer: R, + initialState: ReducerState, + initializer?: undefined, + ): [ReducerState, Dispatch>]; + /** + * `useRef` returns a mutable ref object whose `.current` property is initialized to the passed argument + * (`initialValue`). The returned object will persist for the full lifetime of the component. + * + * Note that `useRef()` is useful for more than the `ref` attribute. It’s handy for keeping any mutable + * value around similar to how you’d use instance fields in classes. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useRef} + */ + function useRef(initialValue: T): MutableRefObject; + // convenience overload for refs given as a ref prop as they typically start with a null value + /** + * `useRef` returns a mutable ref object whose `.current` property is initialized to the passed argument + * (`initialValue`). The returned object will persist for the full lifetime of the component. + * + * Note that `useRef()` is useful for more than the `ref` attribute. It’s handy for keeping any mutable + * value around similar to how you’d use instance fields in classes. + * + * Usage note: if you need the result of useRef to be directly mutable, include `| null` in the type + * of the generic argument. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useRef} + */ + function useRef(initialValue: T | null): RefObject; + // convenience overload for potentially undefined initialValue / call with 0 arguments + // has a default to stop it from defaulting to {} instead + /** + * `useRef` returns a mutable ref object whose `.current` property is initialized to the passed argument + * (`initialValue`). The returned object will persist for the full lifetime of the component. + * + * Note that `useRef()` is useful for more than the `ref` attribute. It’s handy for keeping any mutable + * value around similar to how you’d use instance fields in classes. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useRef} + */ + function useRef(): MutableRefObject; + /** + * The signature is identical to `useEffect`, but it fires synchronously after all DOM mutations. + * Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside + * `useLayoutEffect` will be flushed synchronously, before the browser has a chance to paint. + * + * Prefer the standard `useEffect` when possible to avoid blocking visual updates. + * + * If you’re migrating code from a class component, `useLayoutEffect` fires in the same phase as + * `componentDidMount` and `componentDidUpdate`. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useLayoutEffect} + */ + function useLayoutEffect(effect: EffectCallback, deps?: DependencyList): void; + /** + * Accepts a function that contains imperative, possibly effectful code. + * + * @param effect Imperative function that can return a cleanup function + * @param deps If present, effect will only activate if the values in the list change. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useEffect} + */ + function useEffect(effect: EffectCallback, deps?: DependencyList): void; + // NOTE: this does not accept strings, but this will have to be fixed by removing strings from type Ref + /** + * `useImperativeHandle` customizes the instance value that is exposed to parent components when using + * `ref`. As always, imperative code using refs should be avoided in most cases. + * + * `useImperativeHandle` should be used with `React.forwardRef`. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useImperativeHandle} + */ + function useImperativeHandle(ref: Ref | undefined, init: () => R, deps?: DependencyList): void; + // I made 'inputs' required here and in useMemo as there's no point to memoizing without the memoization key + // useCallback(X) is identical to just using X, useMemo(() => Y) is identical to just using Y. + /** + * `useCallback` will return a memoized version of the callback that only changes if one of the `inputs` + * has changed. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useCallback} + */ + // A specific function type would not trigger implicit any. + // See https://github.com/DefinitelyTyped/DefinitelyTyped/issues/52873#issuecomment-845806435 for a comparison between `Function` and more specific types. + // eslint-disable-next-line @typescript-eslint/ban-types + function useCallback(callback: T, deps: DependencyList): T; + /** + * `useMemo` will only recompute the memoized value when one of the `deps` has changed. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useMemo} + */ + // allow undefined, but don't make it optional as that is very likely a mistake + function useMemo(factory: () => T, deps: DependencyList): T; + /** + * `useDebugValue` can be used to display a label for custom hooks in React DevTools. + * + * NOTE: We don’t recommend adding debug values to every custom hook. + * It’s most valuable for custom hooks that are part of shared libraries. + * + * @version 16.8.0 + * @see {@link https://react.dev/reference/react/useDebugValue} + */ + // the name of the custom hook is itself derived from the function name at runtime: + // it's just the function name without the "use" prefix. + function useDebugValue(value: T, format?: (value: T) => any): void; + + // must be synchronous + export type TransitionFunction = () => VoidOrUndefinedOnly; + // strange definition to allow vscode to show documentation on the invocation + export interface TransitionStartFunction { + /** + * State updates caused inside the callback are allowed to be deferred. + * + * **If some state update causes a component to suspend, that state update should be wrapped in a transition.** + * + * @param callback A _synchronous_ function which causes state updates that can be deferred. + */ + (callback: TransitionFunction): void; + } + + /** + * Returns a deferred version of the value that may “lag behind” it. + * + * This is commonly used to keep the interface responsive when you have something that renders immediately + * based on user input and something that needs to wait for a data fetch. + * + * A good example of this is a text input. + * + * @param value The value that is going to be deferred + * + * @see {@link https://react.dev/reference/react/useDeferredValue} + */ + export function useDeferredValue(value: T): T; + + /** + * Allows components to avoid undesirable loading states by waiting for content to load + * before transitioning to the next screen. It also allows components to defer slower, + * data fetching updates until subsequent renders so that more crucial updates can be + * rendered immediately. + * + * The `useTransition` hook returns two values in an array. + * + * The first is a boolean, React’s way of informing us whether we’re waiting for the transition to finish. + * The second is a function that takes a callback. We can use it to tell React which state we want to defer. + * + * **If some state update causes a component to suspend, that state update should be wrapped in a transition.** + * + * @see {@link https://react.dev/reference/react/useTransition} + */ + export function useTransition(): [boolean, TransitionStartFunction]; + + /** + * Similar to `useTransition` but allows uses where hooks are not available. + * + * @param callback A _synchronous_ function which causes state updates that can be deferred. + */ + export function startTransition(scope: TransitionFunction): void; + + /** + * Wrap any code rendering and triggering updates to your components into `act()` calls. + * + * Ensures that the behavior in your tests matches what happens in the browser + * more closely by executing pending `useEffect`s before returning. This also + * reduces the amount of re-renders done. + * + * @param callback A synchronous, void callback that will execute as a single, complete React commit. + * + * @see https://reactjs.org/blog/2019/02/06/react-v16.8.0.html#testing-hooks + */ + // While act does always return Thenable, if a void function is passed, we pretend the return value is also void to not trigger dangling Promise lint rules. + export function act(callback: () => VoidOrUndefinedOnly): void; + export function act(callback: () => T | Promise): Promise; + + export function useId(): string; + + /** + * @param effect Imperative function that can return a cleanup function + * @param deps If present, effect will only activate if the values in the list change. + * + * @see {@link https://github.com/facebook/react/pull/21913} + */ + export function useInsertionEffect(effect: EffectCallback, deps?: DependencyList): void; + + /** + * @param subscribe + * @param getSnapshot + * + * @see {@link https://github.com/reactwg/react-18/discussions/86} + */ + // keep in sync with `useSyncExternalStore` from `use-sync-external-store` + export function useSyncExternalStore( + subscribe: (onStoreChange: () => void) => () => void, + getSnapshot: () => Snapshot, + getServerSnapshot?: () => Snapshot, + ): Snapshot; + + // + // Event System + // ---------------------------------------------------------------------- + // TODO: change any to unknown when moving to TS v3 + interface BaseSyntheticEvent { + nativeEvent: E; + currentTarget: C; + target: T; + bubbles: boolean; + cancelable: boolean; + defaultPrevented: boolean; + eventPhase: number; + isTrusted: boolean; + preventDefault(): void; + isDefaultPrevented(): boolean; + stopPropagation(): void; + isPropagationStopped(): boolean; + persist(): void; + timeStamp: number; + type: string; + } + + /** + * currentTarget - a reference to the element on which the event listener is registered. + * + * target - a reference to the element from which the event was originally dispatched. + * This might be a child element to the element on which the event listener is registered. + * If you thought this should be `EventTarget & T`, see https://github.com/DefinitelyTyped/DefinitelyTyped/issues/11508#issuecomment-256045682 + */ + interface SyntheticEvent extends BaseSyntheticEvent {} + + interface ClipboardEvent extends SyntheticEvent { + clipboardData: DataTransfer; + } + + interface CompositionEvent extends SyntheticEvent { + data: string; + } + + interface DragEvent extends MouseEvent { + dataTransfer: DataTransfer; + } + + interface PointerEvent extends MouseEvent { + pointerId: number; + pressure: number; + tangentialPressure: number; + tiltX: number; + tiltY: number; + twist: number; + width: number; + height: number; + pointerType: "mouse" | "pen" | "touch"; + isPrimary: boolean; + } + + interface FocusEvent extends SyntheticEvent { + relatedTarget: (EventTarget & RelatedTarget) | null; + target: EventTarget & Target; + } + + interface FormEvent extends SyntheticEvent { + } + + interface InvalidEvent extends SyntheticEvent { + target: EventTarget & T; + } + + interface ChangeEvent extends SyntheticEvent { + target: EventTarget & T; + } + + export type ModifierKey = + | "Alt" + | "AltGraph" + | "CapsLock" + | "Control" + | "Fn" + | "FnLock" + | "Hyper" + | "Meta" + | "NumLock" + | "ScrollLock" + | "Shift" + | "Super" + | "Symbol" + | "SymbolLock"; + + interface KeyboardEvent extends UIEvent { + altKey: boolean; + /** @deprecated */ + charCode: number; + ctrlKey: boolean; + code: string; + /** + * See [DOM Level 3 Events spec](https://www.w3.org/TR/uievents-key/#keys-modifier). for a list of valid (case-sensitive) arguments to this method. + */ + getModifierState(key: ModifierKey): boolean; + /** + * See the [DOM Level 3 Events spec](https://www.w3.org/TR/uievents-key/#named-key-attribute-values). for possible values + */ + key: string; + /** @deprecated */ + keyCode: number; + locale: string; + location: number; + metaKey: boolean; + repeat: boolean; + shiftKey: boolean; + /** @deprecated */ + which: number; + } + + interface MouseEvent extends UIEvent { + altKey: boolean; + button: number; + buttons: number; + clientX: number; + clientY: number; + ctrlKey: boolean; + /** + * See [DOM Level 3 Events spec](https://www.w3.org/TR/uievents-key/#keys-modifier). for a list of valid (case-sensitive) arguments to this method. + */ + getModifierState(key: ModifierKey): boolean; + metaKey: boolean; + movementX: number; + movementY: number; + pageX: number; + pageY: number; + relatedTarget: EventTarget | null; + screenX: number; + screenY: number; + shiftKey: boolean; + } + + interface TouchEvent extends UIEvent { + altKey: boolean; + changedTouches: TouchList; + ctrlKey: boolean; + /** + * See [DOM Level 3 Events spec](https://www.w3.org/TR/uievents-key/#keys-modifier). for a list of valid (case-sensitive) arguments to this method. + */ + getModifierState(key: ModifierKey): boolean; + metaKey: boolean; + shiftKey: boolean; + targetTouches: TouchList; + touches: TouchList; + } + + interface UIEvent extends SyntheticEvent { + detail: number; + view: AbstractView; + } + + interface WheelEvent extends MouseEvent { + deltaMode: number; + deltaX: number; + deltaY: number; + deltaZ: number; + } + + interface AnimationEvent extends SyntheticEvent { + animationName: string; + elapsedTime: number; + pseudoElement: string; + } + + interface TransitionEvent extends SyntheticEvent { + elapsedTime: number; + propertyName: string; + pseudoElement: string; + } + + // + // Event Handler Types + // ---------------------------------------------------------------------- + + type EventHandler> = { bivarianceHack(event: E): void }["bivarianceHack"]; + + type ReactEventHandler = EventHandler>; + + type ClipboardEventHandler = EventHandler>; + type CompositionEventHandler = EventHandler>; + type DragEventHandler = EventHandler>; + type FocusEventHandler = EventHandler>; + type FormEventHandler = EventHandler>; + type ChangeEventHandler = EventHandler>; + type KeyboardEventHandler = EventHandler>; + type MouseEventHandler = EventHandler>; + type TouchEventHandler = EventHandler>; + type PointerEventHandler = EventHandler>; + type UIEventHandler = EventHandler>; + type WheelEventHandler = EventHandler>; + type AnimationEventHandler = EventHandler>; + type TransitionEventHandler = EventHandler>; + + // + // Props / DOM Attributes + // ---------------------------------------------------------------------- + + interface HTMLProps extends AllHTMLAttributes, ClassAttributes { + } + + type DetailedHTMLProps, T> = ClassAttributes & E; + + interface SVGProps extends SVGAttributes, ClassAttributes { + } + + interface SVGLineElementAttributes extends SVGProps {} + interface SVGTextElementAttributes extends SVGProps {} + + interface DOMAttributes { + children?: ReactNode | undefined; + dangerouslySetInnerHTML?: { + // Should be InnerHTML['innerHTML']. + // But unfortunately we're mixing renderer-specific type declarations. + __html: string | TrustedHTML; + } | undefined; + + // Clipboard Events + onCopy?: ClipboardEventHandler | undefined; + onCopyCapture?: ClipboardEventHandler | undefined; + onCut?: ClipboardEventHandler | undefined; + onCutCapture?: ClipboardEventHandler | undefined; + onPaste?: ClipboardEventHandler | undefined; + onPasteCapture?: ClipboardEventHandler | undefined; + + // Composition Events + onCompositionEnd?: CompositionEventHandler | undefined; + onCompositionEndCapture?: CompositionEventHandler | undefined; + onCompositionStart?: CompositionEventHandler | undefined; + onCompositionStartCapture?: CompositionEventHandler | undefined; + onCompositionUpdate?: CompositionEventHandler | undefined; + onCompositionUpdateCapture?: CompositionEventHandler | undefined; + + // Focus Events + onFocus?: FocusEventHandler | undefined; + onFocusCapture?: FocusEventHandler | undefined; + onBlur?: FocusEventHandler | undefined; + onBlurCapture?: FocusEventHandler | undefined; + + // Form Events + onChange?: FormEventHandler | undefined; + onChangeCapture?: FormEventHandler | undefined; + onBeforeInput?: FormEventHandler | undefined; + onBeforeInputCapture?: FormEventHandler | undefined; + onInput?: FormEventHandler | undefined; + onInputCapture?: FormEventHandler | undefined; + onReset?: FormEventHandler | undefined; + onResetCapture?: FormEventHandler | undefined; + onSubmit?: FormEventHandler | undefined; + onSubmitCapture?: FormEventHandler | undefined; + onInvalid?: FormEventHandler | undefined; + onInvalidCapture?: FormEventHandler | undefined; + + // Image Events + onLoad?: ReactEventHandler | undefined; + onLoadCapture?: ReactEventHandler | undefined; + onError?: ReactEventHandler | undefined; // also a Media Event + onErrorCapture?: ReactEventHandler | undefined; // also a Media Event + + // Keyboard Events + onKeyDown?: KeyboardEventHandler | undefined; + onKeyDownCapture?: KeyboardEventHandler | undefined; + /** @deprecated Use `onKeyUp` or `onKeyDown` instead */ + onKeyPress?: KeyboardEventHandler | undefined; + /** @deprecated Use `onKeyUpCapture` or `onKeyDownCapture` instead */ + onKeyPressCapture?: KeyboardEventHandler | undefined; + onKeyUp?: KeyboardEventHandler | undefined; + onKeyUpCapture?: KeyboardEventHandler | undefined; + + // Media Events + onAbort?: ReactEventHandler | undefined; + onAbortCapture?: ReactEventHandler | undefined; + onCanPlay?: ReactEventHandler | undefined; + onCanPlayCapture?: ReactEventHandler | undefined; + onCanPlayThrough?: ReactEventHandler | undefined; + onCanPlayThroughCapture?: ReactEventHandler | undefined; + onDurationChange?: ReactEventHandler | undefined; + onDurationChangeCapture?: ReactEventHandler | undefined; + onEmptied?: ReactEventHandler | undefined; + onEmptiedCapture?: ReactEventHandler | undefined; + onEncrypted?: ReactEventHandler | undefined; + onEncryptedCapture?: ReactEventHandler | undefined; + onEnded?: ReactEventHandler | undefined; + onEndedCapture?: ReactEventHandler | undefined; + onLoadedData?: ReactEventHandler | undefined; + onLoadedDataCapture?: ReactEventHandler | undefined; + onLoadedMetadata?: ReactEventHandler | undefined; + onLoadedMetadataCapture?: ReactEventHandler | undefined; + onLoadStart?: ReactEventHandler | undefined; + onLoadStartCapture?: ReactEventHandler | undefined; + onPause?: ReactEventHandler | undefined; + onPauseCapture?: ReactEventHandler | undefined; + onPlay?: ReactEventHandler | undefined; + onPlayCapture?: ReactEventHandler | undefined; + onPlaying?: ReactEventHandler | undefined; + onPlayingCapture?: ReactEventHandler | undefined; + onProgress?: ReactEventHandler | undefined; + onProgressCapture?: ReactEventHandler | undefined; + onRateChange?: ReactEventHandler | undefined; + onRateChangeCapture?: ReactEventHandler | undefined; + onResize?: ReactEventHandler | undefined; + onResizeCapture?: ReactEventHandler | undefined; + onSeeked?: ReactEventHandler | undefined; + onSeekedCapture?: ReactEventHandler | undefined; + onSeeking?: ReactEventHandler | undefined; + onSeekingCapture?: ReactEventHandler | undefined; + onStalled?: ReactEventHandler | undefined; + onStalledCapture?: ReactEventHandler | undefined; + onSuspend?: ReactEventHandler | undefined; + onSuspendCapture?: ReactEventHandler | undefined; + onTimeUpdate?: ReactEventHandler | undefined; + onTimeUpdateCapture?: ReactEventHandler | undefined; + onVolumeChange?: ReactEventHandler | undefined; + onVolumeChangeCapture?: ReactEventHandler | undefined; + onWaiting?: ReactEventHandler | undefined; + onWaitingCapture?: ReactEventHandler | undefined; + + // MouseEvents + onAuxClick?: MouseEventHandler | undefined; + onAuxClickCapture?: MouseEventHandler | undefined; + onClick?: MouseEventHandler | undefined; + onClickCapture?: MouseEventHandler | undefined; + onContextMenu?: MouseEventHandler | undefined; + onContextMenuCapture?: MouseEventHandler | undefined; + onDoubleClick?: MouseEventHandler | undefined; + onDoubleClickCapture?: MouseEventHandler | undefined; + onDrag?: DragEventHandler | undefined; + onDragCapture?: DragEventHandler | undefined; + onDragEnd?: DragEventHandler | undefined; + onDragEndCapture?: DragEventHandler | undefined; + onDragEnter?: DragEventHandler | undefined; + onDragEnterCapture?: DragEventHandler | undefined; + onDragExit?: DragEventHandler | undefined; + onDragExitCapture?: DragEventHandler | undefined; + onDragLeave?: DragEventHandler | undefined; + onDragLeaveCapture?: DragEventHandler | undefined; + onDragOver?: DragEventHandler | undefined; + onDragOverCapture?: DragEventHandler | undefined; + onDragStart?: DragEventHandler | undefined; + onDragStartCapture?: DragEventHandler | undefined; + onDrop?: DragEventHandler | undefined; + onDropCapture?: DragEventHandler | undefined; + onMouseDown?: MouseEventHandler | undefined; + onMouseDownCapture?: MouseEventHandler | undefined; + onMouseEnter?: MouseEventHandler | undefined; + onMouseLeave?: MouseEventHandler | undefined; + onMouseMove?: MouseEventHandler | undefined; + onMouseMoveCapture?: MouseEventHandler | undefined; + onMouseOut?: MouseEventHandler | undefined; + onMouseOutCapture?: MouseEventHandler | undefined; + onMouseOver?: MouseEventHandler | undefined; + onMouseOverCapture?: MouseEventHandler | undefined; + onMouseUp?: MouseEventHandler | undefined; + onMouseUpCapture?: MouseEventHandler | undefined; + + // Selection Events + onSelect?: ReactEventHandler | undefined; + onSelectCapture?: ReactEventHandler | undefined; + + // Touch Events + onTouchCancel?: TouchEventHandler | undefined; + onTouchCancelCapture?: TouchEventHandler | undefined; + onTouchEnd?: TouchEventHandler | undefined; + onTouchEndCapture?: TouchEventHandler | undefined; + onTouchMove?: TouchEventHandler | undefined; + onTouchMoveCapture?: TouchEventHandler | undefined; + onTouchStart?: TouchEventHandler | undefined; + onTouchStartCapture?: TouchEventHandler | undefined; + + // Pointer Events + onPointerDown?: PointerEventHandler | undefined; + onPointerDownCapture?: PointerEventHandler | undefined; + onPointerMove?: PointerEventHandler | undefined; + onPointerMoveCapture?: PointerEventHandler | undefined; + onPointerUp?: PointerEventHandler | undefined; + onPointerUpCapture?: PointerEventHandler | undefined; + onPointerCancel?: PointerEventHandler | undefined; + onPointerCancelCapture?: PointerEventHandler | undefined; + onPointerEnter?: PointerEventHandler | undefined; + onPointerLeave?: PointerEventHandler | undefined; + onPointerOver?: PointerEventHandler | undefined; + onPointerOverCapture?: PointerEventHandler | undefined; + onPointerOut?: PointerEventHandler | undefined; + onPointerOutCapture?: PointerEventHandler | undefined; + onGotPointerCapture?: PointerEventHandler | undefined; + onGotPointerCaptureCapture?: PointerEventHandler | undefined; + onLostPointerCapture?: PointerEventHandler | undefined; + onLostPointerCaptureCapture?: PointerEventHandler | undefined; + + // UI Events + onScroll?: UIEventHandler | undefined; + onScrollCapture?: UIEventHandler | undefined; + + // Wheel Events + onWheel?: WheelEventHandler | undefined; + onWheelCapture?: WheelEventHandler | undefined; + + // Animation Events + onAnimationStart?: AnimationEventHandler | undefined; + onAnimationStartCapture?: AnimationEventHandler | undefined; + onAnimationEnd?: AnimationEventHandler | undefined; + onAnimationEndCapture?: AnimationEventHandler | undefined; + onAnimationIteration?: AnimationEventHandler | undefined; + onAnimationIterationCapture?: AnimationEventHandler | undefined; + + // Transition Events + onTransitionEnd?: TransitionEventHandler | undefined; + onTransitionEndCapture?: TransitionEventHandler | undefined; + } + + export interface CSSProperties extends CSS.Properties { + /** + * The index signature was removed to enable closed typing for style + * using CSSType. You're able to use type assertion or module augmentation + * to add properties or an index signature of your own. + * + * For examples and more information, visit: + * https://github.com/frenic/csstype#what-should-i-do-when-i-get-type-errors + */ + } + + // All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/ + interface AriaAttributes { + /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */ + "aria-activedescendant"?: string | undefined; + /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */ + "aria-atomic"?: Booleanish | undefined; + /** + * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be + * presented if they are made. + */ + "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined; + /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */ + /** + * Defines a string value that labels the current element, which is intended to be converted into Braille. + * @see aria-label. + */ + "aria-braillelabel"?: string | undefined; + /** + * Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended to be converted into Braille. + * @see aria-roledescription. + */ + "aria-brailleroledescription"?: string | undefined; + "aria-busy"?: Booleanish | undefined; + /** + * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. + * @see aria-pressed @see aria-selected. + */ + "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined; + /** + * Defines the total number of columns in a table, grid, or treegrid. + * @see aria-colindex. + */ + "aria-colcount"?: number | undefined; + /** + * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. + * @see aria-colcount @see aria-colspan. + */ + "aria-colindex"?: number | undefined; + /** + * Defines a human readable text alternative of aria-colindex. + * @see aria-rowindextext. + */ + "aria-colindextext"?: string | undefined; + /** + * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-colindex @see aria-rowspan. + */ + "aria-colspan"?: number | undefined; + /** + * Identifies the element (or elements) whose contents or presence are controlled by the current element. + * @see aria-owns. + */ + "aria-controls"?: string | undefined; + /** Indicates the element that represents the current item within a container or set of related elements. */ + "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined; + /** + * Identifies the element (or elements) that describes the object. + * @see aria-labelledby + */ + "aria-describedby"?: string | undefined; + /** + * Defines a string value that describes or annotates the current element. + * @see related aria-describedby. + */ + "aria-description"?: string | undefined; + /** + * Identifies the element that provides a detailed, extended description for the object. + * @see aria-describedby. + */ + "aria-details"?: string | undefined; + /** + * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. + * @see aria-hidden @see aria-readonly. + */ + "aria-disabled"?: Booleanish | undefined; + /** + * Indicates what functions can be performed when a dragged object is released on the drop target. + * @deprecated in ARIA 1.1 + */ + "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined; + /** + * Identifies the element that provides an error message for the object. + * @see aria-invalid @see aria-describedby. + */ + "aria-errormessage"?: string | undefined; + /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */ + "aria-expanded"?: Booleanish | undefined; + /** + * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, + * allows assistive technology to override the general default of reading in document source order. + */ + "aria-flowto"?: string | undefined; + /** + * Indicates an element's "grabbed" state in a drag-and-drop operation. + * @deprecated in ARIA 1.1 + */ + "aria-grabbed"?: Booleanish | undefined; + /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */ + "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined; + /** + * Indicates whether the element is exposed to an accessibility API. + * @see aria-disabled. + */ + "aria-hidden"?: Booleanish | undefined; + /** + * Indicates the entered value does not conform to the format expected by the application. + * @see aria-errormessage. + */ + "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined; + /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */ + "aria-keyshortcuts"?: string | undefined; + /** + * Defines a string value that labels the current element. + * @see aria-labelledby. + */ + "aria-label"?: string | undefined; + /** + * Identifies the element (or elements) that labels the current element. + * @see aria-describedby. + */ + "aria-labelledby"?: string | undefined; + /** Defines the hierarchical level of an element within a structure. */ + "aria-level"?: number | undefined; + /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */ + "aria-live"?: "off" | "assertive" | "polite" | undefined; + /** Indicates whether an element is modal when displayed. */ + "aria-modal"?: Booleanish | undefined; + /** Indicates whether a text box accepts multiple lines of input or only a single line. */ + "aria-multiline"?: Booleanish | undefined; + /** Indicates that the user may select more than one item from the current selectable descendants. */ + "aria-multiselectable"?: Booleanish | undefined; + /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */ + "aria-orientation"?: "horizontal" | "vertical" | undefined; + /** + * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship + * between DOM elements where the DOM hierarchy cannot be used to represent the relationship. + * @see aria-controls. + */ + "aria-owns"?: string | undefined; + /** + * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. + * A hint could be a sample value or a brief description of the expected format. + */ + "aria-placeholder"?: string | undefined; + /** + * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-setsize. + */ + "aria-posinset"?: number | undefined; + /** + * Indicates the current "pressed" state of toggle buttons. + * @see aria-checked @see aria-selected. + */ + "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined; + /** + * Indicates that the element is not editable, but is otherwise operable. + * @see aria-disabled. + */ + "aria-readonly"?: Booleanish | undefined; + /** + * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. + * @see aria-atomic. + */ + "aria-relevant"?: + | "additions" + | "additions removals" + | "additions text" + | "all" + | "removals" + | "removals additions" + | "removals text" + | "text" + | "text additions" + | "text removals" + | undefined; + /** Indicates that user input is required on the element before a form may be submitted. */ + "aria-required"?: Booleanish | undefined; + /** Defines a human-readable, author-localized description for the role of an element. */ + "aria-roledescription"?: string | undefined; + /** + * Defines the total number of rows in a table, grid, or treegrid. + * @see aria-rowindex. + */ + "aria-rowcount"?: number | undefined; + /** + * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. + * @see aria-rowcount @see aria-rowspan. + */ + "aria-rowindex"?: number | undefined; + /** + * Defines a human readable text alternative of aria-rowindex. + * @see aria-colindextext. + */ + "aria-rowindextext"?: string | undefined; + /** + * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-rowindex @see aria-colspan. + */ + "aria-rowspan"?: number | undefined; + /** + * Indicates the current "selected" state of various widgets. + * @see aria-checked @see aria-pressed. + */ + "aria-selected"?: Booleanish | undefined; + /** + * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-posinset. + */ + "aria-setsize"?: number | undefined; + /** Indicates if items in a table or grid are sorted in ascending or descending order. */ + "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined; + /** Defines the maximum allowed value for a range widget. */ + "aria-valuemax"?: number | undefined; + /** Defines the minimum allowed value for a range widget. */ + "aria-valuemin"?: number | undefined; + /** + * Defines the current value for a range widget. + * @see aria-valuetext. + */ + "aria-valuenow"?: number | undefined; + /** Defines the human readable text alternative of aria-valuenow for a range widget. */ + "aria-valuetext"?: string | undefined; + } + + // All the WAI-ARIA 1.1 role attribute values from https://www.w3.org/TR/wai-aria-1.1/#role_definitions + type AriaRole = + | "alert" + | "alertdialog" + | "application" + | "article" + | "banner" + | "button" + | "cell" + | "checkbox" + | "columnheader" + | "combobox" + | "complementary" + | "contentinfo" + | "definition" + | "dialog" + | "directory" + | "document" + | "feed" + | "figure" + | "form" + | "grid" + | "gridcell" + | "group" + | "heading" + | "img" + | "link" + | "list" + | "listbox" + | "listitem" + | "log" + | "main" + | "marquee" + | "math" + | "menu" + | "menubar" + | "menuitem" + | "menuitemcheckbox" + | "menuitemradio" + | "navigation" + | "none" + | "note" + | "option" + | "presentation" + | "progressbar" + | "radio" + | "radiogroup" + | "region" + | "row" + | "rowgroup" + | "rowheader" + | "scrollbar" + | "search" + | "searchbox" + | "separator" + | "slider" + | "spinbutton" + | "status" + | "switch" + | "tab" + | "table" + | "tablist" + | "tabpanel" + | "term" + | "textbox" + | "timer" + | "toolbar" + | "tooltip" + | "tree" + | "treegrid" + | "treeitem" + | (string & {}); + + interface HTMLAttributes extends AriaAttributes, DOMAttributes { + // React-specific Attributes + defaultChecked?: boolean | undefined; + defaultValue?: string | number | readonly string[] | undefined; + suppressContentEditableWarning?: boolean | undefined; + suppressHydrationWarning?: boolean | undefined; + + // Standard HTML Attributes + accessKey?: string | undefined; + autoFocus?: boolean | undefined; + className?: string | undefined; + contentEditable?: Booleanish | "inherit" | "plaintext-only" | undefined; + contextMenu?: string | undefined; + dir?: string | undefined; + draggable?: Booleanish | undefined; + hidden?: boolean | undefined; + id?: string | undefined; + lang?: string | undefined; + nonce?: string | undefined; + slot?: string | undefined; + spellCheck?: Booleanish | undefined; + style?: CSSProperties | undefined; + tabIndex?: number | undefined; + title?: string | undefined; + translate?: "yes" | "no" | undefined; + + // Unknown + radioGroup?: string | undefined; // , + + // WAI-ARIA + role?: AriaRole | undefined; + + // RDFa Attributes + about?: string | undefined; + content?: string | undefined; + datatype?: string | undefined; + inlist?: any; + prefix?: string | undefined; + property?: string | undefined; + rel?: string | undefined; + resource?: string | undefined; + rev?: string | undefined; + typeof?: string | undefined; + vocab?: string | undefined; + + // Non-standard Attributes + autoCapitalize?: string | undefined; + autoCorrect?: string | undefined; + autoSave?: string | undefined; + color?: string | undefined; + itemProp?: string | undefined; + itemScope?: boolean | undefined; + itemType?: string | undefined; + itemID?: string | undefined; + itemRef?: string | undefined; + results?: number | undefined; + security?: string | undefined; + unselectable?: "on" | "off" | undefined; + + // Living Standard + /** + * Hints at the type of data that might be entered by the user while editing the element or its contents + * @see {@link https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute} + */ + inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined; + /** + * Specify that a standard HTML element should behave like a defined custom built-in element + * @see {@link https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is} + */ + is?: string | undefined; + } + + /** + * For internal usage only. + * Different release channels declare additional types of ReactNode this particular release channel accepts. + * App or library types should never augment this interface. + */ + interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS {} + + interface AllHTMLAttributes extends HTMLAttributes { + // Standard HTML Attributes + accept?: string | undefined; + acceptCharset?: string | undefined; + action?: + | string + | undefined + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS + ]; + allowFullScreen?: boolean | undefined; + allowTransparency?: boolean | undefined; + alt?: string | undefined; + as?: string | undefined; + async?: boolean | undefined; + autoComplete?: string | undefined; + autoPlay?: boolean | undefined; + capture?: boolean | "user" | "environment" | undefined; + cellPadding?: number | string | undefined; + cellSpacing?: number | string | undefined; + charSet?: string | undefined; + challenge?: string | undefined; + checked?: boolean | undefined; + cite?: string | undefined; + classID?: string | undefined; + cols?: number | undefined; + colSpan?: number | undefined; + controls?: boolean | undefined; + coords?: string | undefined; + crossOrigin?: CrossOrigin; + data?: string | undefined; + dateTime?: string | undefined; + default?: boolean | undefined; + defer?: boolean | undefined; + disabled?: boolean | undefined; + download?: any; + encType?: string | undefined; + form?: string | undefined; + formAction?: + | string + | undefined + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS + ]; + formEncType?: string | undefined; + formMethod?: string | undefined; + formNoValidate?: boolean | undefined; + formTarget?: string | undefined; + frameBorder?: number | string | undefined; + headers?: string | undefined; + height?: number | string | undefined; + high?: number | undefined; + href?: string | undefined; + hrefLang?: string | undefined; + htmlFor?: string | undefined; + httpEquiv?: string | undefined; + integrity?: string | undefined; + keyParams?: string | undefined; + keyType?: string | undefined; + kind?: string | undefined; + label?: string | undefined; + list?: string | undefined; + loop?: boolean | undefined; + low?: number | undefined; + manifest?: string | undefined; + marginHeight?: number | undefined; + marginWidth?: number | undefined; + max?: number | string | undefined; + maxLength?: number | undefined; + media?: string | undefined; + mediaGroup?: string | undefined; + method?: string | undefined; + min?: number | string | undefined; + minLength?: number | undefined; + multiple?: boolean | undefined; + muted?: boolean | undefined; + name?: string | undefined; + noValidate?: boolean | undefined; + open?: boolean | undefined; + optimum?: number | undefined; + pattern?: string | undefined; + placeholder?: string | undefined; + playsInline?: boolean | undefined; + poster?: string | undefined; + preload?: string | undefined; + readOnly?: boolean | undefined; + required?: boolean | undefined; + reversed?: boolean | undefined; + rows?: number | undefined; + rowSpan?: number | undefined; + sandbox?: string | undefined; + scope?: string | undefined; + scoped?: boolean | undefined; + scrolling?: string | undefined; + seamless?: boolean | undefined; + selected?: boolean | undefined; + shape?: string | undefined; + size?: number | undefined; + sizes?: string | undefined; + span?: number | undefined; + src?: string | undefined; + srcDoc?: string | undefined; + srcLang?: string | undefined; + srcSet?: string | undefined; + start?: number | undefined; + step?: number | string | undefined; + summary?: string | undefined; + target?: string | undefined; + type?: string | undefined; + useMap?: string | undefined; + value?: string | readonly string[] | number | undefined; + width?: number | string | undefined; + wmode?: string | undefined; + wrap?: string | undefined; + } + + type HTMLAttributeReferrerPolicy = + | "" + | "no-referrer" + | "no-referrer-when-downgrade" + | "origin" + | "origin-when-cross-origin" + | "same-origin" + | "strict-origin" + | "strict-origin-when-cross-origin" + | "unsafe-url"; + + type HTMLAttributeAnchorTarget = + | "_self" + | "_blank" + | "_parent" + | "_top" + | (string & {}); + + interface AnchorHTMLAttributes extends HTMLAttributes { + download?: any; + href?: string | undefined; + hrefLang?: string | undefined; + media?: string | undefined; + ping?: string | undefined; + target?: HTMLAttributeAnchorTarget | undefined; + type?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + } + + interface AudioHTMLAttributes extends MediaHTMLAttributes {} + + interface AreaHTMLAttributes extends HTMLAttributes { + alt?: string | undefined; + coords?: string | undefined; + download?: any; + href?: string | undefined; + hrefLang?: string | undefined; + media?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + shape?: string | undefined; + target?: string | undefined; + } + + interface BaseHTMLAttributes extends HTMLAttributes { + href?: string | undefined; + target?: string | undefined; + } + + interface BlockquoteHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; + } + + interface ButtonHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + form?: string | undefined; + formAction?: + | string + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS + ] + | undefined; + formEncType?: string | undefined; + formMethod?: string | undefined; + formNoValidate?: boolean | undefined; + formTarget?: string | undefined; + name?: string | undefined; + type?: "submit" | "reset" | "button" | undefined; + value?: string | readonly string[] | number | undefined; + } + + interface CanvasHTMLAttributes extends HTMLAttributes { + height?: number | string | undefined; + width?: number | string | undefined; + } + + interface ColHTMLAttributes extends HTMLAttributes { + span?: number | undefined; + width?: number | string | undefined; + } + + interface ColgroupHTMLAttributes extends HTMLAttributes { + span?: number | undefined; + } + + interface DataHTMLAttributes extends HTMLAttributes { + value?: string | readonly string[] | number | undefined; + } + + interface DetailsHTMLAttributes extends HTMLAttributes { + open?: boolean | undefined; + onToggle?: ReactEventHandler | undefined; + name?: string | undefined; + } + + interface DelHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; + dateTime?: string | undefined; + } + + interface DialogHTMLAttributes extends HTMLAttributes { + onCancel?: ReactEventHandler | undefined; + onClose?: ReactEventHandler | undefined; + open?: boolean | undefined; + } + + interface EmbedHTMLAttributes extends HTMLAttributes { + height?: number | string | undefined; + src?: string | undefined; + type?: string | undefined; + width?: number | string | undefined; + } + + interface FieldsetHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + form?: string | undefined; + name?: string | undefined; + } + + interface FormHTMLAttributes extends HTMLAttributes { + acceptCharset?: string | undefined; + action?: + | string + | undefined + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS + ]; + autoComplete?: string | undefined; + encType?: string | undefined; + method?: string | undefined; + name?: string | undefined; + noValidate?: boolean | undefined; + target?: string | undefined; + } + + interface HtmlHTMLAttributes extends HTMLAttributes { + manifest?: string | undefined; + } + + interface IframeHTMLAttributes extends HTMLAttributes { + allow?: string | undefined; + allowFullScreen?: boolean | undefined; + allowTransparency?: boolean | undefined; + /** @deprecated */ + frameBorder?: number | string | undefined; + height?: number | string | undefined; + loading?: "eager" | "lazy" | undefined; + /** @deprecated */ + marginHeight?: number | undefined; + /** @deprecated */ + marginWidth?: number | undefined; + name?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + sandbox?: string | undefined; + /** @deprecated */ + scrolling?: string | undefined; + seamless?: boolean | undefined; + src?: string | undefined; + srcDoc?: string | undefined; + width?: number | string | undefined; + } + + interface ImgHTMLAttributes extends HTMLAttributes { + alt?: string | undefined; + crossOrigin?: CrossOrigin; + decoding?: "async" | "auto" | "sync" | undefined; + fetchPriority?: "high" | "low" | "auto"; + height?: number | string | undefined; + loading?: "eager" | "lazy" | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + sizes?: string | undefined; + src?: string | undefined; + srcSet?: string | undefined; + useMap?: string | undefined; + width?: number | string | undefined; + } + + interface InsHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; + dateTime?: string | undefined; + } + + type HTMLInputTypeAttribute = + | "button" + | "checkbox" + | "color" + | "date" + | "datetime-local" + | "email" + | "file" + | "hidden" + | "image" + | "month" + | "number" + | "password" + | "radio" + | "range" + | "reset" + | "search" + | "submit" + | "tel" + | "text" + | "time" + | "url" + | "week" + | (string & {}); + + type AutoFillAddressKind = "billing" | "shipping"; + type AutoFillBase = "" | "off" | "on"; + type AutoFillContactField = + | "email" + | "tel" + | "tel-area-code" + | "tel-country-code" + | "tel-extension" + | "tel-local" + | "tel-local-prefix" + | "tel-local-suffix" + | "tel-national"; + type AutoFillContactKind = "home" | "mobile" | "work"; + type AutoFillCredentialField = "webauthn"; + type AutoFillNormalField = + | "additional-name" + | "address-level1" + | "address-level2" + | "address-level3" + | "address-level4" + | "address-line1" + | "address-line2" + | "address-line3" + | "bday-day" + | "bday-month" + | "bday-year" + | "cc-csc" + | "cc-exp" + | "cc-exp-month" + | "cc-exp-year" + | "cc-family-name" + | "cc-given-name" + | "cc-name" + | "cc-number" + | "cc-type" + | "country" + | "country-name" + | "current-password" + | "family-name" + | "given-name" + | "honorific-prefix" + | "honorific-suffix" + | "name" + | "new-password" + | "one-time-code" + | "organization" + | "postal-code" + | "street-address" + | "transaction-amount" + | "transaction-currency" + | "username"; + type OptionalPrefixToken = `${T} ` | ""; + type OptionalPostfixToken = ` ${T}` | ""; + type AutoFillField = AutoFillNormalField | `${OptionalPrefixToken}${AutoFillContactField}`; + type AutoFillSection = `section-${string}`; + type AutoFill = + | AutoFillBase + | `${OptionalPrefixToken}${OptionalPrefixToken< + AutoFillAddressKind + >}${AutoFillField}${OptionalPostfixToken}`; + type HTMLInputAutoCompleteAttribute = AutoFill | (string & {}); + + interface InputHTMLAttributes extends HTMLAttributes { + accept?: string | undefined; + alt?: string | undefined; + autoComplete?: HTMLInputAutoCompleteAttribute | undefined; + capture?: boolean | "user" | "environment" | undefined; // https://www.w3.org/TR/html-media-capture/#the-capture-attribute + checked?: boolean | undefined; + disabled?: boolean | undefined; + enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined; + form?: string | undefined; + formAction?: + | string + | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[ + keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS + ] + | undefined; + formEncType?: string | undefined; + formMethod?: string | undefined; + formNoValidate?: boolean | undefined; + formTarget?: string | undefined; + height?: number | string | undefined; + list?: string | undefined; + max?: number | string | undefined; + maxLength?: number | undefined; + min?: number | string | undefined; + minLength?: number | undefined; + multiple?: boolean | undefined; + name?: string | undefined; + pattern?: string | undefined; + placeholder?: string | undefined; + readOnly?: boolean | undefined; + required?: boolean | undefined; + size?: number | undefined; + src?: string | undefined; + step?: number | string | undefined; + type?: HTMLInputTypeAttribute | undefined; + value?: string | readonly string[] | number | undefined; + width?: number | string | undefined; + + onChange?: ChangeEventHandler | undefined; + } + + interface KeygenHTMLAttributes extends HTMLAttributes { + challenge?: string | undefined; + disabled?: boolean | undefined; + form?: string | undefined; + keyType?: string | undefined; + keyParams?: string | undefined; + name?: string | undefined; + } + + interface LabelHTMLAttributes extends HTMLAttributes { + form?: string | undefined; + htmlFor?: string | undefined; + } + + interface LiHTMLAttributes extends HTMLAttributes { + value?: string | readonly string[] | number | undefined; + } + + interface LinkHTMLAttributes extends HTMLAttributes { + as?: string | undefined; + crossOrigin?: CrossOrigin; + fetchPriority?: "high" | "low" | "auto"; + href?: string | undefined; + hrefLang?: string | undefined; + integrity?: string | undefined; + media?: string | undefined; + imageSrcSet?: string | undefined; + imageSizes?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + sizes?: string | undefined; + type?: string | undefined; + charSet?: string | undefined; + } + + interface MapHTMLAttributes extends HTMLAttributes { + name?: string | undefined; + } + + interface MenuHTMLAttributes extends HTMLAttributes { + type?: string | undefined; + } + + interface MediaHTMLAttributes extends HTMLAttributes { + autoPlay?: boolean | undefined; + controls?: boolean | undefined; + controlsList?: string | undefined; + crossOrigin?: CrossOrigin; + loop?: boolean | undefined; + mediaGroup?: string | undefined; + muted?: boolean | undefined; + playsInline?: boolean | undefined; + preload?: string | undefined; + src?: string | undefined; + } + + interface MetaHTMLAttributes extends HTMLAttributes { + charSet?: string | undefined; + content?: string | undefined; + httpEquiv?: string | undefined; + media?: string | undefined; + name?: string | undefined; + } + + interface MeterHTMLAttributes extends HTMLAttributes { + form?: string | undefined; + high?: number | undefined; + low?: number | undefined; + max?: number | string | undefined; + min?: number | string | undefined; + optimum?: number | undefined; + value?: string | readonly string[] | number | undefined; + } + + interface QuoteHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; + } + + interface ObjectHTMLAttributes extends HTMLAttributes { + classID?: string | undefined; + data?: string | undefined; + form?: string | undefined; + height?: number | string | undefined; + name?: string | undefined; + type?: string | undefined; + useMap?: string | undefined; + width?: number | string | undefined; + wmode?: string | undefined; + } + + interface OlHTMLAttributes extends HTMLAttributes { + reversed?: boolean | undefined; + start?: number | undefined; + type?: "1" | "a" | "A" | "i" | "I" | undefined; + } + + interface OptgroupHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + label?: string | undefined; + } + + interface OptionHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + label?: string | undefined; + selected?: boolean | undefined; + value?: string | readonly string[] | number | undefined; + } + + interface OutputHTMLAttributes extends HTMLAttributes { + form?: string | undefined; + htmlFor?: string | undefined; + name?: string | undefined; + } + + interface ParamHTMLAttributes extends HTMLAttributes { + name?: string | undefined; + value?: string | readonly string[] | number | undefined; + } + + interface ProgressHTMLAttributes extends HTMLAttributes { + max?: number | string | undefined; + value?: string | readonly string[] | number | undefined; + } + + interface SlotHTMLAttributes extends HTMLAttributes { + name?: string | undefined; + } + + interface ScriptHTMLAttributes extends HTMLAttributes { + async?: boolean | undefined; + /** @deprecated */ + charSet?: string | undefined; + crossOrigin?: CrossOrigin; + defer?: boolean | undefined; + integrity?: string | undefined; + noModule?: boolean | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + src?: string | undefined; + type?: string | undefined; + } + + interface SelectHTMLAttributes extends HTMLAttributes { + autoComplete?: string | undefined; + disabled?: boolean | undefined; + form?: string | undefined; + multiple?: boolean | undefined; + name?: string | undefined; + required?: boolean | undefined; + size?: number | undefined; + value?: string | readonly string[] | number | undefined; + onChange?: ChangeEventHandler | undefined; + } + + interface SourceHTMLAttributes extends HTMLAttributes { + height?: number | string | undefined; + media?: string | undefined; + sizes?: string | undefined; + src?: string | undefined; + srcSet?: string | undefined; + type?: string | undefined; + width?: number | string | undefined; + } + + interface StyleHTMLAttributes extends HTMLAttributes { + media?: string | undefined; + scoped?: boolean | undefined; + type?: string | undefined; + } + + interface TableHTMLAttributes extends HTMLAttributes { + align?: "left" | "center" | "right" | undefined; + bgcolor?: string | undefined; + border?: number | undefined; + cellPadding?: number | string | undefined; + cellSpacing?: number | string | undefined; + frame?: boolean | undefined; + rules?: "none" | "groups" | "rows" | "columns" | "all" | undefined; + summary?: string | undefined; + width?: number | string | undefined; + } + + interface TextareaHTMLAttributes extends HTMLAttributes { + autoComplete?: string | undefined; + cols?: number | undefined; + dirName?: string | undefined; + disabled?: boolean | undefined; + form?: string | undefined; + maxLength?: number | undefined; + minLength?: number | undefined; + name?: string | undefined; + placeholder?: string | undefined; + readOnly?: boolean | undefined; + required?: boolean | undefined; + rows?: number | undefined; + value?: string | readonly string[] | number | undefined; + wrap?: string | undefined; + + onChange?: ChangeEventHandler | undefined; + } + + interface TdHTMLAttributes extends HTMLAttributes { + align?: "left" | "center" | "right" | "justify" | "char" | undefined; + colSpan?: number | undefined; + headers?: string | undefined; + rowSpan?: number | undefined; + scope?: string | undefined; + abbr?: string | undefined; + height?: number | string | undefined; + width?: number | string | undefined; + valign?: "top" | "middle" | "bottom" | "baseline" | undefined; + } + + interface ThHTMLAttributes extends HTMLAttributes { + align?: "left" | "center" | "right" | "justify" | "char" | undefined; + colSpan?: number | undefined; + headers?: string | undefined; + rowSpan?: number | undefined; + scope?: string | undefined; + abbr?: string | undefined; + } + + interface TimeHTMLAttributes extends HTMLAttributes { + dateTime?: string | undefined; + } + + interface TrackHTMLAttributes extends HTMLAttributes { + default?: boolean | undefined; + kind?: string | undefined; + label?: string | undefined; + src?: string | undefined; + srcLang?: string | undefined; + } + + interface VideoHTMLAttributes extends MediaHTMLAttributes { + height?: number | string | undefined; + playsInline?: boolean | undefined; + poster?: string | undefined; + width?: number | string | undefined; + disablePictureInPicture?: boolean | undefined; + disableRemotePlayback?: boolean | undefined; + } + + // this list is "complete" in that it contains every SVG attribute + // that React supports, but the types can be improved. + // Full list here: https://facebook.github.io/react/docs/dom-elements.html + // + // The three broad type categories are (in order of restrictiveness): + // - "number | string" + // - "string" + // - union of string literals + interface SVGAttributes extends AriaAttributes, DOMAttributes { + // React-specific Attributes + suppressHydrationWarning?: boolean | undefined; + + // Attributes which also defined in HTMLAttributes + // See comment in SVGDOMPropertyConfig.js + className?: string | undefined; + color?: string | undefined; + height?: number | string | undefined; + id?: string | undefined; + lang?: string | undefined; + max?: number | string | undefined; + media?: string | undefined; + method?: string | undefined; + min?: number | string | undefined; + name?: string | undefined; + style?: CSSProperties | undefined; + target?: string | undefined; + type?: string | undefined; + width?: number | string | undefined; + + // Other HTML properties supported by SVG elements in browsers + role?: AriaRole | undefined; + tabIndex?: number | undefined; + crossOrigin?: CrossOrigin; + + // SVG Specific attributes + accentHeight?: number | string | undefined; + accumulate?: "none" | "sum" | undefined; + additive?: "replace" | "sum" | undefined; + alignmentBaseline?: + | "auto" + | "baseline" + | "before-edge" + | "text-before-edge" + | "middle" + | "central" + | "after-edge" + | "text-after-edge" + | "ideographic" + | "alphabetic" + | "hanging" + | "mathematical" + | "inherit" + | undefined; + allowReorder?: "no" | "yes" | undefined; + alphabetic?: number | string | undefined; + amplitude?: number | string | undefined; + arabicForm?: "initial" | "medial" | "terminal" | "isolated" | undefined; + ascent?: number | string | undefined; + attributeName?: string | undefined; + attributeType?: string | undefined; + autoReverse?: Booleanish | undefined; + azimuth?: number | string | undefined; + baseFrequency?: number | string | undefined; + baselineShift?: number | string | undefined; + baseProfile?: number | string | undefined; + bbox?: number | string | undefined; + begin?: number | string | undefined; + bias?: number | string | undefined; + by?: number | string | undefined; + calcMode?: number | string | undefined; + capHeight?: number | string | undefined; + clip?: number | string | undefined; + clipPath?: string | undefined; + clipPathUnits?: number | string | undefined; + clipRule?: number | string | undefined; + colorInterpolation?: number | string | undefined; + colorInterpolationFilters?: "auto" | "sRGB" | "linearRGB" | "inherit" | undefined; + colorProfile?: number | string | undefined; + colorRendering?: number | string | undefined; + contentScriptType?: number | string | undefined; + contentStyleType?: number | string | undefined; + cursor?: number | string | undefined; + cx?: number | string | undefined; + cy?: number | string | undefined; + d?: string | undefined; + decelerate?: number | string | undefined; + descent?: number | string | undefined; + diffuseConstant?: number | string | undefined; + direction?: number | string | undefined; + display?: number | string | undefined; + divisor?: number | string | undefined; + dominantBaseline?: number | string | undefined; + dur?: number | string | undefined; + dx?: number | string | undefined; + dy?: number | string | undefined; + edgeMode?: number | string | undefined; + elevation?: number | string | undefined; + enableBackground?: number | string | undefined; + end?: number | string | undefined; + exponent?: number | string | undefined; + externalResourcesRequired?: Booleanish | undefined; + fill?: string | undefined; + fillOpacity?: number | string | undefined; + fillRule?: "nonzero" | "evenodd" | "inherit" | undefined; + filter?: string | undefined; + filterRes?: number | string | undefined; + filterUnits?: number | string | undefined; + floodColor?: number | string | undefined; + floodOpacity?: number | string | undefined; + focusable?: Booleanish | "auto" | undefined; + fontFamily?: string | undefined; + fontSize?: number | string | undefined; + fontSizeAdjust?: number | string | undefined; + fontStretch?: number | string | undefined; + fontStyle?: number | string | undefined; + fontVariant?: number | string | undefined; + fontWeight?: number | string | undefined; + format?: number | string | undefined; + fr?: number | string | undefined; + from?: number | string | undefined; + fx?: number | string | undefined; + fy?: number | string | undefined; + g1?: number | string | undefined; + g2?: number | string | undefined; + glyphName?: number | string | undefined; + glyphOrientationHorizontal?: number | string | undefined; + glyphOrientationVertical?: number | string | undefined; + glyphRef?: number | string | undefined; + gradientTransform?: string | undefined; + gradientUnits?: string | undefined; + hanging?: number | string | undefined; + horizAdvX?: number | string | undefined; + horizOriginX?: number | string | undefined; + href?: string | undefined; + ideographic?: number | string | undefined; + imageRendering?: number | string | undefined; + in2?: number | string | undefined; + in?: string | undefined; + intercept?: number | string | undefined; + k1?: number | string | undefined; + k2?: number | string | undefined; + k3?: number | string | undefined; + k4?: number | string | undefined; + k?: number | string | undefined; + kernelMatrix?: number | string | undefined; + kernelUnitLength?: number | string | undefined; + kerning?: number | string | undefined; + keyPoints?: number | string | undefined; + keySplines?: number | string | undefined; + keyTimes?: number | string | undefined; + lengthAdjust?: number | string | undefined; + letterSpacing?: number | string | undefined; + lightingColor?: number | string | undefined; + limitingConeAngle?: number | string | undefined; + local?: number | string | undefined; + markerEnd?: string | undefined; + markerHeight?: number | string | undefined; + markerMid?: string | undefined; + markerStart?: string | undefined; + markerUnits?: number | string | undefined; + markerWidth?: number | string | undefined; + mask?: string | undefined; + maskContentUnits?: number | string | undefined; + maskUnits?: number | string | undefined; + mathematical?: number | string | undefined; + mode?: number | string | undefined; + numOctaves?: number | string | undefined; + offset?: number | string | undefined; + opacity?: number | string | undefined; + operator?: number | string | undefined; + order?: number | string | undefined; + orient?: number | string | undefined; + orientation?: number | string | undefined; + origin?: number | string | undefined; + overflow?: number | string | undefined; + overlinePosition?: number | string | undefined; + overlineThickness?: number | string | undefined; + paintOrder?: number | string | undefined; + panose1?: number | string | undefined; + path?: string | undefined; + pathLength?: number | string | undefined; + patternContentUnits?: string | undefined; + patternTransform?: number | string | undefined; + patternUnits?: string | undefined; + pointerEvents?: number | string | undefined; + points?: string | undefined; + pointsAtX?: number | string | undefined; + pointsAtY?: number | string | undefined; + pointsAtZ?: number | string | undefined; + preserveAlpha?: Booleanish | undefined; + preserveAspectRatio?: string | undefined; + primitiveUnits?: number | string | undefined; + r?: number | string | undefined; + radius?: number | string | undefined; + refX?: number | string | undefined; + refY?: number | string | undefined; + renderingIntent?: number | string | undefined; + repeatCount?: number | string | undefined; + repeatDur?: number | string | undefined; + requiredExtensions?: number | string | undefined; + requiredFeatures?: number | string | undefined; + restart?: number | string | undefined; + result?: string | undefined; + rotate?: number | string | undefined; + rx?: number | string | undefined; + ry?: number | string | undefined; + scale?: number | string | undefined; + seed?: number | string | undefined; + shapeRendering?: number | string | undefined; + slope?: number | string | undefined; + spacing?: number | string | undefined; + specularConstant?: number | string | undefined; + specularExponent?: number | string | undefined; + speed?: number | string | undefined; + spreadMethod?: string | undefined; + startOffset?: number | string | undefined; + stdDeviation?: number | string | undefined; + stemh?: number | string | undefined; + stemv?: number | string | undefined; + stitchTiles?: number | string | undefined; + stopColor?: string | undefined; + stopOpacity?: number | string | undefined; + strikethroughPosition?: number | string | undefined; + strikethroughThickness?: number | string | undefined; + string?: number | string | undefined; + stroke?: string | undefined; + strokeDasharray?: string | number | undefined; + strokeDashoffset?: string | number | undefined; + strokeLinecap?: "butt" | "round" | "square" | "inherit" | undefined; + strokeLinejoin?: "miter" | "round" | "bevel" | "inherit" | undefined; + strokeMiterlimit?: number | string | undefined; + strokeOpacity?: number | string | undefined; + strokeWidth?: number | string | undefined; + surfaceScale?: number | string | undefined; + systemLanguage?: number | string | undefined; + tableValues?: number | string | undefined; + targetX?: number | string | undefined; + targetY?: number | string | undefined; + textAnchor?: string | undefined; + textDecoration?: number | string | undefined; + textLength?: number | string | undefined; + textRendering?: number | string | undefined; + to?: number | string | undefined; + transform?: string | undefined; + u1?: number | string | undefined; + u2?: number | string | undefined; + underlinePosition?: number | string | undefined; + underlineThickness?: number | string | undefined; + unicode?: number | string | undefined; + unicodeBidi?: number | string | undefined; + unicodeRange?: number | string | undefined; + unitsPerEm?: number | string | undefined; + vAlphabetic?: number | string | undefined; + values?: string | undefined; + vectorEffect?: number | string | undefined; + version?: string | undefined; + vertAdvY?: number | string | undefined; + vertOriginX?: number | string | undefined; + vertOriginY?: number | string | undefined; + vHanging?: number | string | undefined; + vIdeographic?: number | string | undefined; + viewBox?: string | undefined; + viewTarget?: number | string | undefined; + visibility?: number | string | undefined; + vMathematical?: number | string | undefined; + widths?: number | string | undefined; + wordSpacing?: number | string | undefined; + writingMode?: number | string | undefined; + x1?: number | string | undefined; + x2?: number | string | undefined; + x?: number | string | undefined; + xChannelSelector?: string | undefined; + xHeight?: number | string | undefined; + xlinkActuate?: string | undefined; + xlinkArcrole?: string | undefined; + xlinkHref?: string | undefined; + xlinkRole?: string | undefined; + xlinkShow?: string | undefined; + xlinkTitle?: string | undefined; + xlinkType?: string | undefined; + xmlBase?: string | undefined; + xmlLang?: string | undefined; + xmlns?: string | undefined; + xmlnsXlink?: string | undefined; + xmlSpace?: string | undefined; + y1?: number | string | undefined; + y2?: number | string | undefined; + y?: number | string | undefined; + yChannelSelector?: string | undefined; + z?: number | string | undefined; + zoomAndPan?: string | undefined; + } + + interface WebViewHTMLAttributes extends HTMLAttributes { + allowFullScreen?: boolean | undefined; + allowpopups?: boolean | undefined; + autosize?: boolean | undefined; + blinkfeatures?: string | undefined; + disableblinkfeatures?: string | undefined; + disableguestresize?: boolean | undefined; + disablewebsecurity?: boolean | undefined; + guestinstance?: string | undefined; + httpreferrer?: string | undefined; + nodeintegration?: boolean | undefined; + partition?: string | undefined; + plugins?: boolean | undefined; + preload?: string | undefined; + src?: string | undefined; + useragent?: string | undefined; + webpreferences?: string | undefined; + } + + // + // React.DOM + // ---------------------------------------------------------------------- + + interface ReactHTML { + a: DetailedHTMLFactory, HTMLAnchorElement>; + abbr: DetailedHTMLFactory, HTMLElement>; + address: DetailedHTMLFactory, HTMLElement>; + area: DetailedHTMLFactory, HTMLAreaElement>; + article: DetailedHTMLFactory, HTMLElement>; + aside: DetailedHTMLFactory, HTMLElement>; + audio: DetailedHTMLFactory, HTMLAudioElement>; + b: DetailedHTMLFactory, HTMLElement>; + base: DetailedHTMLFactory, HTMLBaseElement>; + bdi: DetailedHTMLFactory, HTMLElement>; + bdo: DetailedHTMLFactory, HTMLElement>; + big: DetailedHTMLFactory, HTMLElement>; + blockquote: DetailedHTMLFactory, HTMLQuoteElement>; + body: DetailedHTMLFactory, HTMLBodyElement>; + br: DetailedHTMLFactory, HTMLBRElement>; + button: DetailedHTMLFactory, HTMLButtonElement>; + canvas: DetailedHTMLFactory, HTMLCanvasElement>; + caption: DetailedHTMLFactory, HTMLElement>; + center: DetailedHTMLFactory, HTMLElement>; + cite: DetailedHTMLFactory, HTMLElement>; + code: DetailedHTMLFactory, HTMLElement>; + col: DetailedHTMLFactory, HTMLTableColElement>; + colgroup: DetailedHTMLFactory, HTMLTableColElement>; + data: DetailedHTMLFactory, HTMLDataElement>; + datalist: DetailedHTMLFactory, HTMLDataListElement>; + dd: DetailedHTMLFactory, HTMLElement>; + del: DetailedHTMLFactory, HTMLModElement>; + details: DetailedHTMLFactory, HTMLDetailsElement>; + dfn: DetailedHTMLFactory, HTMLElement>; + dialog: DetailedHTMLFactory, HTMLDialogElement>; + div: DetailedHTMLFactory, HTMLDivElement>; + dl: DetailedHTMLFactory, HTMLDListElement>; + dt: DetailedHTMLFactory, HTMLElement>; + em: DetailedHTMLFactory, HTMLElement>; + embed: DetailedHTMLFactory, HTMLEmbedElement>; + fieldset: DetailedHTMLFactory, HTMLFieldSetElement>; + figcaption: DetailedHTMLFactory, HTMLElement>; + figure: DetailedHTMLFactory, HTMLElement>; + footer: DetailedHTMLFactory, HTMLElement>; + form: DetailedHTMLFactory, HTMLFormElement>; + h1: DetailedHTMLFactory, HTMLHeadingElement>; + h2: DetailedHTMLFactory, HTMLHeadingElement>; + h3: DetailedHTMLFactory, HTMLHeadingElement>; + h4: DetailedHTMLFactory, HTMLHeadingElement>; + h5: DetailedHTMLFactory, HTMLHeadingElement>; + h6: DetailedHTMLFactory, HTMLHeadingElement>; + head: DetailedHTMLFactory, HTMLHeadElement>; + header: DetailedHTMLFactory, HTMLElement>; + hgroup: DetailedHTMLFactory, HTMLElement>; + hr: DetailedHTMLFactory, HTMLHRElement>; + html: DetailedHTMLFactory, HTMLHtmlElement>; + i: DetailedHTMLFactory, HTMLElement>; + iframe: DetailedHTMLFactory, HTMLIFrameElement>; + img: DetailedHTMLFactory, HTMLImageElement>; + input: DetailedHTMLFactory, HTMLInputElement>; + ins: DetailedHTMLFactory, HTMLModElement>; + kbd: DetailedHTMLFactory, HTMLElement>; + keygen: DetailedHTMLFactory, HTMLElement>; + label: DetailedHTMLFactory, HTMLLabelElement>; + legend: DetailedHTMLFactory, HTMLLegendElement>; + li: DetailedHTMLFactory, HTMLLIElement>; + link: DetailedHTMLFactory, HTMLLinkElement>; + main: DetailedHTMLFactory, HTMLElement>; + map: DetailedHTMLFactory, HTMLMapElement>; + mark: DetailedHTMLFactory, HTMLElement>; + menu: DetailedHTMLFactory, HTMLElement>; + menuitem: DetailedHTMLFactory, HTMLElement>; + meta: DetailedHTMLFactory, HTMLMetaElement>; + meter: DetailedHTMLFactory, HTMLMeterElement>; + nav: DetailedHTMLFactory, HTMLElement>; + noscript: DetailedHTMLFactory, HTMLElement>; + object: DetailedHTMLFactory, HTMLObjectElement>; + ol: DetailedHTMLFactory, HTMLOListElement>; + optgroup: DetailedHTMLFactory, HTMLOptGroupElement>; + option: DetailedHTMLFactory, HTMLOptionElement>; + output: DetailedHTMLFactory, HTMLOutputElement>; + p: DetailedHTMLFactory, HTMLParagraphElement>; + param: DetailedHTMLFactory, HTMLParamElement>; + picture: DetailedHTMLFactory, HTMLElement>; + pre: DetailedHTMLFactory, HTMLPreElement>; + progress: DetailedHTMLFactory, HTMLProgressElement>; + q: DetailedHTMLFactory, HTMLQuoteElement>; + rp: DetailedHTMLFactory, HTMLElement>; + rt: DetailedHTMLFactory, HTMLElement>; + ruby: DetailedHTMLFactory, HTMLElement>; + s: DetailedHTMLFactory, HTMLElement>; + samp: DetailedHTMLFactory, HTMLElement>; + search: DetailedHTMLFactory, HTMLElement>; + slot: DetailedHTMLFactory, HTMLSlotElement>; + script: DetailedHTMLFactory, HTMLScriptElement>; + section: DetailedHTMLFactory, HTMLElement>; + select: DetailedHTMLFactory, HTMLSelectElement>; + small: DetailedHTMLFactory, HTMLElement>; + source: DetailedHTMLFactory, HTMLSourceElement>; + span: DetailedHTMLFactory, HTMLSpanElement>; + strong: DetailedHTMLFactory, HTMLElement>; + style: DetailedHTMLFactory, HTMLStyleElement>; + sub: DetailedHTMLFactory, HTMLElement>; + summary: DetailedHTMLFactory, HTMLElement>; + sup: DetailedHTMLFactory, HTMLElement>; + table: DetailedHTMLFactory, HTMLTableElement>; + template: DetailedHTMLFactory, HTMLTemplateElement>; + tbody: DetailedHTMLFactory, HTMLTableSectionElement>; + td: DetailedHTMLFactory, HTMLTableDataCellElement>; + textarea: DetailedHTMLFactory, HTMLTextAreaElement>; + tfoot: DetailedHTMLFactory, HTMLTableSectionElement>; + th: DetailedHTMLFactory, HTMLTableHeaderCellElement>; + thead: DetailedHTMLFactory, HTMLTableSectionElement>; + time: DetailedHTMLFactory, HTMLTimeElement>; + title: DetailedHTMLFactory, HTMLTitleElement>; + tr: DetailedHTMLFactory, HTMLTableRowElement>; + track: DetailedHTMLFactory, HTMLTrackElement>; + u: DetailedHTMLFactory, HTMLElement>; + ul: DetailedHTMLFactory, HTMLUListElement>; + "var": DetailedHTMLFactory, HTMLElement>; + video: DetailedHTMLFactory, HTMLVideoElement>; + wbr: DetailedHTMLFactory, HTMLElement>; + webview: DetailedHTMLFactory, HTMLWebViewElement>; + } + + interface ReactSVG { + animate: SVGFactory; + circle: SVGFactory; + clipPath: SVGFactory; + defs: SVGFactory; + desc: SVGFactory; + ellipse: SVGFactory; + feBlend: SVGFactory; + feColorMatrix: SVGFactory; + feComponentTransfer: SVGFactory; + feComposite: SVGFactory; + feConvolveMatrix: SVGFactory; + feDiffuseLighting: SVGFactory; + feDisplacementMap: SVGFactory; + feDistantLight: SVGFactory; + feDropShadow: SVGFactory; + feFlood: SVGFactory; + feFuncA: SVGFactory; + feFuncB: SVGFactory; + feFuncG: SVGFactory; + feFuncR: SVGFactory; + feGaussianBlur: SVGFactory; + feImage: SVGFactory; + feMerge: SVGFactory; + feMergeNode: SVGFactory; + feMorphology: SVGFactory; + feOffset: SVGFactory; + fePointLight: SVGFactory; + feSpecularLighting: SVGFactory; + feSpotLight: SVGFactory; + feTile: SVGFactory; + feTurbulence: SVGFactory; + filter: SVGFactory; + foreignObject: SVGFactory; + g: SVGFactory; + image: SVGFactory; + line: SVGFactory; + linearGradient: SVGFactory; + marker: SVGFactory; + mask: SVGFactory; + metadata: SVGFactory; + path: SVGFactory; + pattern: SVGFactory; + polygon: SVGFactory; + polyline: SVGFactory; + radialGradient: SVGFactory; + rect: SVGFactory; + stop: SVGFactory; + svg: SVGFactory; + switch: SVGFactory; + symbol: SVGFactory; + text: SVGFactory; + textPath: SVGFactory; + tspan: SVGFactory; + use: SVGFactory; + view: SVGFactory; + } + + interface ReactDOM extends ReactHTML, ReactSVG {} + + // + // React.PropTypes + // ---------------------------------------------------------------------- + + /** + * @deprecated Use `Validator` from the ´prop-types` instead. + */ + type Validator = PropTypes.Validator; + + /** + * @deprecated Use `Requireable` from the ´prop-types` instead. + */ + type Requireable = PropTypes.Requireable; + + /** + * @deprecated Use `ValidationMap` from the ´prop-types` instead. + */ + type ValidationMap = PropTypes.ValidationMap; + + /** + * @deprecated Use `WeakValidationMap` from the ´prop-types` instead. + */ + type WeakValidationMap = { + [K in keyof T]?: null extends T[K] ? Validator + : undefined extends T[K] ? Validator + : Validator; + }; + + /** + * @deprecated Use `PropTypes.*` where `PropTypes` comes from `import * as PropTypes from 'prop-types'` instead. + */ + interface ReactPropTypes { + any: typeof PropTypes.any; + array: typeof PropTypes.array; + bool: typeof PropTypes.bool; + func: typeof PropTypes.func; + number: typeof PropTypes.number; + object: typeof PropTypes.object; + string: typeof PropTypes.string; + node: typeof PropTypes.node; + element: typeof PropTypes.element; + instanceOf: typeof PropTypes.instanceOf; + oneOf: typeof PropTypes.oneOf; + oneOfType: typeof PropTypes.oneOfType; + arrayOf: typeof PropTypes.arrayOf; + objectOf: typeof PropTypes.objectOf; + shape: typeof PropTypes.shape; + exact: typeof PropTypes.exact; + } + + // + // React.Children + // ---------------------------------------------------------------------- + + /** + * @deprecated - Use `typeof React.Children` instead. + */ + // Sync with type of `const Children`. + interface ReactChildren { + map( + children: C | readonly C[], + fn: (child: C, index: number) => T, + ): C extends null | undefined ? C : Array>; + forEach(children: C | readonly C[], fn: (child: C, index: number) => void): void; + count(children: any): number; + only(children: C): C extends any[] ? never : C; + toArray(children: ReactNode | ReactNode[]): Array>; + } + + // + // Browser Interfaces + // https://github.com/nikeee/2048-typescript/blob/master/2048/js/touch.d.ts + // ---------------------------------------------------------------------- + + interface AbstractView { + styleMedia: StyleMedia; + document: Document; + } + + interface Touch { + identifier: number; + target: EventTarget; + screenX: number; + screenY: number; + clientX: number; + clientY: number; + pageX: number; + pageY: number; + } + + interface TouchList { + [index: number]: Touch; + length: number; + item(index: number): Touch; + identifiedTouch(identifier: number): Touch; + } + + // + // Error Interfaces + // ---------------------------------------------------------------------- + interface ErrorInfo { + /** + * Captures which component contained the exception, and its ancestors. + */ + componentStack?: string | null; + digest?: string | null; + } + + // Keep in sync with JSX namespace in ./jsx-runtime.d.ts and ./jsx-dev-runtime.d.ts + namespace JSX { + interface Element extends GlobalJSXElement {} + interface ElementClass extends GlobalJSXElementClass {} + interface ElementAttributesProperty extends GlobalJSXElementAttributesProperty {} + interface ElementChildrenAttribute extends GlobalJSXElementChildrenAttribute {} + + type LibraryManagedAttributes = GlobalJSXLibraryManagedAttributes; + + interface IntrinsicAttributes extends GlobalJSXIntrinsicAttributes {} + interface IntrinsicClassAttributes extends GlobalJSXIntrinsicClassAttributes {} + interface IntrinsicElements extends GlobalJSXIntrinsicElements {} + } +} + +// naked 'any' type in a conditional type will short circuit and union both the then/else branches +// so boolean is only resolved for T = any +type IsExactlyAny = boolean extends (T extends never ? true : false) ? true : false; + +type ExactlyAnyPropertyKeys = { [K in keyof T]: IsExactlyAny extends true ? K : never }[keyof T]; +type NotExactlyAnyPropertyKeys = Exclude>; + +// Try to resolve ill-defined props like for JS users: props can be any, or sometimes objects with properties of type any +type MergePropTypes = + // Distribute over P in case it is a union type + P extends any + // If props is type any, use propTypes definitions + ? IsExactlyAny

extends true ? T + // If declared props have indexed properties, ignore inferred props entirely as keyof gets widened + : string extends keyof P ? P + // Prefer declared types which are not exactly any + : + & Pick> + // For props which are exactly any, use the type inferred from propTypes if present + & Pick>> + // Keep leftover props not specified in propTypes + & Pick> + : never; + +type InexactPartial = { [K in keyof T]?: T[K] | undefined }; + +// Any prop that has a default prop becomes optional, but its type is unchanged +// Undeclared default props are augmented into the resulting allowable attributes +// If declared props have indexed properties, ignore default props entirely as keyof gets widened +// Wrap in an outer-level conditional type to allow distribution over props that are unions +type Defaultize = P extends any ? string extends keyof P ? P + : + & Pick> + & InexactPartial>> + & InexactPartial>> + : never; + +type ReactManagedAttributes = C extends { propTypes: infer T; defaultProps: infer D } + ? Defaultize>, D> + : C extends { propTypes: infer T } ? MergePropTypes> + : C extends { defaultProps: infer D } ? Defaultize + : P; + +declare global { + /** + * @deprecated Use `React.JSX` instead of the global `JSX` namespace. + */ + namespace JSX { + interface Element extends React.ReactElement {} + interface ElementClass extends React.Component { + render(): React.ReactNode; + } + interface ElementAttributesProperty { + props: {}; + } + interface ElementChildrenAttribute { + children: {}; + } + + // We can't recurse forever because `type` can't be self-referential; + // let's assume it's reasonable to do a single React.lazy() around a single React.memo() / vice-versa + type LibraryManagedAttributes = C extends + React.MemoExoticComponent | React.LazyExoticComponent + ? T extends React.MemoExoticComponent | React.LazyExoticComponent + ? ReactManagedAttributes + : ReactManagedAttributes + : ReactManagedAttributes; + + interface IntrinsicAttributes extends React.Attributes {} + interface IntrinsicClassAttributes extends React.ClassAttributes {} + + interface IntrinsicElements { + // HTML + a: React.DetailedHTMLProps, HTMLAnchorElement>; + abbr: React.DetailedHTMLProps, HTMLElement>; + address: React.DetailedHTMLProps, HTMLElement>; + area: React.DetailedHTMLProps, HTMLAreaElement>; + article: React.DetailedHTMLProps, HTMLElement>; + aside: React.DetailedHTMLProps, HTMLElement>; + audio: React.DetailedHTMLProps, HTMLAudioElement>; + b: React.DetailedHTMLProps, HTMLElement>; + base: React.DetailedHTMLProps, HTMLBaseElement>; + bdi: React.DetailedHTMLProps, HTMLElement>; + bdo: React.DetailedHTMLProps, HTMLElement>; + big: React.DetailedHTMLProps, HTMLElement>; + blockquote: React.DetailedHTMLProps, HTMLQuoteElement>; + body: React.DetailedHTMLProps, HTMLBodyElement>; + br: React.DetailedHTMLProps, HTMLBRElement>; + button: React.DetailedHTMLProps, HTMLButtonElement>; + canvas: React.DetailedHTMLProps, HTMLCanvasElement>; + caption: React.DetailedHTMLProps, HTMLElement>; + center: React.DetailedHTMLProps, HTMLElement>; + cite: React.DetailedHTMLProps, HTMLElement>; + code: React.DetailedHTMLProps, HTMLElement>; + col: React.DetailedHTMLProps, HTMLTableColElement>; + colgroup: React.DetailedHTMLProps, HTMLTableColElement>; + data: React.DetailedHTMLProps, HTMLDataElement>; + datalist: React.DetailedHTMLProps, HTMLDataListElement>; + dd: React.DetailedHTMLProps, HTMLElement>; + del: React.DetailedHTMLProps, HTMLModElement>; + details: React.DetailedHTMLProps, HTMLDetailsElement>; + dfn: React.DetailedHTMLProps, HTMLElement>; + dialog: React.DetailedHTMLProps, HTMLDialogElement>; + div: React.DetailedHTMLProps, HTMLDivElement>; + dl: React.DetailedHTMLProps, HTMLDListElement>; + dt: React.DetailedHTMLProps, HTMLElement>; + em: React.DetailedHTMLProps, HTMLElement>; + embed: React.DetailedHTMLProps, HTMLEmbedElement>; + fieldset: React.DetailedHTMLProps, HTMLFieldSetElement>; + figcaption: React.DetailedHTMLProps, HTMLElement>; + figure: React.DetailedHTMLProps, HTMLElement>; + footer: React.DetailedHTMLProps, HTMLElement>; + form: React.DetailedHTMLProps, HTMLFormElement>; + h1: React.DetailedHTMLProps, HTMLHeadingElement>; + h2: React.DetailedHTMLProps, HTMLHeadingElement>; + h3: React.DetailedHTMLProps, HTMLHeadingElement>; + h4: React.DetailedHTMLProps, HTMLHeadingElement>; + h5: React.DetailedHTMLProps, HTMLHeadingElement>; + h6: React.DetailedHTMLProps, HTMLHeadingElement>; + head: React.DetailedHTMLProps, HTMLHeadElement>; + header: React.DetailedHTMLProps, HTMLElement>; + hgroup: React.DetailedHTMLProps, HTMLElement>; + hr: React.DetailedHTMLProps, HTMLHRElement>; + html: React.DetailedHTMLProps, HTMLHtmlElement>; + i: React.DetailedHTMLProps, HTMLElement>; + iframe: React.DetailedHTMLProps, HTMLIFrameElement>; + img: React.DetailedHTMLProps, HTMLImageElement>; + input: React.DetailedHTMLProps, HTMLInputElement>; + ins: React.DetailedHTMLProps, HTMLModElement>; + kbd: React.DetailedHTMLProps, HTMLElement>; + keygen: React.DetailedHTMLProps, HTMLElement>; + label: React.DetailedHTMLProps, HTMLLabelElement>; + legend: React.DetailedHTMLProps, HTMLLegendElement>; + li: React.DetailedHTMLProps, HTMLLIElement>; + link: React.DetailedHTMLProps, HTMLLinkElement>; + main: React.DetailedHTMLProps, HTMLElement>; + map: React.DetailedHTMLProps, HTMLMapElement>; + mark: React.DetailedHTMLProps, HTMLElement>; + menu: React.DetailedHTMLProps, HTMLElement>; + menuitem: React.DetailedHTMLProps, HTMLElement>; + meta: React.DetailedHTMLProps, HTMLMetaElement>; + meter: React.DetailedHTMLProps, HTMLMeterElement>; + nav: React.DetailedHTMLProps, HTMLElement>; + noindex: React.DetailedHTMLProps, HTMLElement>; + noscript: React.DetailedHTMLProps, HTMLElement>; + object: React.DetailedHTMLProps, HTMLObjectElement>; + ol: React.DetailedHTMLProps, HTMLOListElement>; + optgroup: React.DetailedHTMLProps, HTMLOptGroupElement>; + option: React.DetailedHTMLProps, HTMLOptionElement>; + output: React.DetailedHTMLProps, HTMLOutputElement>; + p: React.DetailedHTMLProps, HTMLParagraphElement>; + param: React.DetailedHTMLProps, HTMLParamElement>; + picture: React.DetailedHTMLProps, HTMLElement>; + pre: React.DetailedHTMLProps, HTMLPreElement>; + progress: React.DetailedHTMLProps, HTMLProgressElement>; + q: React.DetailedHTMLProps, HTMLQuoteElement>; + rp: React.DetailedHTMLProps, HTMLElement>; + rt: React.DetailedHTMLProps, HTMLElement>; + ruby: React.DetailedHTMLProps, HTMLElement>; + s: React.DetailedHTMLProps, HTMLElement>; + samp: React.DetailedHTMLProps, HTMLElement>; + search: React.DetailedHTMLProps, HTMLElement>; + slot: React.DetailedHTMLProps, HTMLSlotElement>; + script: React.DetailedHTMLProps, HTMLScriptElement>; + section: React.DetailedHTMLProps, HTMLElement>; + select: React.DetailedHTMLProps, HTMLSelectElement>; + small: React.DetailedHTMLProps, HTMLElement>; + source: React.DetailedHTMLProps, HTMLSourceElement>; + span: React.DetailedHTMLProps, HTMLSpanElement>; + strong: React.DetailedHTMLProps, HTMLElement>; + style: React.DetailedHTMLProps, HTMLStyleElement>; + sub: React.DetailedHTMLProps, HTMLElement>; + summary: React.DetailedHTMLProps, HTMLElement>; + sup: React.DetailedHTMLProps, HTMLElement>; + table: React.DetailedHTMLProps, HTMLTableElement>; + template: React.DetailedHTMLProps, HTMLTemplateElement>; + tbody: React.DetailedHTMLProps, HTMLTableSectionElement>; + td: React.DetailedHTMLProps, HTMLTableDataCellElement>; + textarea: React.DetailedHTMLProps, HTMLTextAreaElement>; + tfoot: React.DetailedHTMLProps, HTMLTableSectionElement>; + th: React.DetailedHTMLProps, HTMLTableHeaderCellElement>; + thead: React.DetailedHTMLProps, HTMLTableSectionElement>; + time: React.DetailedHTMLProps, HTMLTimeElement>; + title: React.DetailedHTMLProps, HTMLTitleElement>; + tr: React.DetailedHTMLProps, HTMLTableRowElement>; + track: React.DetailedHTMLProps, HTMLTrackElement>; + u: React.DetailedHTMLProps, HTMLElement>; + ul: React.DetailedHTMLProps, HTMLUListElement>; + "var": React.DetailedHTMLProps, HTMLElement>; + video: React.DetailedHTMLProps, HTMLVideoElement>; + wbr: React.DetailedHTMLProps, HTMLElement>; + webview: React.DetailedHTMLProps, HTMLWebViewElement>; + + // SVG + svg: React.SVGProps; + + animate: React.SVGProps; // TODO: It is SVGAnimateElement but is not in TypeScript's lib.dom.d.ts for now. + animateMotion: React.SVGProps; + animateTransform: React.SVGProps; // TODO: It is SVGAnimateTransformElement but is not in TypeScript's lib.dom.d.ts for now. + circle: React.SVGProps; + clipPath: React.SVGProps; + defs: React.SVGProps; + desc: React.SVGProps; + ellipse: React.SVGProps; + feBlend: React.SVGProps; + feColorMatrix: React.SVGProps; + feComponentTransfer: React.SVGProps; + feComposite: React.SVGProps; + feConvolveMatrix: React.SVGProps; + feDiffuseLighting: React.SVGProps; + feDisplacementMap: React.SVGProps; + feDistantLight: React.SVGProps; + feDropShadow: React.SVGProps; + feFlood: React.SVGProps; + feFuncA: React.SVGProps; + feFuncB: React.SVGProps; + feFuncG: React.SVGProps; + feFuncR: React.SVGProps; + feGaussianBlur: React.SVGProps; + feImage: React.SVGProps; + feMerge: React.SVGProps; + feMergeNode: React.SVGProps; + feMorphology: React.SVGProps; + feOffset: React.SVGProps; + fePointLight: React.SVGProps; + feSpecularLighting: React.SVGProps; + feSpotLight: React.SVGProps; + feTile: React.SVGProps; + feTurbulence: React.SVGProps; + filter: React.SVGProps; + foreignObject: React.SVGProps; + g: React.SVGProps; + image: React.SVGProps; + line: React.SVGLineElementAttributes; + linearGradient: React.SVGProps; + marker: React.SVGProps; + mask: React.SVGProps; + metadata: React.SVGProps; + mpath: React.SVGProps; + path: React.SVGProps; + pattern: React.SVGProps; + polygon: React.SVGProps; + polyline: React.SVGProps; + radialGradient: React.SVGProps; + rect: React.SVGProps; + set: React.SVGProps; + stop: React.SVGProps; + switch: React.SVGProps; + symbol: React.SVGProps; + text: React.SVGTextElementAttributes; + textPath: React.SVGProps; + tspan: React.SVGProps; + use: React.SVGProps; + view: React.SVGProps; + } + } +} + +// React.JSX needs to point to global.JSX to keep global module augmentations intact. +// But we can't access global.JSX so we need to create these aliases instead. +// Once the global JSX namespace will be removed we replace React.JSX with the contents of global.JSX +interface GlobalJSXElement extends JSX.Element {} +interface GlobalJSXElementClass extends JSX.ElementClass {} +interface GlobalJSXElementAttributesProperty extends JSX.ElementAttributesProperty {} +interface GlobalJSXElementChildrenAttribute extends JSX.ElementChildrenAttribute {} + +type GlobalJSXLibraryManagedAttributes = JSX.LibraryManagedAttributes; + +interface GlobalJSXIntrinsicAttributes extends JSX.IntrinsicAttributes {} +interface GlobalJSXIntrinsicClassAttributes extends JSX.IntrinsicClassAttributes {} + +interface GlobalJSXIntrinsicElements extends JSX.IntrinsicElements {} diff --git a/node_modules/@types/react/ts5.0/jsx-dev-runtime.d.ts b/node_modules/@types/react/ts5.0/jsx-dev-runtime.d.ts new file mode 100644 index 0000000..87d1dfe --- /dev/null +++ b/node_modules/@types/react/ts5.0/jsx-dev-runtime.d.ts @@ -0,0 +1,44 @@ +import * as React from "./"; +export { Fragment } from "./"; + +export namespace JSX { + interface Element extends React.JSX.Element {} + interface ElementClass extends React.JSX.ElementClass {} + interface ElementAttributesProperty extends React.JSX.ElementAttributesProperty {} + interface ElementChildrenAttribute extends React.JSX.ElementChildrenAttribute {} + type LibraryManagedAttributes = React.JSX.LibraryManagedAttributes; + interface IntrinsicAttributes extends React.JSX.IntrinsicAttributes {} + interface IntrinsicClassAttributes extends React.JSX.IntrinsicClassAttributes {} + interface IntrinsicElements extends React.JSX.IntrinsicElements {} +} + +export interface JSXSource { + /** + * The source file where the element originates from. + */ + fileName?: string | undefined; + + /** + * The line number where the element was created. + */ + lineNumber?: number | undefined; + + /** + * The column number where the element was created. + */ + columnNumber?: number | undefined; +} + +/** + * Create a React element. + * + * You should not use this function directly. Use JSX and a transpiler instead. + */ +export function jsxDEV( + type: React.ElementType, + props: unknown, + key: React.Key | undefined, + isStatic: boolean, + source?: JSXSource, + self?: unknown, +): React.ReactElement; diff --git a/node_modules/@types/react/ts5.0/jsx-runtime.d.ts b/node_modules/@types/react/ts5.0/jsx-runtime.d.ts new file mode 100644 index 0000000..8cc3b97 --- /dev/null +++ b/node_modules/@types/react/ts5.0/jsx-runtime.d.ts @@ -0,0 +1,35 @@ +import * as React from "./"; +export { Fragment } from "./"; + +export namespace JSX { + interface Element extends React.JSX.Element {} + interface ElementClass extends React.JSX.ElementClass {} + interface ElementAttributesProperty extends React.JSX.ElementAttributesProperty {} + interface ElementChildrenAttribute extends React.JSX.ElementChildrenAttribute {} + type LibraryManagedAttributes = React.JSX.LibraryManagedAttributes; + interface IntrinsicAttributes extends React.JSX.IntrinsicAttributes {} + interface IntrinsicClassAttributes extends React.JSX.IntrinsicClassAttributes {} + interface IntrinsicElements extends React.JSX.IntrinsicElements {} +} + +/** + * Create a React element. + * + * You should not use this function directly. Use JSX and a transpiler instead. + */ +export function jsx( + type: React.ElementType, + props: unknown, + key?: React.Key, +): React.ReactElement; + +/** + * Create a React element. + * + * You should not use this function directly. Use JSX and a transpiler instead. + */ +export function jsxs( + type: React.ElementType, + props: unknown, + key?: React.Key, +): React.ReactElement; diff --git a/node_modules/@types/resolve/LICENSE b/node_modules/@types/resolve/LICENSE new file mode 100755 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/resolve/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/resolve/README.md b/node_modules/@types/resolve/README.md new file mode 100755 index 0000000..620231d --- /dev/null +++ b/node_modules/@types/resolve/README.md @@ -0,0 +1,16 @@ +# Installation +> `npm install --save @types/resolve` + +# Summary +This package contains type definitions for resolve (https://github.com/browserify/resolve). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/resolve. + +### Additional Details + * Last updated: Thu, 21 Apr 2022 18:01:43 GMT + * Dependencies: none + * Global values: none + +# Credits +These definitions were written by [Mario Nebl](https://github.com/marionebl), [Klaus Meinhardt](https://github.com/ajafff), and [Jordan Harband](https://github.com/ljharb). diff --git a/node_modules/@types/resolve/index.d.ts b/node_modules/@types/resolve/index.d.ts new file mode 100755 index 0000000..171b05e --- /dev/null +++ b/node_modules/@types/resolve/index.d.ts @@ -0,0 +1,175 @@ +// Type definitions for resolve 1.20.0 +// Project: https://github.com/browserify/resolve +// Definitions by: Mario Nebl +// Klaus Meinhardt +// Jordan Harband +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +interface PackageMeta { + name: string; + version: string; + [key: string]: any; +} + +interface ToString { + toString(): string; +} + +type StringOrToString = string | ToString; + +/** + * Callback invoked when resolving asynchronously + * + * @param error + * @param resolved Absolute path to resolved identifier + */ +type resolveCallback = (err: Error | null, resolved?: string, pkg?: PackageMeta) => void; + +/** + * Callback invoked when checking if a file or directory exists + * + * @param error + * @param exists If the given file or directory exists + */ +type existsCallback = (err: Error | null, isFile?: boolean) => void; + +/** + * Callback invoked when reading a file + * + * @param error + * @param isFile If the given file exists + */ +type readFileCallback = (err: Error | null, file?: StringOrToString) => void; + +/** + * Callback invoked when resolving a potential symlink + * + * @param error + * @param resolved Absolute path to the resolved file + */ +type realpathCallback = (err: Error | null, resolved?: string) => void; + +/** + * Callback invoked when reading and parsing a package.json file + * + * @param error + * @param resolved Absolute path to the resolved file + */ +type readPackageCallback = (err: Error | null, package?: Record) => void; + +/** + * Asynchronously resolve the module path string id into cb(err, res [, pkg]), where pkg (if defined) is the data from package.json + * + * @param id Identifier to resolve + * @param callback + */ +declare function resolve(id: string, cb: resolveCallback): void; + +/** + * Asynchronously resolve the module path string id into cb(err, res [, pkg]), where pkg (if defined) is the data from package.json + * + * @param id Identifier to resolve + * @param options Options to use for resolving, optional. + * @param callback + */ +declare function resolve(id: string, opts: resolve.AsyncOpts, cb: resolveCallback): void; + +/** + * Synchronously resolve the module path string id, returning the result and throwing an error when id can't be resolved. + * + * @param id Identifier to resolve + * @param options Options to use for resolving, optional. + */ +declare function resolveSync(id: string, opts?: resolve.SyncOpts): string; + +/** + * Return whether a package is in core + */ +declare function resolveIsCore(id: string): boolean | undefined; + +// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540 +type JSONValue = string | number | boolean | JSONObject | JSONArray; +interface JSONObject { + [x: string]: JSONValue; +} +interface JSONArray extends Array { } + +declare namespace resolve { + export type PackageJSON = JSONObject; + + interface Opts { + /** directory to begin resolving from (defaults to __dirname) */ + basedir?: string | undefined; + /** package.json data applicable to the module being loaded */ + package?: any; + /** set to false to exclude node core modules (e.g. fs) from the search */ + includeCoreModules?: boolean | undefined; + /** array of file extensions to search in order (defaults to ['.js']) */ + extensions?: string | ReadonlyArray | undefined; + /** transform the parsed package.json contents before looking at the "main" field */ + packageFilter?: ((pkg: PackageJSON, pkgFile: string, dir: string) => PackageJSON) | undefined; + /** transform a path within a package */ + pathFilter?: ((pkg: PackageJSON, path: string, relativePath: string) => string) | undefined; + /** require.paths array to use if nothing is found on the normal node_modules recursive walk (probably don't use this) */ + paths?: string | ReadonlyArray | undefined; + /** return the list of candidate paths where the packages sources may be found (probably don't use this) */ + packageIterator?: ((request: string, start: string, getPackageCandidates: () => string[], opts: Opts) => string[]) | undefined; + /** directory (or directories) in which to recursively look for modules. (default to 'node_modules') */ + moduleDirectory?: string | ReadonlyArray | undefined; + /** + * if true, doesn't resolve `basedir` to real path before resolving. + * This is the way Node resolves dependencies when executed with the --preserve-symlinks flag. + * + * Note: this property is currently true by default but it will be changed to false in the next major version because Node's resolution + * algorithm does not preserve symlinks by default. + */ + preserveSymlinks?: boolean | undefined; + } + + interface BaseAsyncOpts extends Opts { + /** function to asynchronously test whether a file exists */ + isFile?: ((file: string, cb: existsCallback) => void) | undefined; + /** function to asynchronously test whether a directory exists */ + isDirectory?: ((directory: string, cb: existsCallback) => void) | undefined; + /** function to asynchronously resolve a potential symlink to its real path */ + realpath?: ((file: string, cb: realpathCallback) => void) | undefined; + } + + export type AsyncOpts = BaseAsyncOpts & ({ + /** how to read files asynchronously (defaults to fs.readFile) */ + readFile?: ((file: string, cb: readFileCallback) => void) | undefined; + /** function to asynchronously read and parse a package.json file */ + readPackage?: never | undefined; + } | { + /** how to read files asynchronously (defaults to fs.readFile) */ + readFile?: never | undefined + /** function to asynchronously read and parse a package.json file */ + readPackage?: ((readFile: (file: string, cb: readFileCallback) => void, pkgfile: string, cb: readPackageCallback) => void) | undefined; + }); + + interface BaseSyncOpts extends Opts { + /** function to synchronously test whether a file exists */ + isFile?: ((file: string) => boolean) | undefined; + /** function to synchronously test whether a directory exists */ + isDirectory?: ((directory: string) => boolean) | undefined; + /** function to synchronously resolve a potential symlink to its real path */ + realpathSync?: ((file: string) => string) | undefined; + } + + export type SyncOpts = BaseSyncOpts & ({ + /** how to read files synchronously (defaults to fs.readFileSync) */ + readFileSync?: ((file: string) => StringOrToString) | undefined; + /** function to synchronously read and parse a package.json file */ + readPackageSync?: never | undefined; + } | { + /** how to read files synchronously (defaults to fs.readFileSync) */ + readFileSync?: never | undefined; + /** function to synchronously read and parse a package.json file */ + readPackageSync?: ((readFileSync: (file: string) => StringOrToString, pkgfile: string) => Record | undefined) | undefined; + }); + + export var sync: typeof resolveSync; + export var isCore: typeof resolveIsCore; +} + +export = resolve; diff --git a/node_modules/@types/resolve/package.json b/node_modules/@types/resolve/package.json new file mode 100755 index 0000000..1e9851d --- /dev/null +++ b/node_modules/@types/resolve/package.json @@ -0,0 +1,35 @@ +{ + "name": "@types/resolve", + "version": "1.20.2", + "description": "TypeScript definitions for resolve", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/resolve", + "license": "MIT", + "contributors": [ + { + "name": "Mario Nebl", + "url": "https://github.com/marionebl", + "githubUsername": "marionebl" + }, + { + "name": "Klaus Meinhardt", + "url": "https://github.com/ajafff", + "githubUsername": "ajafff" + }, + { + "name": "Jordan Harband", + "url": "https://github.com/ljharb", + "githubUsername": "ljharb" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/resolve" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "f17c01e45c248ed2430e1f5d8b89310de423f1564ee420b04ea91177066c05f1", + "typeScriptVersion": "3.9" +} \ No newline at end of file diff --git a/node_modules/ansi-regex/index.d.ts b/node_modules/ansi-regex/index.d.ts new file mode 100644 index 0000000..50ef64d --- /dev/null +++ b/node_modules/ansi-regex/index.d.ts @@ -0,0 +1,33 @@ +export interface Options { + /** + Match only the first ANSI escape. + + @default false + */ + readonly onlyFirst: boolean; +} + +/** +Regular expression for matching ANSI escape codes. + +@example +``` +import ansiRegex from 'ansi-regex'; + +ansiRegex().test('\u001B[4mcake\u001B[0m'); +//=> true + +ansiRegex().test('cake'); +//=> false + +'\u001B[4mcake\u001B[0m'.match(ansiRegex()); +//=> ['\u001B[4m', '\u001B[0m'] + +'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true})); +//=> ['\u001B[4m'] + +'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex()); +//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007'] +``` +*/ +export default function ansiRegex(options?: Options): RegExp; diff --git a/node_modules/ansi-regex/index.js b/node_modules/ansi-regex/index.js new file mode 100644 index 0000000..130a092 --- /dev/null +++ b/node_modules/ansi-regex/index.js @@ -0,0 +1,8 @@ +export default function ansiRegex({onlyFirst = false} = {}) { + const pattern = [ + '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', + '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))' + ].join('|'); + + return new RegExp(pattern, onlyFirst ? undefined : 'g'); +} diff --git a/node_modules/ansi-regex/license b/node_modules/ansi-regex/license new file mode 100644 index 0000000..fa7ceba --- /dev/null +++ b/node_modules/ansi-regex/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/ansi-regex/package.json b/node_modules/ansi-regex/package.json new file mode 100644 index 0000000..7bbb563 --- /dev/null +++ b/node_modules/ansi-regex/package.json @@ -0,0 +1,58 @@ +{ + "name": "ansi-regex", + "version": "6.0.1", + "description": "Regular expression for matching ANSI escape codes", + "license": "MIT", + "repository": "chalk/ansi-regex", + "funding": "https://github.com/chalk/ansi-regex?sponsor=1", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "type": "module", + "exports": "./index.js", + "engines": { + "node": ">=12" + }, + "scripts": { + "test": "xo && ava && tsd", + "view-supported": "node fixtures/view-codes.js" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "text", + "regex", + "regexp", + "re", + "match", + "test", + "find", + "pattern" + ], + "devDependencies": { + "ava": "^3.15.0", + "tsd": "^0.14.0", + "xo": "^0.38.2" + } +} diff --git a/node_modules/ansi-regex/readme.md b/node_modules/ansi-regex/readme.md new file mode 100644 index 0000000..0e17e23 --- /dev/null +++ b/node_modules/ansi-regex/readme.md @@ -0,0 +1,72 @@ +# ansi-regex + +> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) + +## Install + +``` +$ npm install ansi-regex +``` + +## Usage + +```js +import ansiRegex from 'ansi-regex'; + +ansiRegex().test('\u001B[4mcake\u001B[0m'); +//=> true + +ansiRegex().test('cake'); +//=> false + +'\u001B[4mcake\u001B[0m'.match(ansiRegex()); +//=> ['\u001B[4m', '\u001B[0m'] + +'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true})); +//=> ['\u001B[4m'] + +'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex()); +//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007'] +``` + +## API + +### ansiRegex(options?) + +Returns a regex for matching ANSI escape codes. + +#### options + +Type: `object` + +##### onlyFirst + +Type: `boolean`\ +Default: `false` *(Matches any ANSI escape codes in a string)* + +Match only the first ANSI escape. + +## FAQ + +### Why do you test for codes not in the ECMA 48 standard? + +Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. We test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them. + +On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out. + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + +--- + +

diff --git a/node_modules/ansi-styles/index.js b/node_modules/ansi-styles/index.js new file mode 100644 index 0000000..90a871c --- /dev/null +++ b/node_modules/ansi-styles/index.js @@ -0,0 +1,165 @@ +'use strict'; +const colorConvert = require('color-convert'); + +const wrapAnsi16 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => function () { + const rgb = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], + + // Bright color + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + + // Fix humans + styles.color.grey = styles.color.gray; + + for (const groupName of Object.keys(styles)) { + const group = styles[groupName]; + + for (const styleName of Object.keys(group)) { + const style = group[styleName]; + + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + + group[styleName] = styles[styleName]; + + codes.set(style[0], style[1]); + } + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false + }); + } + + const ansi2ansi = n => n; + const rgb2rgb = (r, g, b) => [r, g, b]; + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + styles.color.ansi = { + ansi: wrapAnsi16(ansi2ansi, 0) + }; + styles.color.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 0) + }; + styles.color.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 0) + }; + + styles.bgColor.ansi = { + ansi: wrapAnsi16(ansi2ansi, 10) + }; + styles.bgColor.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 10) + }; + styles.bgColor.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 10) + }; + + for (let key of Object.keys(colorConvert)) { + if (typeof colorConvert[key] !== 'object') { + continue; + } + + const suite = colorConvert[key]; + + if (key === 'ansi16') { + key = 'ansi'; + } + + if ('ansi16' in suite) { + styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); + styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); + } + + if ('ansi256' in suite) { + styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); + styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); + } + + if ('rgb' in suite) { + styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); + styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); + } + } + + return styles; +} + +// Make the export immutable +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); diff --git a/node_modules/ansi-styles/license b/node_modules/ansi-styles/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/node_modules/ansi-styles/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/ansi-styles/package.json b/node_modules/ansi-styles/package.json new file mode 100644 index 0000000..65edb48 --- /dev/null +++ b/node_modules/ansi-styles/package.json @@ -0,0 +1,56 @@ +{ + "name": "ansi-styles", + "version": "3.2.1", + "description": "ANSI escape codes for styling strings in the terminal", + "license": "MIT", + "repository": "chalk/ansi-styles", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=4" + }, + "scripts": { + "test": "xo && ava", + "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor" + }, + "files": [ + "index.js" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "color-convert": "^1.9.0" + }, + "devDependencies": { + "ava": "*", + "babel-polyfill": "^6.23.0", + "svg-term-cli": "^2.1.1", + "xo": "*" + }, + "ava": { + "require": "babel-polyfill" + } +} diff --git a/node_modules/ansi-styles/readme.md b/node_modules/ansi-styles/readme.md new file mode 100644 index 0000000..3158e2d --- /dev/null +++ b/node_modules/ansi-styles/readme.md @@ -0,0 +1,147 @@ +# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) + +> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal + +You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. + + + + +## Install + +``` +$ npm install ansi-styles +``` + + +## Usage + +```js +const style = require('ansi-styles'); + +console.log(`${style.green.open}Hello world!${style.green.close}`); + + +// Color conversion between 16/256/truecolor +// NOTE: If conversion goes to 16 colors or 256 colors, the original color +// may be degraded to fit that color palette. This means terminals +// that do not support 16 million colors will best-match the +// original color. +console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close); +console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close); +console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.close); +``` + +## API + +Each style has an `open` and `close` property. + + +## Styles + +### Modifiers + +- `reset` +- `bold` +- `dim` +- `italic` *(Not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(Not widely supported)* + +### Colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `gray` ("bright black") +- `redBright` +- `greenBright` +- `yellowBright` +- `blueBright` +- `magentaBright` +- `cyanBright` +- `whiteBright` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` +- `bgBlackBright` +- `bgRedBright` +- `bgGreenBright` +- `bgYellowBright` +- `bgBlueBright` +- `bgMagentaBright` +- `bgCyanBright` +- `bgWhiteBright` + + +## Advanced usage + +By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. + +- `style.modifier` +- `style.color` +- `style.bgColor` + +###### Example + +```js +console.log(style.color.green.open); +``` + +Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values. + +###### Example + +```js +console.log(style.codes.get(36)); +//=> 39 +``` + + +## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728) + +`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors. + +To use these, call the associated conversion function with the intended output, for example: + +```js +style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code +style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code + +style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code +style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code + +style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code +style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code +``` + + +## Related + +- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal + + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + + +## License + +MIT diff --git a/node_modules/balanced-match/.github/FUNDING.yml b/node_modules/balanced-match/.github/FUNDING.yml new file mode 100644 index 0000000..cea8b16 --- /dev/null +++ b/node_modules/balanced-match/.github/FUNDING.yml @@ -0,0 +1,2 @@ +tidelift: "npm/balanced-match" +patreon: juliangruber diff --git a/node_modules/balanced-match/LICENSE.md b/node_modules/balanced-match/LICENSE.md new file mode 100644 index 0000000..2cdc8e4 --- /dev/null +++ b/node_modules/balanced-match/LICENSE.md @@ -0,0 +1,21 @@ +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/balanced-match/README.md b/node_modules/balanced-match/README.md new file mode 100644 index 0000000..d2a48b6 --- /dev/null +++ b/node_modules/balanced-match/README.md @@ -0,0 +1,97 @@ +# balanced-match + +Match balanced string pairs, like `{` and `}` or `` and ``. Supports regular expressions as well! + +[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match) +[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match) + +[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match) + +## Example + +Get the first matching pair of braces: + +```js +var balanced = require('balanced-match'); + +console.log(balanced('{', '}', 'pre{in{nested}}post')); +console.log(balanced('{', '}', 'pre{first}between{second}post')); +console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre { in{nest} } post')); +``` + +The matches are: + +```bash +$ node example.js +{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' } +{ start: 3, + end: 9, + pre: 'pre', + body: 'first', + post: 'between{second}post' } +{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' } +``` + +## API + +### var m = balanced(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +object with those keys: + +* **start** the index of the first match of `a` +* **end** the index of the matching `b` +* **pre** the preamble, `a` and `b` not included +* **body** the match, `a` and `b` not included +* **post** the postscript, `a` and `b` not included + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`. + +### var r = balanced.range(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +array with indexes: `[ , ]`. + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install balanced-match +``` + +## Security contact information + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). +Tidelift will coordinate the fix and disclosure. + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/balanced-match/index.js b/node_modules/balanced-match/index.js new file mode 100644 index 0000000..c67a646 --- /dev/null +++ b/node_modules/balanced-match/index.js @@ -0,0 +1,62 @@ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + if(a===b) { + return [ai, bi]; + } + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json new file mode 100644 index 0000000..ce6073e --- /dev/null +++ b/node_modules/balanced-match/package.json @@ -0,0 +1,48 @@ +{ + "name": "balanced-match", + "description": "Match balanced character pairs, like \"{\" and \"}\"", + "version": "1.0.2", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/balanced-match.git" + }, + "homepage": "https://github.com/juliangruber/balanced-match", + "main": "index.js", + "scripts": { + "test": "tape test/test.js", + "bench": "matcha test/bench.js" + }, + "devDependencies": { + "matcha": "^0.7.0", + "tape": "^4.6.0" + }, + "keywords": [ + "match", + "regexp", + "test", + "balanced", + "parse" + ], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/brace-expansion/.github/FUNDING.yml b/node_modules/brace-expansion/.github/FUNDING.yml new file mode 100644 index 0000000..79d1eaf --- /dev/null +++ b/node_modules/brace-expansion/.github/FUNDING.yml @@ -0,0 +1,2 @@ +tidelift: "npm/brace-expansion" +patreon: juliangruber diff --git a/node_modules/brace-expansion/LICENSE b/node_modules/brace-expansion/LICENSE new file mode 100644 index 0000000..de32266 --- /dev/null +++ b/node_modules/brace-expansion/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013 Julian Gruber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/brace-expansion/README.md b/node_modules/brace-expansion/README.md new file mode 100644 index 0000000..e55c583 --- /dev/null +++ b/node_modules/brace-expansion/README.md @@ -0,0 +1,135 @@ +# brace-expansion + +[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html), +as known from sh/bash, in JavaScript. + +[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion) +[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion) +[![Greenkeeper badge](https://badges.greenkeeper.io/juliangruber/brace-expansion.svg)](https://greenkeeper.io/) + +[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion) + +## Example + +```js +var expand = require('brace-expansion'); + +expand('file-{a,b,c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('-v{,,}') +// => ['-v', '-v', '-v'] + +expand('file{0..2}.jpg') +// => ['file0.jpg', 'file1.jpg', 'file2.jpg'] + +expand('file-{a..c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('file{2..0}.jpg') +// => ['file2.jpg', 'file1.jpg', 'file0.jpg'] + +expand('file{0..4..2}.jpg') +// => ['file0.jpg', 'file2.jpg', 'file4.jpg'] + +expand('file-{a..e..2}.jpg') +// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg'] + +expand('file{00..10..5}.jpg') +// => ['file00.jpg', 'file05.jpg', 'file10.jpg'] + +expand('{{A..C},{a..c}}') +// => ['A', 'B', 'C', 'a', 'b', 'c'] + +expand('ppp{,config,oe{,conf}}') +// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf'] +``` + +## API + +```js +var expand = require('brace-expansion'); +``` + +### var expanded = expand(str) + +Return an array of all possible and valid expansions of `str`. If none are +found, `[str]` is returned. + +Valid expansions are: + +```js +/^(.*,)+(.+)?$/ +// {a,b,...} +``` + +A comma separated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +A numeric sequence from `x` to `y` inclusive, with optional increment. +If `x` or `y` start with a leading `0`, all the numbers will be padded +to have equal length. Negative numbers and backwards iteration work too. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +An alphabetic sequence from `x` to `y` inclusive, with optional increment. +`x` and `y` must be exactly one character, and if given, `incr` must be a +number. + +For compatibility reasons, the string `${` is not eligible for brace expansion. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install brace-expansion +``` + +## Contributors + +- [Julian Gruber](https://github.com/juliangruber) +- [Isaac Z. Schlueter](https://github.com/isaacs) + +## Sponsors + +This module is proudly supported by my [Sponsors](https://github.com/juliangruber/sponsors)! + +Do you want to support modules like this to improve their quality, stability and weigh in on new features? Then please consider donating to my [Patreon](https://www.patreon.com/juliangruber). Not sure how much of my modules you're using? Try [feross/thanks](https://github.com/feross/thanks)! + +## Security contact information + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). +Tidelift will coordinate the fix and disclosure. + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/brace-expansion/index.js b/node_modules/brace-expansion/index.js new file mode 100644 index 0000000..4af9dde --- /dev/null +++ b/node_modules/brace-expansion/index.js @@ -0,0 +1,203 @@ +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m) return [str]; + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + if (/\$$/.test(m.pre)) { + for (var k = 0; k < post.length; k++) { + var expansion = pre+ '{' + m.body + '}' + post[k]; + expansions.push(expansion); + } + } else { + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = []; + + for (var j = 0; j < n.length; j++) { + N.push.apply(N, expand(n[j], false)); + } + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + } + + return expansions; +} + diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json new file mode 100644 index 0000000..7097d41 --- /dev/null +++ b/node_modules/brace-expansion/package.json @@ -0,0 +1,46 @@ +{ + "name": "brace-expansion", + "description": "Brace expansion as known from sh/bash", + "version": "2.0.1", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/brace-expansion.git" + }, + "homepage": "https://github.com/juliangruber/brace-expansion", + "main": "index.js", + "scripts": { + "test": "tape test/*.js", + "gentest": "bash test/generate.sh", + "bench": "matcha test/perf/bench.js" + }, + "dependencies": { + "balanced-match": "^1.0.0" + }, + "devDependencies": { + "@c4312/matcha": "^1.3.1", + "tape": "^4.6.0" + }, + "keywords": [], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/builtin-modules/builtin-modules.json b/node_modules/builtin-modules/builtin-modules.json new file mode 100644 index 0000000..f2f4dbd --- /dev/null +++ b/node_modules/builtin-modules/builtin-modules.json @@ -0,0 +1,43 @@ +[ + "assert", + "async_hooks", + "buffer", + "child_process", + "cluster", + "console", + "constants", + "crypto", + "dgram", + "diagnostics_channel", + "dns", + "domain", + "events", + "fs", + "http", + "http2", + "https", + "inspector", + "module", + "net", + "os", + "path", + "perf_hooks", + "process", + "punycode", + "querystring", + "readline", + "repl", + "stream", + "string_decoder", + "timers", + "tls", + "trace_events", + "tty", + "url", + "util", + "v8", + "vm", + "wasi", + "worker_threads", + "zlib" +] diff --git a/node_modules/builtin-modules/index.d.ts b/node_modules/builtin-modules/index.d.ts new file mode 100644 index 0000000..765dcfe --- /dev/null +++ b/node_modules/builtin-modules/index.d.ts @@ -0,0 +1,14 @@ +/** +List of the Node.js builtin modules. + +@example +``` +import builtinModules = require('builtin-modules'); + +console.log(builtinModules); +//=> ['assert', 'buffer', …] +``` +*/ +declare const builtinModules: readonly string[]; + +export = builtinModules; diff --git a/node_modules/builtin-modules/index.js b/node_modules/builtin-modules/index.js new file mode 100644 index 0000000..8596b8d --- /dev/null +++ b/node_modules/builtin-modules/index.js @@ -0,0 +1,11 @@ +'use strict'; +const {builtinModules} = require('module'); + +const ignoreList = [ + 'sys' +]; + +// eslint-disable-next-line node/no-deprecated-api +module.exports = (builtinModules || (process.binding ? Object.keys(process.binding('natives')) : []) || []) + .filter(x => !/^_|^(internal|v8|node-inspect)\/|\//.test(x) && !ignoreList.includes(x)) + .sort(); diff --git a/node_modules/builtin-modules/license b/node_modules/builtin-modules/license new file mode 100644 index 0000000..fa7ceba --- /dev/null +++ b/node_modules/builtin-modules/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/builtin-modules/package.json b/node_modules/builtin-modules/package.json new file mode 100644 index 0000000..39ddc44 --- /dev/null +++ b/node_modules/builtin-modules/package.json @@ -0,0 +1,44 @@ +{ + "name": "builtin-modules", + "version": "3.3.0", + "description": "List of the Node.js builtin modules", + "license": "MIT", + "repository": "sindresorhus/builtin-modules", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "engines": { + "node": ">=6" + }, + "scripts": { + "test": "xo && ava && tsd", + "make": "node make.js" + }, + "files": [ + "index.js", + "index.d.ts", + "static.js", + "static.d.ts", + "builtin-modules.json" + ], + "keywords": [ + "builtin", + "built-in", + "builtins", + "node", + "modules", + "core", + "bundled", + "list", + "array", + "names" + ], + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.7.2", + "xo": "^0.24.0" + } +} diff --git a/node_modules/builtin-modules/readme.md b/node_modules/builtin-modules/readme.md new file mode 100644 index 0000000..9126b64 --- /dev/null +++ b/node_modules/builtin-modules/readme.md @@ -0,0 +1,44 @@ +# builtin-modules + +> List of the Node.js builtin modules + +The list is just a [JSON file](builtin-modules.json) and can be used anywhere. + +## Install + +``` +$ npm install builtin-modules +``` + +## Usage + +```js +const builtinModules = require('builtin-modules'); + +console.log(builtinModules); +//=> ['assert', 'buffer', ...] +``` + +## API + +Returns an array of builtin modules fetched from the running Node.js version. + +### Static list + +This module also comes bundled with a static array of builtin modules generated from the latest Node.js version. You can get it with `require('builtin-modules/static');` + +## Related + +- [is-builtin-module](https://github.com/sindresorhus/is-builtin-module) - Check if a string matches the name of a Node.js builtin module + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/builtin-modules/static.d.ts b/node_modules/builtin-modules/static.d.ts new file mode 100644 index 0000000..cfbd565 --- /dev/null +++ b/node_modules/builtin-modules/static.d.ts @@ -0,0 +1,14 @@ +/** +Static list of the Node.js builtin modules. + +@example +``` +import builtinModulesStatic = require('builtin-modules/static'); + +console.log(builtinModulesStatic); +//=> ['assert', 'buffer', …] +``` +*/ +declare const builtinModulesStatic: readonly string[]; + +export = builtinModulesStatic; diff --git a/node_modules/builtin-modules/static.js b/node_modules/builtin-modules/static.js new file mode 100644 index 0000000..3966280 --- /dev/null +++ b/node_modules/builtin-modules/static.js @@ -0,0 +1,2 @@ +'use strict'; +module.exports = require('./builtin-modules'); diff --git a/node_modules/chalk/index.js b/node_modules/chalk/index.js new file mode 100644 index 0000000..1cc5fa8 --- /dev/null +++ b/node_modules/chalk/index.js @@ -0,0 +1,228 @@ +'use strict'; +const escapeStringRegexp = require('escape-string-regexp'); +const ansiStyles = require('ansi-styles'); +const stdoutColor = require('supports-color').stdout; + +const template = require('./templates.js'); + +const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); + +// `supportsColor.level` → `ansiStyles.color[name]` mapping +const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; + +// `color-convert` models to exclude from the Chalk API due to conflicts and such +const skipModels = new Set(['gray']); + +const styles = Object.create(null); + +function applyOptions(obj, options) { + options = options || {}; + + // Detect level if not set manually + const scLevel = stdoutColor ? stdoutColor.level : 0; + obj.level = options.level === undefined ? scLevel : options.level; + obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0; +} + +function Chalk(options) { + // We check for this.template here since calling `chalk.constructor()` + // by itself will have a `this` of a previously constructed chalk object + if (!this || !(this instanceof Chalk) || this.template) { + const chalk = {}; + applyOptions(chalk, options); + + chalk.template = function () { + const args = [].slice.call(arguments); + return chalkTag.apply(null, [chalk.template].concat(args)); + }; + + Object.setPrototypeOf(chalk, Chalk.prototype); + Object.setPrototypeOf(chalk.template, chalk); + + chalk.template.constructor = Chalk; + + return chalk.template; + } + + applyOptions(this, options); +} + +// Use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001B[94m'; +} + +for (const key of Object.keys(ansiStyles)) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + styles[key] = { + get() { + const codes = ansiStyles[key]; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); + } + }; +} + +styles.visible = { + get() { + return build.call(this, this._styles || [], true, 'visible'); + } +}; + +ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g'); +for (const model of Object.keys(ansiStyles.color.ansi)) { + if (skipModels.has(model)) { + continue; + } + + styles[model] = { + get() { + const level = this.level; + return function () { + const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.color.close, + closeRe: ansiStyles.color.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; +} + +ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g'); +for (const model of Object.keys(ansiStyles.bgColor.ansi)) { + if (skipModels.has(model)) { + continue; + } + + const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const level = this.level; + return function () { + const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.bgColor.close, + closeRe: ansiStyles.bgColor.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; +} + +const proto = Object.defineProperties(() => {}, styles); + +function build(_styles, _empty, key) { + const builder = function () { + return applyStyle.apply(builder, arguments); + }; + + builder._styles = _styles; + builder._empty = _empty; + + const self = this; + + Object.defineProperty(builder, 'level', { + enumerable: true, + get() { + return self.level; + }, + set(level) { + self.level = level; + } + }); + + Object.defineProperty(builder, 'enabled', { + enumerable: true, + get() { + return self.enabled; + }, + set(enabled) { + self.enabled = enabled; + } + }); + + // See below for fix regarding invisible grey/dim combination on Windows + builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; + + // `__proto__` is used because we must return a function, but there is + // no way to create a function with a different prototype + builder.__proto__ = proto; // eslint-disable-line no-proto + + return builder; +} + +function applyStyle() { + // Support varags, but simply cast to string in case there's only one arg + const args = arguments; + const argsLen = args.length; + let str = String(arguments[0]); + + if (argsLen === 0) { + return ''; + } + + if (argsLen > 1) { + // Don't slice `arguments`, it prevents V8 optimizations + for (let a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!this.enabled || this.level <= 0 || !str) { + return this._empty ? '' : str; + } + + // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, + // see https://github.com/chalk/chalk/issues/58 + // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. + const originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && this.hasGrey) { + ansiStyles.dim.open = ''; + } + + for (const code of this._styles.slice().reverse()) { + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + + // Close the styling before a linebreak and reopen + // after next line to fix a bleed issue on macOS + // https://github.com/chalk/chalk/pull/92 + str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`); + } + + // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue + ansiStyles.dim.open = originalDim; + + return str; +} + +function chalkTag(chalk, strings) { + if (!Array.isArray(strings)) { + // If chalk() was called by itself or with a string, + // return the string itself as a string. + return [].slice.call(arguments, 1).join(' '); + } + + const args = [].slice.call(arguments, 2); + const parts = [strings.raw[0]]; + + for (let i = 1; i < strings.length; i++) { + parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&')); + parts.push(String(strings.raw[i])); + } + + return template(chalk, parts.join('')); +} + +Object.defineProperties(Chalk.prototype, styles); + +module.exports = Chalk(); // eslint-disable-line new-cap +module.exports.supportsColor = stdoutColor; +module.exports.default = module.exports; // For TypeScript diff --git a/node_modules/chalk/index.js.flow b/node_modules/chalk/index.js.flow new file mode 100644 index 0000000..622caaa --- /dev/null +++ b/node_modules/chalk/index.js.flow @@ -0,0 +1,93 @@ +// @flow strict + +type TemplateStringsArray = $ReadOnlyArray; + +export type Level = $Values<{ + None: 0, + Basic: 1, + Ansi256: 2, + TrueColor: 3 +}>; + +export type ChalkOptions = {| + enabled?: boolean, + level?: Level +|}; + +export type ColorSupport = {| + level: Level, + hasBasic: boolean, + has256: boolean, + has16m: boolean +|}; + +export interface Chalk { + (...text: string[]): string, + (text: TemplateStringsArray, ...placeholders: string[]): string, + constructor(options?: ChalkOptions): Chalk, + enabled: boolean, + level: Level, + rgb(r: number, g: number, b: number): Chalk, + hsl(h: number, s: number, l: number): Chalk, + hsv(h: number, s: number, v: number): Chalk, + hwb(h: number, w: number, b: number): Chalk, + bgHex(color: string): Chalk, + bgKeyword(color: string): Chalk, + bgRgb(r: number, g: number, b: number): Chalk, + bgHsl(h: number, s: number, l: number): Chalk, + bgHsv(h: number, s: number, v: number): Chalk, + bgHwb(h: number, w: number, b: number): Chalk, + hex(color: string): Chalk, + keyword(color: string): Chalk, + + +reset: Chalk, + +bold: Chalk, + +dim: Chalk, + +italic: Chalk, + +underline: Chalk, + +inverse: Chalk, + +hidden: Chalk, + +strikethrough: Chalk, + + +visible: Chalk, + + +black: Chalk, + +red: Chalk, + +green: Chalk, + +yellow: Chalk, + +blue: Chalk, + +magenta: Chalk, + +cyan: Chalk, + +white: Chalk, + +gray: Chalk, + +grey: Chalk, + +blackBright: Chalk, + +redBright: Chalk, + +greenBright: Chalk, + +yellowBright: Chalk, + +blueBright: Chalk, + +magentaBright: Chalk, + +cyanBright: Chalk, + +whiteBright: Chalk, + + +bgBlack: Chalk, + +bgRed: Chalk, + +bgGreen: Chalk, + +bgYellow: Chalk, + +bgBlue: Chalk, + +bgMagenta: Chalk, + +bgCyan: Chalk, + +bgWhite: Chalk, + +bgBlackBright: Chalk, + +bgRedBright: Chalk, + +bgGreenBright: Chalk, + +bgYellowBright: Chalk, + +bgBlueBright: Chalk, + +bgMagentaBright: Chalk, + +bgCyanBright: Chalk, + +bgWhiteBrigh: Chalk, + + supportsColor: ColorSupport +}; + +declare module.exports: Chalk; diff --git a/node_modules/chalk/license b/node_modules/chalk/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/node_modules/chalk/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/chalk/package.json b/node_modules/chalk/package.json new file mode 100644 index 0000000..bc32468 --- /dev/null +++ b/node_modules/chalk/package.json @@ -0,0 +1,71 @@ +{ + "name": "chalk", + "version": "2.4.2", + "description": "Terminal string styling done right", + "license": "MIT", + "repository": "chalk/chalk", + "engines": { + "node": ">=4" + }, + "scripts": { + "test": "xo && tsc --project types && flow --max-warnings=0 && nyc ava", + "bench": "matcha benchmark.js", + "coveralls": "nyc report --reporter=text-lcov | coveralls" + }, + "files": [ + "index.js", + "templates.js", + "types/index.d.ts", + "index.js.flow" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "str", + "ansi", + "style", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "devDependencies": { + "ava": "*", + "coveralls": "^3.0.0", + "execa": "^0.9.0", + "flow-bin": "^0.68.0", + "import-fresh": "^2.0.0", + "matcha": "^0.7.0", + "nyc": "^11.0.2", + "resolve-from": "^4.0.0", + "typescript": "^2.5.3", + "xo": "*" + }, + "types": "types/index.d.ts", + "xo": { + "envs": [ + "node", + "mocha" + ], + "ignores": [ + "test/_flow.js" + ] + } +} diff --git a/node_modules/chalk/readme.md b/node_modules/chalk/readme.md new file mode 100644 index 0000000..d298e2c --- /dev/null +++ b/node_modules/chalk/readme.md @@ -0,0 +1,314 @@ +

+
+
+ Chalk +
+
+
+

+ +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) [![Mentioned in Awesome Node.js](https://awesome.re/mentioned-badge.svg)](https://github.com/sindresorhus/awesome-nodejs) + +### [See what's new in Chalk 2](https://github.com/chalk/chalk/releases/tag/v2.0.0) + + + + +## Highlights + +- Expressive API +- Highly performant +- Ability to nest styles +- [256/Truecolor color support](#256-and-truecolor-color-support) +- Auto-detects color support +- Doesn't extend `String.prototype` +- Clean and focused +- Actively maintained +- [Used by ~23,000 packages](https://www.npmjs.com/browse/depended/chalk) as of December 31, 2017 + + +## Install + +```console +$ npm install chalk +``` + + + + + + +## Usage + +```js +const chalk = require('chalk'); + +console.log(chalk.blue('Hello world!')); +``` + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +const chalk = require('chalk'); +const log = console.log; + +// Combine styled and normal strings +log(chalk.blue('Hello') + ' World' + chalk.red('!')); + +// Compose multiple styles using the chainable API +log(chalk.blue.bgRed.bold('Hello world!')); + +// Pass in multiple arguments +log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz')); + +// Nest styles +log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!')); + +// Nest styles of the same type even (color, underline, background) +log(chalk.green( + 'I am a green line ' + + chalk.blue.underline.bold('with a blue substring') + + ' that becomes green again!' +)); + +// ES2015 template literal +log(` +CPU: ${chalk.red('90%')} +RAM: ${chalk.green('40%')} +DISK: ${chalk.yellow('70%')} +`); + +// ES2015 tagged template literal +log(chalk` +CPU: {red ${cpu.totalPercent}%} +RAM: {green ${ram.used / ram.total * 100}%} +DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} +`); + +// Use RGB colors in terminal emulators that support it. +log(chalk.keyword('orange')('Yay for orange colored text!')); +log(chalk.rgb(123, 45, 67).underline('Underlined reddish color')); +log(chalk.hex('#DEADED').bold('Bold gray!')); +``` + +Easily define your own themes: + +```js +const chalk = require('chalk'); + +const error = chalk.bold.red; +const warning = chalk.keyword('orange'); + +console.log(error('Error!')); +console.log(warning('Warning!')); +``` + +Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args): + +```js +const name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> 'Hello Sindre' +``` + + +## API + +### chalk.`