@springbrand/space 0.2.0-alpha.11 → 0.2.0-alpha.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +9 -2
- package/src/index.ts +3 -3
- package/src/space/default-durable-object.ts +13 -0
- package/src/space/deploy-engine.ts +20 -53
- package/src/space/deployment-contract.ts +54 -0
- package/src/space/durable-object.ts +26 -9
- package/src/space/runtime/deploy-engine.d.ts +1 -0
- package/src/space/runtime/deploy-engine.js +907 -0
- package/src/space/runtime/deploy-engine.js.map +7 -0
- package/src/space/runtime/esbuild-7EQXV6JP.wasm +0 -0
- package/src/space/workspace-port.ts +1 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../node_modules/.pnpm/esbuild-wasm@0.27.4/node_modules/esbuild-wasm/lib/browser.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js", "../../../../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js", "../../../../../node_modules/.pnpm/@jridgewell+resolve-uri@3.1.2/node_modules/@jridgewell/resolve-uri/src/resolve-uri.ts", "../../../../../node_modules/.pnpm/ts-interface-checker@0.1.13/node_modules/ts-interface-checker/dist/util.js", "../../../../../node_modules/.pnpm/ts-interface-checker@0.1.13/node_modules/ts-interface-checker/dist/types.js", "../../../../../node_modules/.pnpm/ts-interface-checker@0.1.13/node_modules/ts-interface-checker/dist/index.js", "../../../../../node_modules/.pnpm/lines-and-columns@1.2.4/node_modules/lines-and-columns/build/index.js", "../../../../../node_modules/.pnpm/es-module-lexer@2.3.1/node_modules/es-module-lexer/dist/lexer.asm.js", "../../../../../node_modules/.pnpm/resolve.exports@2.0.3/node_modules/resolve.exports/dist/index.mjs", "../../../../../node_modules/.pnpm/smol-toml@1.7.0/node_modules/smol-toml/src/date.ts", "../../../../../node_modules/.pnpm/smol-toml@1.7.0/node_modules/smol-toml/src/error.ts", "../../../../../node_modules/.pnpm/smol-toml@1.7.0/node_modules/smol-toml/src/primitive.ts", "../../../../../node_modules/.pnpm/smol-toml@1.7.0/node_modules/smol-toml/src/util.ts", "../../../../../node_modules/.pnpm/smol-toml@1.7.0/node_modules/smol-toml/src/extract.ts", "../../../../../node_modules/.pnpm/smol-toml@1.7.0/node_modules/smol-toml/src/struct.ts", "../../../../../node_modules/.pnpm/smol-toml@1.7.0/node_modules/smol-toml/src/parse.ts", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/tokenizer/keywords.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/tokenizer/types.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/tokenizer/state.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/util/charcodes.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/traverser/base.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/traverser/util.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/util/whitespace.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/util/identifier.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/tokenizer/readWordTree.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/tokenizer/readWord.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/tokenizer/index.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/getImportExportSpecifierInfo.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/plugins/jsx/xhtml.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/getJSXPragmaInfo.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/Transformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/JSXTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/getNonTypeIdentifiers.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/CJSImportProcessor.js", "../../../../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/src/vlq.ts", "../../../../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/src/strings.ts", "../../../../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/src/scopes.ts", "../../../../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts", "../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/trace-mapping.ts", "../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/resolve.ts", "../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/strip-filename.ts", "../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/sourcemap-segment.ts", "../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/sort.ts", "../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/by-source.ts", "../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/binary-search.ts", "../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/types.ts", "../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/src/flatten-map.ts", "../../../../../node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/src/set-array.ts", "../../../../../node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/src/gen-mapping.ts", "../../../../../node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/src/sourcemap-segment.ts", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/computeSourceMap.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/HelperManager.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/identifyShadowedGlobals.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/getIdentifierNames.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/NameManager.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/Options.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/Options-gen-types.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/traverser/lval.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/plugins/typescript.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/plugins/jsx/index.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/plugins/types.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/traverser/expression.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/plugins/flow.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/traverser/statement.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/traverser/index.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/parser/index.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/isAsyncOperation.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/TokenProcessor.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/getClassInfo.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/elideImportEquals.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/getDeclarationInfo.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/isExportFrom.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/removeMaybeImportAttributes.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/shouldElideDefaultExport.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/CJSImportTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/ESMImportTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/FlowTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/JestHoistTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/NumericSeparatorTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/OptionalCatchBindingTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/OptionalChainingNullishTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/ReactDisplayNameTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/ReactHotLoaderTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/isIdentifier.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/TypeScriptTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/transformers/RootTransformer.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/formatTokens.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/util/getTSImportedNames.js", "../../../../../node_modules/.pnpm/sucrase@3.35.1/node_modules/sucrase/dist/esm/index.js", "../../../../../node_modules/.pnpm/@cloudflare+worker-bundler@0.0.4/node_modules/@cloudflare/worker-bundler/src/resolver.ts", "../../../../../node_modules/.pnpm/@cloudflare+worker-bundler@0.0.4/node_modules/@cloudflare/worker-bundler/src/bundler.ts", "../../../../../node_modules/.pnpm/@cloudflare+worker-bundler@0.0.4/node_modules/@cloudflare/worker-bundler/src/config.ts", "../../../../../node_modules/.pnpm/@cloudflare+worker-bundler@0.0.4/node_modules/@cloudflare/worker-bundler/src/installer.ts", "../../../../../node_modules/.pnpm/@cloudflare+worker-bundler@0.0.4/node_modules/@cloudflare/worker-bundler/src/transformer.ts", "../../../../../node_modules/.pnpm/@cloudflare+worker-bundler@0.0.4/node_modules/@cloudflare/worker-bundler/src/utils.ts", "../../../../../node_modules/.pnpm/@cloudflare+worker-bundler@0.0.4/node_modules/@cloudflare/worker-bundler/src/experimental.ts", "../../../../../node_modules/.pnpm/@cloudflare+worker-bundler@0.0.4/node_modules/@cloudflare/worker-bundler/src/mime.ts", "../../../../../node_modules/.pnpm/@cloudflare+worker-bundler@0.0.4/node_modules/@cloudflare/worker-bundler/src/asset-handler.ts", "../../../../../node_modules/.pnpm/@cloudflare+worker-bundler@0.0.4/node_modules/@cloudflare/worker-bundler/src/app.ts", "../../../../../node_modules/.pnpm/@cloudflare+worker-bundler@0.0.4/node_modules/@cloudflare/worker-bundler/src/index.ts", "../deployment-contract.ts", "../fileinfo.ts", "../wrangler-config.ts", "../deploy-engine.ts"],
|
|
4
|
+
"sourcesContent": ["(module=>{\n\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\n\n// lib/npm/browser.ts\nvar browser_exports = {};\n__export(browser_exports, {\n analyzeMetafile: () => analyzeMetafile,\n analyzeMetafileSync: () => analyzeMetafileSync,\n build: () => build,\n buildSync: () => buildSync,\n context: () => context,\n default: () => browser_default,\n formatMessages: () => formatMessages,\n formatMessagesSync: () => formatMessagesSync,\n initialize: () => initialize,\n stop: () => stop,\n transform: () => transform,\n transformSync: () => transformSync,\n version: () => version\n});\nmodule.exports = __toCommonJS(browser_exports);\n\n// lib/shared/stdio_protocol.ts\nfunction encodePacket(packet) {\n let visit = (value) => {\n if (value === null) {\n bb.write8(0);\n } else if (typeof value === \"boolean\") {\n bb.write8(1);\n bb.write8(+value);\n } else if (typeof value === \"number\") {\n bb.write8(2);\n bb.write32(value | 0);\n } else if (typeof value === \"string\") {\n bb.write8(3);\n bb.write(encodeUTF8(value));\n } else if (value instanceof Uint8Array) {\n bb.write8(4);\n bb.write(value);\n } else if (value instanceof Array) {\n bb.write8(5);\n bb.write32(value.length);\n for (let item of value) {\n visit(item);\n }\n } else {\n let keys = Object.keys(value);\n bb.write8(6);\n bb.write32(keys.length);\n for (let key of keys) {\n bb.write(encodeUTF8(key));\n visit(value[key]);\n }\n }\n };\n let bb = new ByteBuffer();\n bb.write32(0);\n bb.write32(packet.id << 1 | +!packet.isRequest);\n visit(packet.value);\n writeUInt32LE(bb.buf, bb.len - 4, 0);\n return bb.buf.subarray(0, bb.len);\n}\nfunction decodePacket(bytes) {\n let visit = () => {\n switch (bb.read8()) {\n case 0:\n return null;\n case 1:\n return !!bb.read8();\n case 2:\n return bb.read32();\n case 3:\n return decodeUTF8(bb.read());\n case 4:\n return bb.read();\n case 5: {\n let count = bb.read32();\n let value2 = [];\n for (let i = 0; i < count; i++) {\n value2.push(visit());\n }\n return value2;\n }\n case 6: {\n let count = bb.read32();\n let value2 = {};\n for (let i = 0; i < count; i++) {\n value2[decodeUTF8(bb.read())] = visit();\n }\n return value2;\n }\n default:\n throw new Error(\"Invalid packet\");\n }\n };\n let bb = new ByteBuffer(bytes);\n let id = bb.read32();\n let isRequest = (id & 1) === 0;\n id >>>= 1;\n let value = visit();\n if (bb.ptr !== bytes.length) {\n throw new Error(\"Invalid packet\");\n }\n return { id, isRequest, value };\n}\nvar ByteBuffer = class {\n constructor(buf = new Uint8Array(1024)) {\n this.buf = buf;\n this.len = 0;\n this.ptr = 0;\n }\n _write(delta) {\n if (this.len + delta > this.buf.length) {\n let clone = new Uint8Array((this.len + delta) * 2);\n clone.set(this.buf);\n this.buf = clone;\n }\n this.len += delta;\n return this.len - delta;\n }\n write8(value) {\n let offset = this._write(1);\n this.buf[offset] = value;\n }\n write32(value) {\n let offset = this._write(4);\n writeUInt32LE(this.buf, value, offset);\n }\n write(bytes) {\n let offset = this._write(4 + bytes.length);\n writeUInt32LE(this.buf, bytes.length, offset);\n this.buf.set(bytes, offset + 4);\n }\n _read(delta) {\n if (this.ptr + delta > this.buf.length) {\n throw new Error(\"Invalid packet\");\n }\n this.ptr += delta;\n return this.ptr - delta;\n }\n read8() {\n return this.buf[this._read(1)];\n }\n read32() {\n return readUInt32LE(this.buf, this._read(4));\n }\n read() {\n let length = this.read32();\n let bytes = new Uint8Array(length);\n let ptr = this._read(bytes.length);\n bytes.set(this.buf.subarray(ptr, ptr + length));\n return bytes;\n }\n};\nvar encodeUTF8;\nvar decodeUTF8;\nvar encodeInvariant;\nif (typeof TextEncoder !== \"undefined\" && typeof TextDecoder !== \"undefined\") {\n let encoder = new TextEncoder();\n let decoder = new TextDecoder();\n encodeUTF8 = (text) => encoder.encode(text);\n decodeUTF8 = (bytes) => decoder.decode(bytes);\n encodeInvariant = 'new TextEncoder().encode(\"\")';\n} else if (typeof Buffer !== \"undefined\") {\n encodeUTF8 = (text) => Buffer.from(text);\n decodeUTF8 = (bytes) => {\n let { buffer, byteOffset, byteLength } = bytes;\n return Buffer.from(buffer, byteOffset, byteLength).toString();\n };\n encodeInvariant = 'Buffer.from(\"\")';\n} else {\n throw new Error(\"No UTF-8 codec found\");\n}\nif (!(encodeUTF8(\"\") instanceof Uint8Array))\n throw new Error(`Invariant violation: \"${encodeInvariant} instanceof Uint8Array\" is incorrectly false\n\nThis indicates that your JavaScript environment is broken. You cannot use\nesbuild in this environment because esbuild relies on this invariant. This\nis not a problem with esbuild. You need to fix your environment instead.\n`);\nfunction readUInt32LE(buffer, offset) {\n return (buffer[offset++] | buffer[offset++] << 8 | buffer[offset++] << 16 | buffer[offset++] << 24) >>> 0;\n}\nfunction writeUInt32LE(buffer, value, offset) {\n buffer[offset++] = value;\n buffer[offset++] = value >> 8;\n buffer[offset++] = value >> 16;\n buffer[offset++] = value >> 24;\n}\n\n// lib/shared/uint8array_json_parser.ts\nvar fromCharCode = String.fromCharCode;\nfunction throwSyntaxError(bytes, index, message) {\n const c = bytes[index];\n let line = 1;\n let column = 0;\n for (let i = 0; i < index; i++) {\n if (bytes[i] === 10 /* Newline */) {\n line++;\n column = 0;\n } else {\n column++;\n }\n }\n throw new SyntaxError(\n message ? message : index === bytes.length ? \"Unexpected end of input while parsing JSON\" : c >= 32 && c <= 126 ? `Unexpected character ${fromCharCode(c)} in JSON at position ${index} (line ${line}, column ${column})` : `Unexpected byte 0x${c.toString(16)} in JSON at position ${index} (line ${line}, column ${column})`\n );\n}\nfunction JSON_parse(bytes) {\n if (!(bytes instanceof Uint8Array)) {\n throw new Error(`JSON input must be a Uint8Array`);\n }\n const propertyStack = [];\n const objectStack = [];\n const stateStack = [];\n const length = bytes.length;\n let property = null;\n let state = 0 /* TopLevel */;\n let object;\n let i = 0;\n while (i < length) {\n let c = bytes[i++];\n if (c <= 32 /* Space */) {\n continue;\n }\n let value;\n if (state === 2 /* Object */ && property === null && c !== 34 /* Quote */ && c !== 125 /* CloseBrace */) {\n throwSyntaxError(bytes, --i);\n }\n switch (c) {\n // True\n case 116 /* LowerT */: {\n if (bytes[i++] !== 114 /* LowerR */ || bytes[i++] !== 117 /* LowerU */ || bytes[i++] !== 101 /* LowerE */) {\n throwSyntaxError(bytes, --i);\n }\n value = true;\n break;\n }\n // False\n case 102 /* LowerF */: {\n if (bytes[i++] !== 97 /* LowerA */ || bytes[i++] !== 108 /* LowerL */ || bytes[i++] !== 115 /* LowerS */ || bytes[i++] !== 101 /* LowerE */) {\n throwSyntaxError(bytes, --i);\n }\n value = false;\n break;\n }\n // Null\n case 110 /* LowerN */: {\n if (bytes[i++] !== 117 /* LowerU */ || bytes[i++] !== 108 /* LowerL */ || bytes[i++] !== 108 /* LowerL */) {\n throwSyntaxError(bytes, --i);\n }\n value = null;\n break;\n }\n // Number begin\n case 45 /* Minus */:\n case 46 /* Dot */:\n case 48 /* Digit0 */:\n case 49 /* Digit1 */:\n case 50 /* Digit2 */:\n case 51 /* Digit3 */:\n case 52 /* Digit4 */:\n case 53 /* Digit5 */:\n case 54 /* Digit6 */:\n case 55 /* Digit7 */:\n case 56 /* Digit8 */:\n case 57 /* Digit9 */: {\n let index = i;\n value = fromCharCode(c);\n c = bytes[i];\n while (true) {\n switch (c) {\n case 43 /* Plus */:\n case 45 /* Minus */:\n case 46 /* Dot */:\n case 48 /* Digit0 */:\n case 49 /* Digit1 */:\n case 50 /* Digit2 */:\n case 51 /* Digit3 */:\n case 52 /* Digit4 */:\n case 53 /* Digit5 */:\n case 54 /* Digit6 */:\n case 55 /* Digit7 */:\n case 56 /* Digit8 */:\n case 57 /* Digit9 */:\n case 101 /* LowerE */:\n case 69 /* UpperE */: {\n value += fromCharCode(c);\n c = bytes[++i];\n continue;\n }\n }\n break;\n }\n value = +value;\n if (isNaN(value)) {\n throwSyntaxError(bytes, --index, \"Invalid number\");\n }\n break;\n }\n // String begin\n case 34 /* Quote */: {\n value = \"\";\n while (true) {\n if (i >= length) {\n throwSyntaxError(bytes, length);\n }\n c = bytes[i++];\n if (c === 34 /* Quote */) {\n break;\n } else if (c === 92 /* Backslash */) {\n switch (bytes[i++]) {\n // Normal escape sequence\n case 34 /* Quote */:\n value += '\"';\n break;\n case 47 /* Slash */:\n value += \"/\";\n break;\n case 92 /* Backslash */:\n value += \"\\\\\";\n break;\n case 98 /* LowerB */:\n value += \"\\b\";\n break;\n case 102 /* LowerF */:\n value += \"\\f\";\n break;\n case 110 /* LowerN */:\n value += \"\\n\";\n break;\n case 114 /* LowerR */:\n value += \"\\r\";\n break;\n case 116 /* LowerT */:\n value += \"\t\";\n break;\n // Unicode escape sequence\n case 117 /* LowerU */: {\n let code = 0;\n for (let j = 0; j < 4; j++) {\n c = bytes[i++];\n code <<= 4;\n if (c >= 48 /* Digit0 */ && c <= 57 /* Digit9 */) code |= c - 48 /* Digit0 */;\n else if (c >= 97 /* LowerA */ && c <= 102 /* LowerF */) code |= c + (10 - 97 /* LowerA */);\n else if (c >= 65 /* UpperA */ && c <= 70 /* UpperF */) code |= c + (10 - 65 /* UpperA */);\n else throwSyntaxError(bytes, --i);\n }\n value += fromCharCode(code);\n break;\n }\n // Invalid escape sequence\n default:\n throwSyntaxError(bytes, --i);\n break;\n }\n } else if (c <= 127) {\n value += fromCharCode(c);\n } else if ((c & 224) === 192) {\n value += fromCharCode((c & 31) << 6 | bytes[i++] & 63);\n } else if ((c & 240) === 224) {\n value += fromCharCode((c & 15) << 12 | (bytes[i++] & 63) << 6 | bytes[i++] & 63);\n } else if ((c & 248) == 240) {\n let codePoint = (c & 7) << 18 | (bytes[i++] & 63) << 12 | (bytes[i++] & 63) << 6 | bytes[i++] & 63;\n if (codePoint > 65535) {\n codePoint -= 65536;\n value += fromCharCode(codePoint >> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n value += fromCharCode(codePoint);\n }\n }\n value[0];\n break;\n }\n // Array begin\n case 91 /* OpenBracket */: {\n value = [];\n propertyStack.push(property);\n objectStack.push(object);\n stateStack.push(state);\n property = null;\n object = value;\n state = 1 /* Array */;\n continue;\n }\n // Object begin\n case 123 /* OpenBrace */: {\n value = {};\n propertyStack.push(property);\n objectStack.push(object);\n stateStack.push(state);\n property = null;\n object = value;\n state = 2 /* Object */;\n continue;\n }\n // Array end\n case 93 /* CloseBracket */: {\n if (state !== 1 /* Array */) {\n throwSyntaxError(bytes, --i);\n }\n value = object;\n property = propertyStack.pop();\n object = objectStack.pop();\n state = stateStack.pop();\n break;\n }\n // Object end\n case 125 /* CloseBrace */: {\n if (state !== 2 /* Object */) {\n throwSyntaxError(bytes, --i);\n }\n value = object;\n property = propertyStack.pop();\n object = objectStack.pop();\n state = stateStack.pop();\n break;\n }\n default: {\n throwSyntaxError(bytes, --i);\n }\n }\n c = bytes[i];\n while (c <= 32 /* Space */) {\n c = bytes[++i];\n }\n switch (state) {\n case 0 /* TopLevel */: {\n if (i === length) {\n return value;\n }\n break;\n }\n case 1 /* Array */: {\n object.push(value);\n if (c === 44 /* Comma */) {\n i++;\n continue;\n }\n if (c === 93 /* CloseBracket */) {\n continue;\n }\n break;\n }\n case 2 /* Object */: {\n if (property === null) {\n property = value;\n if (c === 58 /* Colon */) {\n i++;\n continue;\n }\n } else {\n object[property] = value;\n property = null;\n if (c === 44 /* Comma */) {\n i++;\n continue;\n }\n if (c === 125 /* CloseBrace */) {\n continue;\n }\n }\n break;\n }\n }\n break;\n }\n throwSyntaxError(bytes, i);\n}\n\n// lib/shared/common.ts\nvar quote = JSON.stringify;\nvar buildLogLevelDefault = \"warning\";\nvar transformLogLevelDefault = \"silent\";\nfunction validateAndJoinStringArray(values, what) {\n const toJoin = [];\n for (const value of values) {\n validateStringValue(value, what);\n if (value.indexOf(\",\") >= 0) throw new Error(`Invalid ${what}: ${value}`);\n toJoin.push(value);\n }\n return toJoin.join(\",\");\n}\nvar canBeAnything = () => null;\nvar mustBeBoolean = (value) => typeof value === \"boolean\" ? null : \"a boolean\";\nvar mustBeString = (value) => typeof value === \"string\" ? null : \"a string\";\nvar mustBeRegExp = (value) => value instanceof RegExp ? null : \"a RegExp object\";\nvar mustBeInteger = (value) => typeof value === \"number\" && value === (value | 0) ? null : \"an integer\";\nvar mustBeValidPortNumber = (value) => typeof value === \"number\" && value === (value | 0) && value >= 0 && value <= 65535 ? null : \"a valid port number\";\nvar mustBeFunction = (value) => typeof value === \"function\" ? null : \"a function\";\nvar mustBeArray = (value) => Array.isArray(value) ? null : \"an array\";\nvar mustBeArrayOfStrings = (value) => Array.isArray(value) && value.every((x) => typeof x === \"string\") ? null : \"an array of strings\";\nvar mustBeObject = (value) => typeof value === \"object\" && value !== null && !Array.isArray(value) ? null : \"an object\";\nvar mustBeEntryPoints = (value) => typeof value === \"object\" && value !== null ? null : \"an array or an object\";\nvar mustBeWebAssemblyModule = (value) => value instanceof WebAssembly.Module ? null : \"a WebAssembly.Module\";\nvar mustBeObjectOrNull = (value) => typeof value === \"object\" && !Array.isArray(value) ? null : \"an object or null\";\nvar mustBeStringOrBoolean = (value) => typeof value === \"string\" || typeof value === \"boolean\" ? null : \"a string or a boolean\";\nvar mustBeStringOrObject = (value) => typeof value === \"string\" || typeof value === \"object\" && value !== null && !Array.isArray(value) ? null : \"a string or an object\";\nvar mustBeStringOrArrayOfStrings = (value) => typeof value === \"string\" || Array.isArray(value) && value.every((x) => typeof x === \"string\") ? null : \"a string or an array of strings\";\nvar mustBeStringOrUint8Array = (value) => typeof value === \"string\" || value instanceof Uint8Array ? null : \"a string or a Uint8Array\";\nvar mustBeStringOrURL = (value) => typeof value === \"string\" || value instanceof URL ? null : \"a string or a URL\";\nfunction getFlag(object, keys, key, mustBeFn) {\n let value = object[key];\n keys[key + \"\"] = true;\n if (value === void 0) return void 0;\n let mustBe = mustBeFn(value);\n if (mustBe !== null) throw new Error(`${quote(key)} must be ${mustBe}`);\n return value;\n}\nfunction checkForInvalidFlags(object, keys, where) {\n for (let key in object) {\n if (!(key in keys)) {\n throw new Error(`Invalid option ${where}: ${quote(key)}`);\n }\n }\n}\nfunction validateInitializeOptions(options) {\n let keys = /* @__PURE__ */ Object.create(null);\n let wasmURL = getFlag(options, keys, \"wasmURL\", mustBeStringOrURL);\n let wasmModule = getFlag(options, keys, \"wasmModule\", mustBeWebAssemblyModule);\n let worker = getFlag(options, keys, \"worker\", mustBeBoolean);\n checkForInvalidFlags(options, keys, \"in initialize() call\");\n return {\n wasmURL,\n wasmModule,\n worker\n };\n}\nfunction validateMangleCache(mangleCache) {\n let validated;\n if (mangleCache !== void 0) {\n validated = /* @__PURE__ */ Object.create(null);\n for (let key in mangleCache) {\n let value = mangleCache[key];\n if (typeof value === \"string\" || value === false) {\n validated[key] = value;\n } else {\n throw new Error(`Expected ${quote(key)} in mangle cache to map to either a string or false`);\n }\n }\n }\n return validated;\n}\nfunction pushLogFlags(flags, options, keys, isTTY, logLevelDefault) {\n let color = getFlag(options, keys, \"color\", mustBeBoolean);\n let logLevel = getFlag(options, keys, \"logLevel\", mustBeString);\n let logLimit = getFlag(options, keys, \"logLimit\", mustBeInteger);\n if (color !== void 0) flags.push(`--color=${color}`);\n else if (isTTY) flags.push(`--color=true`);\n flags.push(`--log-level=${logLevel || logLevelDefault}`);\n flags.push(`--log-limit=${logLimit || 0}`);\n}\nfunction validateStringValue(value, what, key) {\n if (typeof value !== \"string\") {\n throw new Error(`Expected value for ${what}${key !== void 0 ? \" \" + quote(key) : \"\"} to be a string, got ${typeof value} instead`);\n }\n return value;\n}\nfunction pushCommonFlags(flags, options, keys) {\n let legalComments = getFlag(options, keys, \"legalComments\", mustBeString);\n let sourceRoot = getFlag(options, keys, \"sourceRoot\", mustBeString);\n let sourcesContent = getFlag(options, keys, \"sourcesContent\", mustBeBoolean);\n let target = getFlag(options, keys, \"target\", mustBeStringOrArrayOfStrings);\n let format = getFlag(options, keys, \"format\", mustBeString);\n let globalName = getFlag(options, keys, \"globalName\", mustBeString);\n let mangleProps = getFlag(options, keys, \"mangleProps\", mustBeRegExp);\n let reserveProps = getFlag(options, keys, \"reserveProps\", mustBeRegExp);\n let mangleQuoted = getFlag(options, keys, \"mangleQuoted\", mustBeBoolean);\n let minify = getFlag(options, keys, \"minify\", mustBeBoolean);\n let minifySyntax = getFlag(options, keys, \"minifySyntax\", mustBeBoolean);\n let minifyWhitespace = getFlag(options, keys, \"minifyWhitespace\", mustBeBoolean);\n let minifyIdentifiers = getFlag(options, keys, \"minifyIdentifiers\", mustBeBoolean);\n let lineLimit = getFlag(options, keys, \"lineLimit\", mustBeInteger);\n let drop = getFlag(options, keys, \"drop\", mustBeArrayOfStrings);\n let dropLabels = getFlag(options, keys, \"dropLabels\", mustBeArrayOfStrings);\n let charset = getFlag(options, keys, \"charset\", mustBeString);\n let treeShaking = getFlag(options, keys, \"treeShaking\", mustBeBoolean);\n let ignoreAnnotations = getFlag(options, keys, \"ignoreAnnotations\", mustBeBoolean);\n let jsx = getFlag(options, keys, \"jsx\", mustBeString);\n let jsxFactory = getFlag(options, keys, \"jsxFactory\", mustBeString);\n let jsxFragment = getFlag(options, keys, \"jsxFragment\", mustBeString);\n let jsxImportSource = getFlag(options, keys, \"jsxImportSource\", mustBeString);\n let jsxDev = getFlag(options, keys, \"jsxDev\", mustBeBoolean);\n let jsxSideEffects = getFlag(options, keys, \"jsxSideEffects\", mustBeBoolean);\n let define = getFlag(options, keys, \"define\", mustBeObject);\n let logOverride = getFlag(options, keys, \"logOverride\", mustBeObject);\n let supported = getFlag(options, keys, \"supported\", mustBeObject);\n let pure = getFlag(options, keys, \"pure\", mustBeArrayOfStrings);\n let keepNames = getFlag(options, keys, \"keepNames\", mustBeBoolean);\n let platform = getFlag(options, keys, \"platform\", mustBeString);\n let tsconfigRaw = getFlag(options, keys, \"tsconfigRaw\", mustBeStringOrObject);\n let absPaths = getFlag(options, keys, \"absPaths\", mustBeArrayOfStrings);\n if (legalComments) flags.push(`--legal-comments=${legalComments}`);\n if (sourceRoot !== void 0) flags.push(`--source-root=${sourceRoot}`);\n if (sourcesContent !== void 0) flags.push(`--sources-content=${sourcesContent}`);\n if (target) flags.push(`--target=${validateAndJoinStringArray(Array.isArray(target) ? target : [target], \"target\")}`);\n if (format) flags.push(`--format=${format}`);\n if (globalName) flags.push(`--global-name=${globalName}`);\n if (platform) flags.push(`--platform=${platform}`);\n if (tsconfigRaw) flags.push(`--tsconfig-raw=${typeof tsconfigRaw === \"string\" ? tsconfigRaw : JSON.stringify(tsconfigRaw)}`);\n if (minify) flags.push(\"--minify\");\n if (minifySyntax) flags.push(\"--minify-syntax\");\n if (minifyWhitespace) flags.push(\"--minify-whitespace\");\n if (minifyIdentifiers) flags.push(\"--minify-identifiers\");\n if (lineLimit) flags.push(`--line-limit=${lineLimit}`);\n if (charset) flags.push(`--charset=${charset}`);\n if (treeShaking !== void 0) flags.push(`--tree-shaking=${treeShaking}`);\n if (ignoreAnnotations) flags.push(`--ignore-annotations`);\n if (drop) for (let what of drop) flags.push(`--drop:${validateStringValue(what, \"drop\")}`);\n if (dropLabels) flags.push(`--drop-labels=${validateAndJoinStringArray(dropLabels, \"drop label\")}`);\n if (absPaths) flags.push(`--abs-paths=${validateAndJoinStringArray(absPaths, \"abs paths\")}`);\n if (mangleProps) flags.push(`--mangle-props=${jsRegExpToGoRegExp(mangleProps)}`);\n if (reserveProps) flags.push(`--reserve-props=${jsRegExpToGoRegExp(reserveProps)}`);\n if (mangleQuoted !== void 0) flags.push(`--mangle-quoted=${mangleQuoted}`);\n if (jsx) flags.push(`--jsx=${jsx}`);\n if (jsxFactory) flags.push(`--jsx-factory=${jsxFactory}`);\n if (jsxFragment) flags.push(`--jsx-fragment=${jsxFragment}`);\n if (jsxImportSource) flags.push(`--jsx-import-source=${jsxImportSource}`);\n if (jsxDev) flags.push(`--jsx-dev`);\n if (jsxSideEffects) flags.push(`--jsx-side-effects`);\n if (define) {\n for (let key in define) {\n if (key.indexOf(\"=\") >= 0) throw new Error(`Invalid define: ${key}`);\n flags.push(`--define:${key}=${validateStringValue(define[key], \"define\", key)}`);\n }\n }\n if (logOverride) {\n for (let key in logOverride) {\n if (key.indexOf(\"=\") >= 0) throw new Error(`Invalid log override: ${key}`);\n flags.push(`--log-override:${key}=${validateStringValue(logOverride[key], \"log override\", key)}`);\n }\n }\n if (supported) {\n for (let key in supported) {\n if (key.indexOf(\"=\") >= 0) throw new Error(`Invalid supported: ${key}`);\n const value = supported[key];\n if (typeof value !== \"boolean\") throw new Error(`Expected value for supported ${quote(key)} to be a boolean, got ${typeof value} instead`);\n flags.push(`--supported:${key}=${value}`);\n }\n }\n if (pure) for (let fn of pure) flags.push(`--pure:${validateStringValue(fn, \"pure\")}`);\n if (keepNames) flags.push(`--keep-names`);\n}\nfunction flagsForBuildOptions(callName, options, isTTY, logLevelDefault, writeDefault) {\n var _a;\n let flags = [];\n let entries = [];\n let keys = /* @__PURE__ */ Object.create(null);\n let stdinContents = null;\n let stdinResolveDir = null;\n pushLogFlags(flags, options, keys, isTTY, logLevelDefault);\n pushCommonFlags(flags, options, keys);\n let sourcemap = getFlag(options, keys, \"sourcemap\", mustBeStringOrBoolean);\n let bundle = getFlag(options, keys, \"bundle\", mustBeBoolean);\n let splitting = getFlag(options, keys, \"splitting\", mustBeBoolean);\n let preserveSymlinks = getFlag(options, keys, \"preserveSymlinks\", mustBeBoolean);\n let metafile = getFlag(options, keys, \"metafile\", mustBeBoolean);\n let outfile = getFlag(options, keys, \"outfile\", mustBeString);\n let outdir = getFlag(options, keys, \"outdir\", mustBeString);\n let outbase = getFlag(options, keys, \"outbase\", mustBeString);\n let tsconfig = getFlag(options, keys, \"tsconfig\", mustBeString);\n let resolveExtensions = getFlag(options, keys, \"resolveExtensions\", mustBeArrayOfStrings);\n let nodePathsInput = getFlag(options, keys, \"nodePaths\", mustBeArrayOfStrings);\n let mainFields = getFlag(options, keys, \"mainFields\", mustBeArrayOfStrings);\n let conditions = getFlag(options, keys, \"conditions\", mustBeArrayOfStrings);\n let external = getFlag(options, keys, \"external\", mustBeArrayOfStrings);\n let packages = getFlag(options, keys, \"packages\", mustBeString);\n let alias = getFlag(options, keys, \"alias\", mustBeObject);\n let loader = getFlag(options, keys, \"loader\", mustBeObject);\n let outExtension = getFlag(options, keys, \"outExtension\", mustBeObject);\n let publicPath = getFlag(options, keys, \"publicPath\", mustBeString);\n let entryNames = getFlag(options, keys, \"entryNames\", mustBeString);\n let chunkNames = getFlag(options, keys, \"chunkNames\", mustBeString);\n let assetNames = getFlag(options, keys, \"assetNames\", mustBeString);\n let inject = getFlag(options, keys, \"inject\", mustBeArrayOfStrings);\n let banner = getFlag(options, keys, \"banner\", mustBeObject);\n let footer = getFlag(options, keys, \"footer\", mustBeObject);\n let entryPoints = getFlag(options, keys, \"entryPoints\", mustBeEntryPoints);\n let absWorkingDir = getFlag(options, keys, \"absWorkingDir\", mustBeString);\n let stdin = getFlag(options, keys, \"stdin\", mustBeObject);\n let write = (_a = getFlag(options, keys, \"write\", mustBeBoolean)) != null ? _a : writeDefault;\n let allowOverwrite = getFlag(options, keys, \"allowOverwrite\", mustBeBoolean);\n let mangleCache = getFlag(options, keys, \"mangleCache\", mustBeObject);\n keys.plugins = true;\n checkForInvalidFlags(options, keys, `in ${callName}() call`);\n if (sourcemap) flags.push(`--sourcemap${sourcemap === true ? \"\" : `=${sourcemap}`}`);\n if (bundle) flags.push(\"--bundle\");\n if (allowOverwrite) flags.push(\"--allow-overwrite\");\n if (splitting) flags.push(\"--splitting\");\n if (preserveSymlinks) flags.push(\"--preserve-symlinks\");\n if (metafile) flags.push(`--metafile`);\n if (outfile) flags.push(`--outfile=${outfile}`);\n if (outdir) flags.push(`--outdir=${outdir}`);\n if (outbase) flags.push(`--outbase=${outbase}`);\n if (tsconfig) flags.push(`--tsconfig=${tsconfig}`);\n if (packages) flags.push(`--packages=${packages}`);\n if (resolveExtensions) flags.push(`--resolve-extensions=${validateAndJoinStringArray(resolveExtensions, \"resolve extension\")}`);\n if (publicPath) flags.push(`--public-path=${publicPath}`);\n if (entryNames) flags.push(`--entry-names=${entryNames}`);\n if (chunkNames) flags.push(`--chunk-names=${chunkNames}`);\n if (assetNames) flags.push(`--asset-names=${assetNames}`);\n if (mainFields) flags.push(`--main-fields=${validateAndJoinStringArray(mainFields, \"main field\")}`);\n if (conditions) flags.push(`--conditions=${validateAndJoinStringArray(conditions, \"condition\")}`);\n if (external) for (let name of external) flags.push(`--external:${validateStringValue(name, \"external\")}`);\n if (alias) {\n for (let old in alias) {\n if (old.indexOf(\"=\") >= 0) throw new Error(`Invalid package name in alias: ${old}`);\n flags.push(`--alias:${old}=${validateStringValue(alias[old], \"alias\", old)}`);\n }\n }\n if (banner) {\n for (let type in banner) {\n if (type.indexOf(\"=\") >= 0) throw new Error(`Invalid banner file type: ${type}`);\n flags.push(`--banner:${type}=${validateStringValue(banner[type], \"banner\", type)}`);\n }\n }\n if (footer) {\n for (let type in footer) {\n if (type.indexOf(\"=\") >= 0) throw new Error(`Invalid footer file type: ${type}`);\n flags.push(`--footer:${type}=${validateStringValue(footer[type], \"footer\", type)}`);\n }\n }\n if (inject) for (let path of inject) flags.push(`--inject:${validateStringValue(path, \"inject\")}`);\n if (loader) {\n for (let ext in loader) {\n if (ext.indexOf(\"=\") >= 0) throw new Error(`Invalid loader extension: ${ext}`);\n flags.push(`--loader:${ext}=${validateStringValue(loader[ext], \"loader\", ext)}`);\n }\n }\n if (outExtension) {\n for (let ext in outExtension) {\n if (ext.indexOf(\"=\") >= 0) throw new Error(`Invalid out extension: ${ext}`);\n flags.push(`--out-extension:${ext}=${validateStringValue(outExtension[ext], \"out extension\", ext)}`);\n }\n }\n if (entryPoints) {\n if (Array.isArray(entryPoints)) {\n for (let i = 0, n = entryPoints.length; i < n; i++) {\n let entryPoint = entryPoints[i];\n if (typeof entryPoint === \"object\" && entryPoint !== null) {\n let entryPointKeys = /* @__PURE__ */ Object.create(null);\n let input = getFlag(entryPoint, entryPointKeys, \"in\", mustBeString);\n let output = getFlag(entryPoint, entryPointKeys, \"out\", mustBeString);\n checkForInvalidFlags(entryPoint, entryPointKeys, \"in entry point at index \" + i);\n if (input === void 0) throw new Error('Missing property \"in\" for entry point at index ' + i);\n if (output === void 0) throw new Error('Missing property \"out\" for entry point at index ' + i);\n entries.push([output, input]);\n } else {\n entries.push([\"\", validateStringValue(entryPoint, \"entry point at index \" + i)]);\n }\n }\n } else {\n for (let key in entryPoints) {\n entries.push([key, validateStringValue(entryPoints[key], \"entry point\", key)]);\n }\n }\n }\n if (stdin) {\n let stdinKeys = /* @__PURE__ */ Object.create(null);\n let contents = getFlag(stdin, stdinKeys, \"contents\", mustBeStringOrUint8Array);\n let resolveDir = getFlag(stdin, stdinKeys, \"resolveDir\", mustBeString);\n let sourcefile = getFlag(stdin, stdinKeys, \"sourcefile\", mustBeString);\n let loader2 = getFlag(stdin, stdinKeys, \"loader\", mustBeString);\n checkForInvalidFlags(stdin, stdinKeys, 'in \"stdin\" object');\n if (sourcefile) flags.push(`--sourcefile=${sourcefile}`);\n if (loader2) flags.push(`--loader=${loader2}`);\n if (resolveDir) stdinResolveDir = resolveDir;\n if (typeof contents === \"string\") stdinContents = encodeUTF8(contents);\n else if (contents instanceof Uint8Array) stdinContents = contents;\n }\n let nodePaths = [];\n if (nodePathsInput) {\n for (let value of nodePathsInput) {\n value += \"\";\n nodePaths.push(value);\n }\n }\n return {\n entries,\n flags,\n write,\n stdinContents,\n stdinResolveDir,\n absWorkingDir,\n nodePaths,\n mangleCache: validateMangleCache(mangleCache)\n };\n}\nfunction flagsForTransformOptions(callName, options, isTTY, logLevelDefault) {\n let flags = [];\n let keys = /* @__PURE__ */ Object.create(null);\n pushLogFlags(flags, options, keys, isTTY, logLevelDefault);\n pushCommonFlags(flags, options, keys);\n let sourcemap = getFlag(options, keys, \"sourcemap\", mustBeStringOrBoolean);\n let sourcefile = getFlag(options, keys, \"sourcefile\", mustBeString);\n let loader = getFlag(options, keys, \"loader\", mustBeString);\n let banner = getFlag(options, keys, \"banner\", mustBeString);\n let footer = getFlag(options, keys, \"footer\", mustBeString);\n let mangleCache = getFlag(options, keys, \"mangleCache\", mustBeObject);\n checkForInvalidFlags(options, keys, `in ${callName}() call`);\n if (sourcemap) flags.push(`--sourcemap=${sourcemap === true ? \"external\" : sourcemap}`);\n if (sourcefile) flags.push(`--sourcefile=${sourcefile}`);\n if (loader) flags.push(`--loader=${loader}`);\n if (banner) flags.push(`--banner=${banner}`);\n if (footer) flags.push(`--footer=${footer}`);\n return {\n flags,\n mangleCache: validateMangleCache(mangleCache)\n };\n}\nfunction createChannel(streamIn) {\n const requestCallbacksByKey = {};\n const closeData = { didClose: false, reason: \"\" };\n let responseCallbacks = {};\n let nextRequestID = 0;\n let nextBuildKey = 0;\n let stdout = new Uint8Array(16 * 1024);\n let stdoutUsed = 0;\n let readFromStdout = (chunk) => {\n let limit = stdoutUsed + chunk.length;\n if (limit > stdout.length) {\n let swap = new Uint8Array(limit * 2);\n swap.set(stdout);\n stdout = swap;\n }\n stdout.set(chunk, stdoutUsed);\n stdoutUsed += chunk.length;\n let offset = 0;\n while (offset + 4 <= stdoutUsed) {\n let length = readUInt32LE(stdout, offset);\n if (offset + 4 + length > stdoutUsed) {\n break;\n }\n offset += 4;\n handleIncomingPacket(stdout.subarray(offset, offset + length));\n offset += length;\n }\n if (offset > 0) {\n stdout.copyWithin(0, offset, stdoutUsed);\n stdoutUsed -= offset;\n }\n };\n let afterClose = (error) => {\n closeData.didClose = true;\n if (error) closeData.reason = \": \" + (error.message || error);\n const text = \"The service was stopped\" + closeData.reason;\n for (let id in responseCallbacks) {\n responseCallbacks[id](text, null);\n }\n responseCallbacks = {};\n };\n let sendRequest = (refs, value, callback) => {\n if (closeData.didClose) return callback(\"The service is no longer running\" + closeData.reason, null);\n let id = nextRequestID++;\n responseCallbacks[id] = (error, response) => {\n try {\n callback(error, response);\n } finally {\n if (refs) refs.unref();\n }\n };\n if (refs) refs.ref();\n streamIn.writeToStdin(encodePacket({ id, isRequest: true, value }));\n };\n let sendResponse = (id, value) => {\n if (closeData.didClose) throw new Error(\"The service is no longer running\" + closeData.reason);\n streamIn.writeToStdin(encodePacket({ id, isRequest: false, value }));\n };\n let handleRequest = (id, request) => __async(null, null, function* () {\n try {\n if (request.command === \"ping\") {\n sendResponse(id, {});\n return;\n }\n if (typeof request.key === \"number\") {\n const requestCallbacks = requestCallbacksByKey[request.key];\n if (!requestCallbacks) {\n return;\n }\n const callback = requestCallbacks[request.command];\n if (callback) {\n yield callback(id, request);\n return;\n }\n }\n throw new Error(`Invalid command: ` + request.command);\n } catch (e) {\n const errors = [extractErrorMessageV8(e, streamIn, null, void 0, \"\")];\n try {\n sendResponse(id, { errors });\n } catch (e2) {\n }\n }\n });\n let isFirstPacket = true;\n let handleIncomingPacket = (bytes) => {\n if (isFirstPacket) {\n isFirstPacket = false;\n let binaryVersion = String.fromCharCode(...bytes);\n if (binaryVersion !== \"0.27.4\") {\n throw new Error(`Cannot start service: Host version \"${\"0.27.4\"}\" does not match binary version ${quote(binaryVersion)}`);\n }\n return;\n }\n let packet = decodePacket(bytes);\n if (packet.isRequest) {\n handleRequest(packet.id, packet.value);\n } else {\n let callback = responseCallbacks[packet.id];\n delete responseCallbacks[packet.id];\n if (packet.value.error) callback(packet.value.error, {});\n else callback(null, packet.value);\n }\n };\n let buildOrContext = ({ callName, refs, options, isTTY, defaultWD, callback }) => {\n let refCount = 0;\n const buildKey = nextBuildKey++;\n const requestCallbacks = {};\n const buildRefs = {\n ref() {\n if (++refCount === 1) {\n if (refs) refs.ref();\n }\n },\n unref() {\n if (--refCount === 0) {\n delete requestCallbacksByKey[buildKey];\n if (refs) refs.unref();\n }\n }\n };\n requestCallbacksByKey[buildKey] = requestCallbacks;\n buildRefs.ref();\n buildOrContextImpl(\n callName,\n buildKey,\n sendRequest,\n sendResponse,\n buildRefs,\n streamIn,\n requestCallbacks,\n options,\n isTTY,\n defaultWD,\n (err, res) => {\n try {\n callback(err, res);\n } finally {\n buildRefs.unref();\n }\n }\n );\n };\n let transform2 = ({ callName, refs, input, options, isTTY, fs, callback }) => {\n const details = createObjectStash();\n let start = (inputPath) => {\n try {\n if (typeof input !== \"string\" && !(input instanceof Uint8Array))\n throw new Error('The input to \"transform\" must be a string or a Uint8Array');\n let {\n flags,\n mangleCache\n } = flagsForTransformOptions(callName, options, isTTY, transformLogLevelDefault);\n let request = {\n command: \"transform\",\n flags,\n inputFS: inputPath !== null,\n input: inputPath !== null ? encodeUTF8(inputPath) : typeof input === \"string\" ? encodeUTF8(input) : input\n };\n if (mangleCache) request.mangleCache = mangleCache;\n sendRequest(refs, request, (error, response) => {\n if (error) return callback(new Error(error), null);\n let errors = replaceDetailsInMessages(response.errors, details);\n let warnings = replaceDetailsInMessages(response.warnings, details);\n let outstanding = 1;\n let next = () => {\n if (--outstanding === 0) {\n let result = {\n warnings,\n code: response.code,\n map: response.map,\n mangleCache: void 0,\n legalComments: void 0\n };\n if (\"legalComments\" in response) result.legalComments = response == null ? void 0 : response.legalComments;\n if (response.mangleCache) result.mangleCache = response == null ? void 0 : response.mangleCache;\n callback(null, result);\n }\n };\n if (errors.length > 0) return callback(failureErrorWithLog(\"Transform failed\", errors, warnings), null);\n if (response.codeFS) {\n outstanding++;\n fs.readFile(response.code, (err, contents) => {\n if (err !== null) {\n callback(err, null);\n } else {\n response.code = contents;\n next();\n }\n });\n }\n if (response.mapFS) {\n outstanding++;\n fs.readFile(response.map, (err, contents) => {\n if (err !== null) {\n callback(err, null);\n } else {\n response.map = contents;\n next();\n }\n });\n }\n next();\n });\n } catch (e) {\n let flags = [];\n try {\n pushLogFlags(flags, options, {}, isTTY, transformLogLevelDefault);\n } catch (e2) {\n }\n const error = extractErrorMessageV8(e, streamIn, details, void 0, \"\");\n sendRequest(refs, { command: \"error\", flags, error }, () => {\n error.detail = details.load(error.detail);\n callback(failureErrorWithLog(\"Transform failed\", [error], []), null);\n });\n }\n };\n if ((typeof input === \"string\" || input instanceof Uint8Array) && input.length > 1024 * 1024) {\n let next = start;\n start = () => fs.writeFile(input, next);\n }\n start(null);\n };\n let formatMessages2 = ({ callName, refs, messages, options, callback }) => {\n if (!options) throw new Error(`Missing second argument in ${callName}() call`);\n let keys = {};\n let kind = getFlag(options, keys, \"kind\", mustBeString);\n let color = getFlag(options, keys, \"color\", mustBeBoolean);\n let terminalWidth = getFlag(options, keys, \"terminalWidth\", mustBeInteger);\n checkForInvalidFlags(options, keys, `in ${callName}() call`);\n if (kind === void 0) throw new Error(`Missing \"kind\" in ${callName}() call`);\n if (kind !== \"error\" && kind !== \"warning\") throw new Error(`Expected \"kind\" to be \"error\" or \"warning\" in ${callName}() call`);\n let request = {\n command: \"format-msgs\",\n messages: sanitizeMessages(messages, \"messages\", null, \"\", terminalWidth),\n isWarning: kind === \"warning\"\n };\n if (color !== void 0) request.color = color;\n if (terminalWidth !== void 0) request.terminalWidth = terminalWidth;\n sendRequest(refs, request, (error, response) => {\n if (error) return callback(new Error(error), null);\n callback(null, response.messages);\n });\n };\n let analyzeMetafile2 = ({ callName, refs, metafile, options, callback }) => {\n if (options === void 0) options = {};\n let keys = {};\n let color = getFlag(options, keys, \"color\", mustBeBoolean);\n let verbose = getFlag(options, keys, \"verbose\", mustBeBoolean);\n checkForInvalidFlags(options, keys, `in ${callName}() call`);\n let request = {\n command: \"analyze-metafile\",\n metafile\n };\n if (color !== void 0) request.color = color;\n if (verbose !== void 0) request.verbose = verbose;\n sendRequest(refs, request, (error, response) => {\n if (error) return callback(new Error(error), null);\n callback(null, response.result);\n });\n };\n return {\n readFromStdout,\n afterClose,\n service: {\n buildOrContext,\n transform: transform2,\n formatMessages: formatMessages2,\n analyzeMetafile: analyzeMetafile2\n }\n };\n}\nfunction buildOrContextImpl(callName, buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, options, isTTY, defaultWD, callback) {\n const details = createObjectStash();\n const isContext = callName === \"context\";\n const handleError = (e, pluginName) => {\n const flags = [];\n try {\n pushLogFlags(flags, options, {}, isTTY, buildLogLevelDefault);\n } catch (e2) {\n }\n const message = extractErrorMessageV8(e, streamIn, details, void 0, pluginName);\n sendRequest(refs, { command: \"error\", flags, error: message }, () => {\n message.detail = details.load(message.detail);\n callback(failureErrorWithLog(isContext ? \"Context failed\" : \"Build failed\", [message], []), null);\n });\n };\n let plugins;\n if (typeof options === \"object\") {\n const value = options.plugins;\n if (value !== void 0) {\n if (!Array.isArray(value)) return handleError(new Error(`\"plugins\" must be an array`), \"\");\n plugins = value;\n }\n }\n if (plugins && plugins.length > 0) {\n if (streamIn.isSync) return handleError(new Error(\"Cannot use plugins in synchronous API calls\"), \"\");\n handlePlugins(\n buildKey,\n sendRequest,\n sendResponse,\n refs,\n streamIn,\n requestCallbacks,\n options,\n plugins,\n details\n ).then(\n (result) => {\n if (!result.ok) return handleError(result.error, result.pluginName);\n try {\n buildOrContextContinue(result.requestPlugins, result.runOnEndCallbacks, result.scheduleOnDisposeCallbacks);\n } catch (e) {\n handleError(e, \"\");\n }\n },\n (e) => handleError(e, \"\")\n );\n return;\n }\n try {\n buildOrContextContinue(null, (result, done) => done([], []), () => {\n });\n } catch (e) {\n handleError(e, \"\");\n }\n function buildOrContextContinue(requestPlugins, runOnEndCallbacks, scheduleOnDisposeCallbacks) {\n const writeDefault = streamIn.hasFS;\n const {\n entries,\n flags,\n write,\n stdinContents,\n stdinResolveDir,\n absWorkingDir,\n nodePaths,\n mangleCache\n } = flagsForBuildOptions(callName, options, isTTY, buildLogLevelDefault, writeDefault);\n if (write && !streamIn.hasFS) throw new Error(`The \"write\" option is unavailable in this environment`);\n const request = {\n command: \"build\",\n key: buildKey,\n entries,\n flags,\n write,\n stdinContents,\n stdinResolveDir,\n absWorkingDir: absWorkingDir || defaultWD,\n nodePaths,\n context: isContext\n };\n if (requestPlugins) request.plugins = requestPlugins;\n if (mangleCache) request.mangleCache = mangleCache;\n const buildResponseToResult = (response, callback2) => {\n const result = {\n errors: replaceDetailsInMessages(response.errors, details),\n warnings: replaceDetailsInMessages(response.warnings, details),\n outputFiles: void 0,\n metafile: void 0,\n mangleCache: void 0\n };\n const originalErrors = result.errors.slice();\n const originalWarnings = result.warnings.slice();\n if (response.outputFiles) result.outputFiles = response.outputFiles.map(convertOutputFiles);\n if (response.metafile) result.metafile = parseJSON(response.metafile);\n if (response.mangleCache) result.mangleCache = response.mangleCache;\n if (response.writeToStdout !== void 0) console.log(decodeUTF8(response.writeToStdout).replace(/\\n$/, \"\"));\n runOnEndCallbacks(result, (onEndErrors, onEndWarnings) => {\n if (originalErrors.length > 0 || onEndErrors.length > 0) {\n const error = failureErrorWithLog(\"Build failed\", originalErrors.concat(onEndErrors), originalWarnings.concat(onEndWarnings));\n return callback2(error, null, onEndErrors, onEndWarnings);\n }\n callback2(null, result, onEndErrors, onEndWarnings);\n });\n };\n let latestResultPromise;\n let provideLatestResult;\n if (isContext)\n requestCallbacks[\"on-end\"] = (id, request2) => new Promise((resolve) => {\n buildResponseToResult(request2, (err, result, onEndErrors, onEndWarnings) => {\n const response = {\n errors: onEndErrors,\n warnings: onEndWarnings\n };\n if (provideLatestResult) provideLatestResult(err, result);\n latestResultPromise = void 0;\n provideLatestResult = void 0;\n sendResponse(id, response);\n resolve();\n });\n });\n sendRequest(refs, request, (error, response) => {\n if (error) return callback(new Error(error), null);\n if (!isContext) {\n return buildResponseToResult(response, (err, res) => {\n scheduleOnDisposeCallbacks();\n return callback(err, res);\n });\n }\n if (response.errors.length > 0) {\n return callback(failureErrorWithLog(\"Context failed\", response.errors, response.warnings), null);\n }\n let didDispose = false;\n const result = {\n rebuild: () => {\n if (!latestResultPromise) latestResultPromise = new Promise((resolve, reject) => {\n let settlePromise;\n provideLatestResult = (err, result2) => {\n if (!settlePromise) settlePromise = () => err ? reject(err) : resolve(result2);\n };\n const triggerAnotherBuild = () => {\n const request2 = {\n command: \"rebuild\",\n key: buildKey\n };\n sendRequest(refs, request2, (error2, response2) => {\n if (error2) {\n reject(new Error(error2));\n } else if (settlePromise) {\n settlePromise();\n } else {\n triggerAnotherBuild();\n }\n });\n };\n triggerAnotherBuild();\n });\n return latestResultPromise;\n },\n watch: (options2 = {}) => new Promise((resolve, reject) => {\n if (!streamIn.hasFS) throw new Error(`Cannot use the \"watch\" API in this environment`);\n const keys = {};\n const delay = getFlag(options2, keys, \"delay\", mustBeInteger);\n checkForInvalidFlags(options2, keys, `in watch() call`);\n const request2 = {\n command: \"watch\",\n key: buildKey\n };\n if (delay) request2.delay = delay;\n sendRequest(refs, request2, (error2) => {\n if (error2) reject(new Error(error2));\n else resolve(void 0);\n });\n }),\n serve: (options2 = {}) => new Promise((resolve, reject) => {\n if (!streamIn.hasFS) throw new Error(`Cannot use the \"serve\" API in this environment`);\n const keys = {};\n const port = getFlag(options2, keys, \"port\", mustBeValidPortNumber);\n const host = getFlag(options2, keys, \"host\", mustBeString);\n const servedir = getFlag(options2, keys, \"servedir\", mustBeString);\n const keyfile = getFlag(options2, keys, \"keyfile\", mustBeString);\n const certfile = getFlag(options2, keys, \"certfile\", mustBeString);\n const fallback = getFlag(options2, keys, \"fallback\", mustBeString);\n const cors = getFlag(options2, keys, \"cors\", mustBeObject);\n const onRequest = getFlag(options2, keys, \"onRequest\", mustBeFunction);\n checkForInvalidFlags(options2, keys, `in serve() call`);\n const request2 = {\n command: \"serve\",\n key: buildKey,\n onRequest: !!onRequest\n };\n if (port !== void 0) request2.port = port;\n if (host !== void 0) request2.host = host;\n if (servedir !== void 0) request2.servedir = servedir;\n if (keyfile !== void 0) request2.keyfile = keyfile;\n if (certfile !== void 0) request2.certfile = certfile;\n if (fallback !== void 0) request2.fallback = fallback;\n if (cors) {\n const corsKeys = {};\n const origin = getFlag(cors, corsKeys, \"origin\", mustBeStringOrArrayOfStrings);\n checkForInvalidFlags(cors, corsKeys, `on \"cors\" object`);\n if (Array.isArray(origin)) request2.corsOrigin = origin;\n else if (origin !== void 0) request2.corsOrigin = [origin];\n }\n sendRequest(refs, request2, (error2, response2) => {\n if (error2) return reject(new Error(error2));\n if (onRequest) {\n requestCallbacks[\"serve-request\"] = (id, request3) => {\n onRequest(request3.args);\n sendResponse(id, {});\n };\n }\n resolve(response2);\n });\n }),\n cancel: () => new Promise((resolve) => {\n if (didDispose) return resolve();\n const request2 = {\n command: \"cancel\",\n key: buildKey\n };\n sendRequest(refs, request2, () => {\n resolve();\n });\n }),\n dispose: () => new Promise((resolve) => {\n if (didDispose) return resolve();\n didDispose = true;\n const request2 = {\n command: \"dispose\",\n key: buildKey\n };\n sendRequest(refs, request2, () => {\n resolve();\n scheduleOnDisposeCallbacks();\n refs.unref();\n });\n })\n };\n refs.ref();\n callback(null, result);\n });\n }\n}\nvar handlePlugins = (buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, initialOptions, plugins, details) => __async(null, null, function* () {\n let onStartCallbacks = [];\n let onEndCallbacks = [];\n let onResolveCallbacks = {};\n let onLoadCallbacks = {};\n let onDisposeCallbacks = [];\n let nextCallbackID = 0;\n let i = 0;\n let requestPlugins = [];\n let isSetupDone = false;\n plugins = [...plugins];\n for (let item of plugins) {\n let keys = {};\n if (typeof item !== \"object\") throw new Error(`Plugin at index ${i} must be an object`);\n const name = getFlag(item, keys, \"name\", mustBeString);\n if (typeof name !== \"string\" || name === \"\") throw new Error(`Plugin at index ${i} is missing a name`);\n try {\n let setup = getFlag(item, keys, \"setup\", mustBeFunction);\n if (typeof setup !== \"function\") throw new Error(`Plugin is missing a setup function`);\n checkForInvalidFlags(item, keys, `on plugin ${quote(name)}`);\n let plugin = {\n name,\n onStart: false,\n onEnd: false,\n onResolve: [],\n onLoad: []\n };\n i++;\n let resolve = (path, options = {}) => {\n if (!isSetupDone) throw new Error('Cannot call \"resolve\" before plugin setup has completed');\n if (typeof path !== \"string\") throw new Error(`The path to resolve must be a string`);\n let keys2 = /* @__PURE__ */ Object.create(null);\n let pluginName = getFlag(options, keys2, \"pluginName\", mustBeString);\n let importer = getFlag(options, keys2, \"importer\", mustBeString);\n let namespace = getFlag(options, keys2, \"namespace\", mustBeString);\n let resolveDir = getFlag(options, keys2, \"resolveDir\", mustBeString);\n let kind = getFlag(options, keys2, \"kind\", mustBeString);\n let pluginData = getFlag(options, keys2, \"pluginData\", canBeAnything);\n let importAttributes = getFlag(options, keys2, \"with\", mustBeObject);\n checkForInvalidFlags(options, keys2, \"in resolve() call\");\n return new Promise((resolve2, reject) => {\n const request = {\n command: \"resolve\",\n path,\n key: buildKey,\n pluginName: name\n };\n if (pluginName != null) request.pluginName = pluginName;\n if (importer != null) request.importer = importer;\n if (namespace != null) request.namespace = namespace;\n if (resolveDir != null) request.resolveDir = resolveDir;\n if (kind != null) request.kind = kind;\n else throw new Error(`Must specify \"kind\" when calling \"resolve\"`);\n if (pluginData != null) request.pluginData = details.store(pluginData);\n if (importAttributes != null) request.with = sanitizeStringMap(importAttributes, \"with\");\n sendRequest(refs, request, (error, response) => {\n if (error !== null) reject(new Error(error));\n else resolve2({\n errors: replaceDetailsInMessages(response.errors, details),\n warnings: replaceDetailsInMessages(response.warnings, details),\n path: response.path,\n external: response.external,\n sideEffects: response.sideEffects,\n namespace: response.namespace,\n suffix: response.suffix,\n pluginData: details.load(response.pluginData)\n });\n });\n });\n };\n let promise = setup({\n initialOptions,\n resolve,\n onStart(callback) {\n let registeredText = `This error came from the \"onStart\" callback registered here:`;\n let registeredNote = extractCallerV8(new Error(registeredText), streamIn, \"onStart\");\n onStartCallbacks.push({ name, callback, note: registeredNote });\n plugin.onStart = true;\n },\n onEnd(callback) {\n let registeredText = `This error came from the \"onEnd\" callback registered here:`;\n let registeredNote = extractCallerV8(new Error(registeredText), streamIn, \"onEnd\");\n onEndCallbacks.push({ name, callback, note: registeredNote });\n plugin.onEnd = true;\n },\n onResolve(options, callback) {\n let registeredText = `This error came from the \"onResolve\" callback registered here:`;\n let registeredNote = extractCallerV8(new Error(registeredText), streamIn, \"onResolve\");\n let keys2 = {};\n let filter = getFlag(options, keys2, \"filter\", mustBeRegExp);\n let namespace = getFlag(options, keys2, \"namespace\", mustBeString);\n checkForInvalidFlags(options, keys2, `in onResolve() call for plugin ${quote(name)}`);\n if (filter == null) throw new Error(`onResolve() call is missing a filter`);\n let id = nextCallbackID++;\n onResolveCallbacks[id] = { name, callback, note: registeredNote };\n plugin.onResolve.push({ id, filter: jsRegExpToGoRegExp(filter), namespace: namespace || \"\" });\n },\n onLoad(options, callback) {\n let registeredText = `This error came from the \"onLoad\" callback registered here:`;\n let registeredNote = extractCallerV8(new Error(registeredText), streamIn, \"onLoad\");\n let keys2 = {};\n let filter = getFlag(options, keys2, \"filter\", mustBeRegExp);\n let namespace = getFlag(options, keys2, \"namespace\", mustBeString);\n checkForInvalidFlags(options, keys2, `in onLoad() call for plugin ${quote(name)}`);\n if (filter == null) throw new Error(`onLoad() call is missing a filter`);\n let id = nextCallbackID++;\n onLoadCallbacks[id] = { name, callback, note: registeredNote };\n plugin.onLoad.push({ id, filter: jsRegExpToGoRegExp(filter), namespace: namespace || \"\" });\n },\n onDispose(callback) {\n onDisposeCallbacks.push(callback);\n },\n esbuild: streamIn.esbuild\n });\n if (promise) yield promise;\n requestPlugins.push(plugin);\n } catch (e) {\n return { ok: false, error: e, pluginName: name };\n }\n }\n requestCallbacks[\"on-start\"] = (id, request) => __async(null, null, function* () {\n details.clear();\n let response = { errors: [], warnings: [] };\n yield Promise.all(onStartCallbacks.map((_0) => __async(null, [_0], function* ({ name, callback, note }) {\n try {\n let result = yield callback();\n if (result != null) {\n if (typeof result !== \"object\") throw new Error(`Expected onStart() callback in plugin ${quote(name)} to return an object`);\n let keys = {};\n let errors = getFlag(result, keys, \"errors\", mustBeArray);\n let warnings = getFlag(result, keys, \"warnings\", mustBeArray);\n checkForInvalidFlags(result, keys, `from onStart() callback in plugin ${quote(name)}`);\n if (errors != null) response.errors.push(...sanitizeMessages(errors, \"errors\", details, name, void 0));\n if (warnings != null) response.warnings.push(...sanitizeMessages(warnings, \"warnings\", details, name, void 0));\n }\n } catch (e) {\n response.errors.push(extractErrorMessageV8(e, streamIn, details, note && note(), name));\n }\n })));\n sendResponse(id, response);\n });\n requestCallbacks[\"on-resolve\"] = (id, request) => __async(null, null, function* () {\n let response = {}, name = \"\", callback, note;\n for (let id2 of request.ids) {\n try {\n ({ name, callback, note } = onResolveCallbacks[id2]);\n let result = yield callback({\n path: request.path,\n importer: request.importer,\n namespace: request.namespace,\n resolveDir: request.resolveDir,\n kind: request.kind,\n pluginData: details.load(request.pluginData),\n with: request.with\n });\n if (result != null) {\n if (typeof result !== \"object\") throw new Error(`Expected onResolve() callback in plugin ${quote(name)} to return an object`);\n let keys = {};\n let pluginName = getFlag(result, keys, \"pluginName\", mustBeString);\n let path = getFlag(result, keys, \"path\", mustBeString);\n let namespace = getFlag(result, keys, \"namespace\", mustBeString);\n let suffix = getFlag(result, keys, \"suffix\", mustBeString);\n let external = getFlag(result, keys, \"external\", mustBeBoolean);\n let sideEffects = getFlag(result, keys, \"sideEffects\", mustBeBoolean);\n let pluginData = getFlag(result, keys, \"pluginData\", canBeAnything);\n let errors = getFlag(result, keys, \"errors\", mustBeArray);\n let warnings = getFlag(result, keys, \"warnings\", mustBeArray);\n let watchFiles = getFlag(result, keys, \"watchFiles\", mustBeArrayOfStrings);\n let watchDirs = getFlag(result, keys, \"watchDirs\", mustBeArrayOfStrings);\n checkForInvalidFlags(result, keys, `from onResolve() callback in plugin ${quote(name)}`);\n response.id = id2;\n if (pluginName != null) response.pluginName = pluginName;\n if (path != null) response.path = path;\n if (namespace != null) response.namespace = namespace;\n if (suffix != null) response.suffix = suffix;\n if (external != null) response.external = external;\n if (sideEffects != null) response.sideEffects = sideEffects;\n if (pluginData != null) response.pluginData = details.store(pluginData);\n if (errors != null) response.errors = sanitizeMessages(errors, \"errors\", details, name, void 0);\n if (warnings != null) response.warnings = sanitizeMessages(warnings, \"warnings\", details, name, void 0);\n if (watchFiles != null) response.watchFiles = sanitizeStringArray(watchFiles, \"watchFiles\");\n if (watchDirs != null) response.watchDirs = sanitizeStringArray(watchDirs, \"watchDirs\");\n break;\n }\n } catch (e) {\n response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] };\n break;\n }\n }\n sendResponse(id, response);\n });\n requestCallbacks[\"on-load\"] = (id, request) => __async(null, null, function* () {\n let response = {}, name = \"\", callback, note;\n for (let id2 of request.ids) {\n try {\n ({ name, callback, note } = onLoadCallbacks[id2]);\n let result = yield callback({\n path: request.path,\n namespace: request.namespace,\n suffix: request.suffix,\n pluginData: details.load(request.pluginData),\n with: request.with\n });\n if (result != null) {\n if (typeof result !== \"object\") throw new Error(`Expected onLoad() callback in plugin ${quote(name)} to return an object`);\n let keys = {};\n let pluginName = getFlag(result, keys, \"pluginName\", mustBeString);\n let contents = getFlag(result, keys, \"contents\", mustBeStringOrUint8Array);\n let resolveDir = getFlag(result, keys, \"resolveDir\", mustBeString);\n let pluginData = getFlag(result, keys, \"pluginData\", canBeAnything);\n let loader = getFlag(result, keys, \"loader\", mustBeString);\n let errors = getFlag(result, keys, \"errors\", mustBeArray);\n let warnings = getFlag(result, keys, \"warnings\", mustBeArray);\n let watchFiles = getFlag(result, keys, \"watchFiles\", mustBeArrayOfStrings);\n let watchDirs = getFlag(result, keys, \"watchDirs\", mustBeArrayOfStrings);\n checkForInvalidFlags(result, keys, `from onLoad() callback in plugin ${quote(name)}`);\n response.id = id2;\n if (pluginName != null) response.pluginName = pluginName;\n if (contents instanceof Uint8Array) response.contents = contents;\n else if (contents != null) response.contents = encodeUTF8(contents);\n if (resolveDir != null) response.resolveDir = resolveDir;\n if (pluginData != null) response.pluginData = details.store(pluginData);\n if (loader != null) response.loader = loader;\n if (errors != null) response.errors = sanitizeMessages(errors, \"errors\", details, name, void 0);\n if (warnings != null) response.warnings = sanitizeMessages(warnings, \"warnings\", details, name, void 0);\n if (watchFiles != null) response.watchFiles = sanitizeStringArray(watchFiles, \"watchFiles\");\n if (watchDirs != null) response.watchDirs = sanitizeStringArray(watchDirs, \"watchDirs\");\n break;\n }\n } catch (e) {\n response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] };\n break;\n }\n }\n sendResponse(id, response);\n });\n let runOnEndCallbacks = (result, done) => done([], []);\n if (onEndCallbacks.length > 0) {\n runOnEndCallbacks = (result, done) => {\n (() => __async(null, null, function* () {\n const onEndErrors = [];\n const onEndWarnings = [];\n for (const { name, callback, note } of onEndCallbacks) {\n let newErrors;\n let newWarnings;\n try {\n const value = yield callback(result);\n if (value != null) {\n if (typeof value !== \"object\") throw new Error(`Expected onEnd() callback in plugin ${quote(name)} to return an object`);\n let keys = {};\n let errors = getFlag(value, keys, \"errors\", mustBeArray);\n let warnings = getFlag(value, keys, \"warnings\", mustBeArray);\n checkForInvalidFlags(value, keys, `from onEnd() callback in plugin ${quote(name)}`);\n if (errors != null) newErrors = sanitizeMessages(errors, \"errors\", details, name, void 0);\n if (warnings != null) newWarnings = sanitizeMessages(warnings, \"warnings\", details, name, void 0);\n }\n } catch (e) {\n newErrors = [extractErrorMessageV8(e, streamIn, details, note && note(), name)];\n }\n if (newErrors) {\n onEndErrors.push(...newErrors);\n try {\n result.errors.push(...newErrors);\n } catch (e) {\n }\n }\n if (newWarnings) {\n onEndWarnings.push(...newWarnings);\n try {\n result.warnings.push(...newWarnings);\n } catch (e) {\n }\n }\n }\n done(onEndErrors, onEndWarnings);\n }))();\n };\n }\n let scheduleOnDisposeCallbacks = () => {\n for (const cb of onDisposeCallbacks) {\n setTimeout(() => cb(), 0);\n }\n };\n isSetupDone = true;\n return {\n ok: true,\n requestPlugins,\n runOnEndCallbacks,\n scheduleOnDisposeCallbacks\n };\n});\nfunction createObjectStash() {\n const map = /* @__PURE__ */ new Map();\n let nextID = 0;\n return {\n clear() {\n map.clear();\n },\n load(id) {\n return map.get(id);\n },\n store(value) {\n if (value === void 0) return -1;\n const id = nextID++;\n map.set(id, value);\n return id;\n }\n };\n}\nfunction extractCallerV8(e, streamIn, ident) {\n let note;\n let tried = false;\n return () => {\n if (tried) return note;\n tried = true;\n try {\n let lines = (e.stack + \"\").split(\"\\n\");\n lines.splice(1, 1);\n let location2 = parseStackLinesV8(streamIn, lines, ident);\n if (location2) {\n note = { text: e.message, location: location2 };\n return note;\n }\n } catch (e2) {\n }\n };\n}\nfunction extractErrorMessageV8(e, streamIn, stash, note, pluginName) {\n let text = \"Internal error\";\n let location2 = null;\n try {\n text = (e && e.message || e) + \"\";\n } catch (e2) {\n }\n try {\n location2 = parseStackLinesV8(streamIn, (e.stack + \"\").split(\"\\n\"), \"\");\n } catch (e2) {\n }\n return { id: \"\", pluginName, text, location: location2, notes: note ? [note] : [], detail: stash ? stash.store(e) : -1 };\n}\nfunction parseStackLinesV8(streamIn, lines, ident) {\n let at = \" at \";\n if (streamIn.readFileSync && !lines[0].startsWith(at) && lines[1].startsWith(at)) {\n for (let i = 1; i < lines.length; i++) {\n let line = lines[i];\n if (!line.startsWith(at)) continue;\n line = line.slice(at.length);\n while (true) {\n let match = /^(?:new |async )?\\S+ \\((.*)\\)$/.exec(line);\n if (match) {\n line = match[1];\n continue;\n }\n match = /^eval at \\S+ \\((.*)\\)(?:, \\S+:\\d+:\\d+)?$/.exec(line);\n if (match) {\n line = match[1];\n continue;\n }\n match = /^(\\S+):(\\d+):(\\d+)$/.exec(line);\n if (match) {\n let contents;\n try {\n contents = streamIn.readFileSync(match[1], \"utf8\");\n } catch (e) {\n break;\n }\n let lineText = contents.split(/\\r\\n|\\r|\\n|\\u2028|\\u2029/)[+match[2] - 1] || \"\";\n let column = +match[3] - 1;\n let length = lineText.slice(column, column + ident.length) === ident ? ident.length : 0;\n return {\n file: match[1],\n namespace: \"file\",\n line: +match[2],\n column: encodeUTF8(lineText.slice(0, column)).length,\n length: encodeUTF8(lineText.slice(column, column + length)).length,\n lineText: lineText + \"\\n\" + lines.slice(1).join(\"\\n\"),\n suggestion: \"\"\n };\n }\n break;\n }\n }\n }\n return null;\n}\nfunction failureErrorWithLog(text, errors, warnings) {\n let limit = 5;\n text += errors.length < 1 ? \"\" : ` with ${errors.length} error${errors.length < 2 ? \"\" : \"s\"}:` + errors.slice(0, limit + 1).map((e, i) => {\n if (i === limit) return \"\\n...\";\n if (!e.location) return `\nerror: ${e.text}`;\n let { file, line, column } = e.location;\n let pluginText = e.pluginName ? `[plugin: ${e.pluginName}] ` : \"\";\n return `\n${file}:${line}:${column}: ERROR: ${pluginText}${e.text}`;\n }).join(\"\");\n let error = new Error(text);\n for (const [key, value] of [[\"errors\", errors], [\"warnings\", warnings]]) {\n Object.defineProperty(error, key, {\n configurable: true,\n enumerable: true,\n get: () => value,\n set: (value2) => Object.defineProperty(error, key, {\n configurable: true,\n enumerable: true,\n value: value2\n })\n });\n }\n return error;\n}\nfunction replaceDetailsInMessages(messages, stash) {\n for (const message of messages) {\n message.detail = stash.load(message.detail);\n }\n return messages;\n}\nfunction sanitizeLocation(location2, where, terminalWidth) {\n if (location2 == null) return null;\n let keys = {};\n let file = getFlag(location2, keys, \"file\", mustBeString);\n let namespace = getFlag(location2, keys, \"namespace\", mustBeString);\n let line = getFlag(location2, keys, \"line\", mustBeInteger);\n let column = getFlag(location2, keys, \"column\", mustBeInteger);\n let length = getFlag(location2, keys, \"length\", mustBeInteger);\n let lineText = getFlag(location2, keys, \"lineText\", mustBeString);\n let suggestion = getFlag(location2, keys, \"suggestion\", mustBeString);\n checkForInvalidFlags(location2, keys, where);\n if (lineText) {\n const relevantASCII = lineText.slice(\n 0,\n (column && column > 0 ? column : 0) + (length && length > 0 ? length : 0) + (terminalWidth && terminalWidth > 0 ? terminalWidth : 80)\n );\n if (!/[\\x7F-\\uFFFF]/.test(relevantASCII) && !/\\n/.test(lineText)) {\n lineText = relevantASCII;\n }\n }\n return {\n file: file || \"\",\n namespace: namespace || \"\",\n line: line || 0,\n column: column || 0,\n length: length || 0,\n lineText: lineText || \"\",\n suggestion: suggestion || \"\"\n };\n}\nfunction sanitizeMessages(messages, property, stash, fallbackPluginName, terminalWidth) {\n let messagesClone = [];\n let index = 0;\n for (const message of messages) {\n let keys = {};\n let id = getFlag(message, keys, \"id\", mustBeString);\n let pluginName = getFlag(message, keys, \"pluginName\", mustBeString);\n let text = getFlag(message, keys, \"text\", mustBeString);\n let location2 = getFlag(message, keys, \"location\", mustBeObjectOrNull);\n let notes = getFlag(message, keys, \"notes\", mustBeArray);\n let detail = getFlag(message, keys, \"detail\", canBeAnything);\n let where = `in element ${index} of \"${property}\"`;\n checkForInvalidFlags(message, keys, where);\n let notesClone = [];\n if (notes) {\n for (const note of notes) {\n let noteKeys = {};\n let noteText = getFlag(note, noteKeys, \"text\", mustBeString);\n let noteLocation = getFlag(note, noteKeys, \"location\", mustBeObjectOrNull);\n checkForInvalidFlags(note, noteKeys, where);\n notesClone.push({\n text: noteText || \"\",\n location: sanitizeLocation(noteLocation, where, terminalWidth)\n });\n }\n }\n messagesClone.push({\n id: id || \"\",\n pluginName: pluginName || fallbackPluginName,\n text: text || \"\",\n location: sanitizeLocation(location2, where, terminalWidth),\n notes: notesClone,\n detail: stash ? stash.store(detail) : -1\n });\n index++;\n }\n return messagesClone;\n}\nfunction sanitizeStringArray(values, property) {\n const result = [];\n for (const value of values) {\n if (typeof value !== \"string\") throw new Error(`${quote(property)} must be an array of strings`);\n result.push(value);\n }\n return result;\n}\nfunction sanitizeStringMap(map, property) {\n const result = /* @__PURE__ */ Object.create(null);\n for (const key in map) {\n const value = map[key];\n if (typeof value !== \"string\") throw new Error(`key ${quote(key)} in object ${quote(property)} must be a string`);\n result[key] = value;\n }\n return result;\n}\nfunction convertOutputFiles({ path, contents, hash }) {\n let text = null;\n return {\n path,\n contents,\n hash,\n get text() {\n const binary = this.contents;\n if (text === null || binary !== contents) {\n contents = binary;\n text = decodeUTF8(binary);\n }\n return text;\n }\n };\n}\nfunction jsRegExpToGoRegExp(regexp) {\n let result = regexp.source;\n if (regexp.flags) result = `(?${regexp.flags})${result}`;\n return result;\n}\nfunction parseJSON(bytes) {\n let text;\n try {\n text = decodeUTF8(bytes);\n } catch (e) {\n return JSON_parse(bytes);\n }\n return JSON.parse(text);\n}\n\n// lib/npm/browser.ts\nvar version = \"0.27.4\";\nvar build = (options) => ensureServiceIsRunning().build(options);\nvar context = (options) => ensureServiceIsRunning().context(options);\nvar transform = (input, options) => ensureServiceIsRunning().transform(input, options);\nvar formatMessages = (messages, options) => ensureServiceIsRunning().formatMessages(messages, options);\nvar analyzeMetafile = (metafile, options) => ensureServiceIsRunning().analyzeMetafile(metafile, options);\nvar buildSync = () => {\n throw new Error(`The \"buildSync\" API only works in node`);\n};\nvar transformSync = () => {\n throw new Error(`The \"transformSync\" API only works in node`);\n};\nvar formatMessagesSync = () => {\n throw new Error(`The \"formatMessagesSync\" API only works in node`);\n};\nvar analyzeMetafileSync = () => {\n throw new Error(`The \"analyzeMetafileSync\" API only works in node`);\n};\nvar stop = () => {\n if (stopService) stopService();\n return Promise.resolve();\n};\nvar initializePromise;\nvar stopService;\nvar longLivedService;\nvar ensureServiceIsRunning = () => {\n if (longLivedService) return longLivedService;\n if (initializePromise) throw new Error('You need to wait for the promise returned from \"initialize\" to be resolved before calling this');\n throw new Error('You need to call \"initialize\" before calling this');\n};\nvar initialize = (options) => {\n options = validateInitializeOptions(options || {});\n let wasmURL = options.wasmURL;\n let wasmModule = options.wasmModule;\n let useWorker = options.worker !== false;\n if (!wasmURL && !wasmModule) throw new Error('Must provide either the \"wasmURL\" option or the \"wasmModule\" option');\n if (initializePromise) throw new Error('Cannot call \"initialize\" more than once');\n initializePromise = startRunningService(wasmURL || \"\", wasmModule, useWorker);\n initializePromise.catch(() => {\n initializePromise = void 0;\n });\n return initializePromise;\n};\nvar startRunningService = (wasmURL, wasmModule, useWorker) => __async(null, null, function* () {\n let worker;\n let rejectAllWith;\n const rejectAllPromise = new Promise((resolve) => rejectAllWith = resolve);\n if (useWorker) {\n let blob = new Blob([`onmessage=${'((postMessage) => {\\n // Copyright 2018 The Go Authors. All rights reserved.\\n // Use of this source code is governed by a BSD-style\\n // license that can be found in the LICENSE file.\\n var __async = (__this, __arguments, generator) => {\\n return new Promise((resolve, reject) => {\\n var fulfilled = (value) => {\\n try {\\n step(generator.next(value));\\n } catch (e) {\\n reject(e);\\n }\\n };\\n var rejected = (value) => {\\n try {\\n step(generator.throw(value));\\n } catch (e) {\\n reject(e);\\n }\\n };\\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\\n step((generator = generator.apply(__this, __arguments)).next());\\n });\\n };\\n let onmessage;\\n let globalThis = {};\\n for (let o = self; o; o = Object.getPrototypeOf(o))\\n for (let k of Object.getOwnPropertyNames(o))\\n if (!(k in globalThis))\\n Object.defineProperty(globalThis, k, { get: () => self[k] });\\n \"use strict\";\\n (() => {\\n const enosys = () => {\\n const err = new Error(\"not implemented\");\\n err.code = \"ENOSYS\";\\n return err;\\n };\\n if (!globalThis.fs) {\\n let outputBuf = \"\";\\n globalThis.fs = {\\n constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1, O_DIRECTORY: -1 },\\n // unused\\n writeSync(fd, buf) {\\n outputBuf += decoder.decode(buf);\\n const nl = outputBuf.lastIndexOf(\"\\\\n\");\\n if (nl != -1) {\\n console.log(outputBuf.substring(0, nl));\\n outputBuf = outputBuf.substring(nl + 1);\\n }\\n return buf.length;\\n },\\n write(fd, buf, offset, length, position, callback) {\\n if (offset !== 0 || length !== buf.length || position !== null) {\\n callback(enosys());\\n return;\\n }\\n const n = this.writeSync(fd, buf);\\n callback(null, n);\\n },\\n chmod(path, mode, callback) {\\n callback(enosys());\\n },\\n chown(path, uid, gid, callback) {\\n callback(enosys());\\n },\\n close(fd, callback) {\\n callback(enosys());\\n },\\n fchmod(fd, mode, callback) {\\n callback(enosys());\\n },\\n fchown(fd, uid, gid, callback) {\\n callback(enosys());\\n },\\n fstat(fd, callback) {\\n callback(enosys());\\n },\\n fsync(fd, callback) {\\n callback(null);\\n },\\n ftruncate(fd, length, callback) {\\n callback(enosys());\\n },\\n lchown(path, uid, gid, callback) {\\n callback(enosys());\\n },\\n link(path, link, callback) {\\n callback(enosys());\\n },\\n lstat(path, callback) {\\n callback(enosys());\\n },\\n mkdir(path, perm, callback) {\\n callback(enosys());\\n },\\n open(path, flags, mode, callback) {\\n callback(enosys());\\n },\\n read(fd, buffer, offset, length, position, callback) {\\n callback(enosys());\\n },\\n readdir(path, callback) {\\n callback(enosys());\\n },\\n readlink(path, callback) {\\n callback(enosys());\\n },\\n rename(from, to, callback) {\\n callback(enosys());\\n },\\n rmdir(path, callback) {\\n callback(enosys());\\n },\\n stat(path, callback) {\\n callback(enosys());\\n },\\n symlink(path, link, callback) {\\n callback(enosys());\\n },\\n truncate(path, length, callback) {\\n callback(enosys());\\n },\\n unlink(path, callback) {\\n callback(enosys());\\n },\\n utimes(path, atime, mtime, callback) {\\n callback(enosys());\\n }\\n };\\n }\\n if (!globalThis.process) {\\n globalThis.process = {\\n getuid() {\\n return -1;\\n },\\n getgid() {\\n return -1;\\n },\\n geteuid() {\\n return -1;\\n },\\n getegid() {\\n return -1;\\n },\\n getgroups() {\\n throw enosys();\\n },\\n pid: -1,\\n ppid: -1,\\n umask() {\\n throw enosys();\\n },\\n cwd() {\\n throw enosys();\\n },\\n chdir() {\\n throw enosys();\\n }\\n };\\n }\\n if (!globalThis.path) {\\n globalThis.path = {\\n resolve(...pathSegments) {\\n return pathSegments.join(\"/\");\\n }\\n };\\n }\\n if (!globalThis.crypto) {\\n throw new Error(\"globalThis.crypto is not available, polyfill required (crypto.getRandomValues only)\");\\n }\\n if (!globalThis.performance) {\\n throw new Error(\"globalThis.performance is not available, polyfill required (performance.now only)\");\\n }\\n if (!globalThis.TextEncoder) {\\n throw new Error(\"globalThis.TextEncoder is not available, polyfill required\");\\n }\\n if (!globalThis.TextDecoder) {\\n throw new Error(\"globalThis.TextDecoder is not available, polyfill required\");\\n }\\n const encoder = new TextEncoder(\"utf-8\");\\n const decoder = new TextDecoder(\"utf-8\");\\n globalThis.Go = class {\\n constructor() {\\n this.argv = [\"js\"];\\n this.env = {};\\n this.exit = (code) => {\\n if (code !== 0) {\\n console.warn(\"exit code:\", code);\\n }\\n };\\n this._exitPromise = new Promise((resolve) => {\\n this._resolveExitPromise = resolve;\\n });\\n this._pendingEvent = null;\\n this._scheduledTimeouts = /* @__PURE__ */ new Map();\\n this._nextCallbackTimeoutID = 1;\\n const setInt64 = (addr, v) => {\\n this.mem.setUint32(addr + 0, v, true);\\n this.mem.setUint32(addr + 4, Math.floor(v / 4294967296), true);\\n };\\n const setInt32 = (addr, v) => {\\n this.mem.setUint32(addr + 0, v, true);\\n };\\n const getInt64 = (addr) => {\\n const low = this.mem.getUint32(addr + 0, true);\\n const high = this.mem.getInt32(addr + 4, true);\\n return low + high * 4294967296;\\n };\\n const loadValue = (addr) => {\\n const f = this.mem.getFloat64(addr, true);\\n if (f === 0) {\\n return void 0;\\n }\\n if (!isNaN(f)) {\\n return f;\\n }\\n const id = this.mem.getUint32(addr, true);\\n return this._values[id];\\n };\\n const storeValue = (addr, v) => {\\n const nanHead = 2146959360;\\n if (typeof v === \"number\" && v !== 0) {\\n if (isNaN(v)) {\\n this.mem.setUint32(addr + 4, nanHead, true);\\n this.mem.setUint32(addr, 0, true);\\n return;\\n }\\n this.mem.setFloat64(addr, v, true);\\n return;\\n }\\n if (v === void 0) {\\n this.mem.setFloat64(addr, 0, true);\\n return;\\n }\\n let id = this._ids.get(v);\\n if (id === void 0) {\\n id = this._idPool.pop();\\n if (id === void 0) {\\n id = this._values.length;\\n }\\n this._values[id] = v;\\n this._goRefCounts[id] = 0;\\n this._ids.set(v, id);\\n }\\n this._goRefCounts[id]++;\\n let typeFlag = 0;\\n switch (typeof v) {\\n case \"object\":\\n if (v !== null) {\\n typeFlag = 1;\\n }\\n break;\\n case \"string\":\\n typeFlag = 2;\\n break;\\n case \"symbol\":\\n typeFlag = 3;\\n break;\\n case \"function\":\\n typeFlag = 4;\\n break;\\n }\\n this.mem.setUint32(addr + 4, nanHead | typeFlag, true);\\n this.mem.setUint32(addr, id, true);\\n };\\n const loadSlice = (addr) => {\\n const array = getInt64(addr + 0);\\n const len = getInt64(addr + 8);\\n return new Uint8Array(this._inst.exports.mem.buffer, array, len);\\n };\\n const loadSliceOfValues = (addr) => {\\n const array = getInt64(addr + 0);\\n const len = getInt64(addr + 8);\\n const a = new Array(len);\\n for (let i = 0; i < len; i++) {\\n a[i] = loadValue(array + i * 8);\\n }\\n return a;\\n };\\n const loadString = (addr) => {\\n const saddr = getInt64(addr + 0);\\n const len = getInt64(addr + 8);\\n return decoder.decode(new DataView(this._inst.exports.mem.buffer, saddr, len));\\n };\\n const testCallExport = (a, b) => {\\n this._inst.exports.testExport0();\\n return this._inst.exports.testExport(a, b);\\n };\\n const timeOrigin = Date.now() - performance.now();\\n this.importObject = {\\n _gotest: {\\n add: (a, b) => a + b,\\n callExport: testCallExport\\n },\\n gojs: {\\n // Go\\'s SP does not change as long as no Go code is running. Some operations (e.g. calls, getters and setters)\\n // may synchronously trigger a Go event handler. This makes Go code get executed in the middle of the imported\\n // function. A goroutine can switch to a new stack if the current stack is too small (see morestack function).\\n // This changes the SP, thus we have to update the SP used by the imported function.\\n // func wasmExit(code int32)\\n \"runtime.wasmExit\": (sp) => {\\n sp >>>= 0;\\n const code = this.mem.getInt32(sp + 8, true);\\n this.exited = true;\\n delete this._inst;\\n delete this._values;\\n delete this._goRefCounts;\\n delete this._ids;\\n delete this._idPool;\\n this.exit(code);\\n },\\n // func wasmWrite(fd uintptr, p unsafe.Pointer, n int32)\\n \"runtime.wasmWrite\": (sp) => {\\n sp >>>= 0;\\n const fd = getInt64(sp + 8);\\n const p = getInt64(sp + 16);\\n const n = this.mem.getInt32(sp + 24, true);\\n globalThis.fs.writeSync(fd, new Uint8Array(this._inst.exports.mem.buffer, p, n));\\n },\\n // func resetMemoryDataView()\\n \"runtime.resetMemoryDataView\": (sp) => {\\n sp >>>= 0;\\n this.mem = new DataView(this._inst.exports.mem.buffer);\\n },\\n // func nanotime1() int64\\n \"runtime.nanotime1\": (sp) => {\\n sp >>>= 0;\\n setInt64(sp + 8, (timeOrigin + performance.now()) * 1e6);\\n },\\n // func walltime() (sec int64, nsec int32)\\n \"runtime.walltime\": (sp) => {\\n sp >>>= 0;\\n const msec = (/* @__PURE__ */ new Date()).getTime();\\n setInt64(sp + 8, msec / 1e3);\\n this.mem.setInt32(sp + 16, msec % 1e3 * 1e6, true);\\n },\\n // func scheduleTimeoutEvent(delay int64) int32\\n \"runtime.scheduleTimeoutEvent\": (sp) => {\\n sp >>>= 0;\\n const id = this._nextCallbackTimeoutID;\\n this._nextCallbackTimeoutID++;\\n this._scheduledTimeouts.set(id, setTimeout(\\n () => {\\n this._resume();\\n while (this._scheduledTimeouts.has(id)) {\\n console.warn(\"scheduleTimeoutEvent: missed timeout event\");\\n this._resume();\\n }\\n },\\n getInt64(sp + 8)\\n ));\\n this.mem.setInt32(sp + 16, id, true);\\n },\\n // func clearTimeoutEvent(id int32)\\n \"runtime.clearTimeoutEvent\": (sp) => {\\n sp >>>= 0;\\n const id = this.mem.getInt32(sp + 8, true);\\n clearTimeout(this._scheduledTimeouts.get(id));\\n this._scheduledTimeouts.delete(id);\\n },\\n // func getRandomData(r []byte)\\n \"runtime.getRandomData\": (sp) => {\\n sp >>>= 0;\\n crypto.getRandomValues(loadSlice(sp + 8));\\n },\\n // func finalizeRef(v ref)\\n \"syscall/js.finalizeRef\": (sp) => {\\n sp >>>= 0;\\n const id = this.mem.getUint32(sp + 8, true);\\n this._goRefCounts[id]--;\\n if (this._goRefCounts[id] === 0) {\\n const v = this._values[id];\\n this._values[id] = null;\\n this._ids.delete(v);\\n this._idPool.push(id);\\n }\\n },\\n // func stringVal(value string) ref\\n \"syscall/js.stringVal\": (sp) => {\\n sp >>>= 0;\\n storeValue(sp + 24, loadString(sp + 8));\\n },\\n // func valueGet(v ref, p string) ref\\n \"syscall/js.valueGet\": (sp) => {\\n sp >>>= 0;\\n const result = Reflect.get(loadValue(sp + 8), loadString(sp + 16));\\n sp = this._inst.exports.getsp() >>> 0;\\n storeValue(sp + 32, result);\\n },\\n // func valueSet(v ref, p string, x ref)\\n \"syscall/js.valueSet\": (sp) => {\\n sp >>>= 0;\\n Reflect.set(loadValue(sp + 8), loadString(sp + 16), loadValue(sp + 32));\\n },\\n // func valueDelete(v ref, p string)\\n \"syscall/js.valueDelete\": (sp) => {\\n sp >>>= 0;\\n Reflect.deleteProperty(loadValue(sp + 8), loadString(sp + 16));\\n },\\n // func valueIndex(v ref, i int) ref\\n \"syscall/js.valueIndex\": (sp) => {\\n sp >>>= 0;\\n storeValue(sp + 24, Reflect.get(loadValue(sp + 8), getInt64(sp + 16)));\\n },\\n // valueSetIndex(v ref, i int, x ref)\\n \"syscall/js.valueSetIndex\": (sp) => {\\n sp >>>= 0;\\n Reflect.set(loadValue(sp + 8), getInt64(sp + 16), loadValue(sp + 24));\\n },\\n // func valueCall(v ref, m string, args []ref) (ref, bool)\\n \"syscall/js.valueCall\": (sp) => {\\n sp >>>= 0;\\n try {\\n const v = loadValue(sp + 8);\\n const m = Reflect.get(v, loadString(sp + 16));\\n const args = loadSliceOfValues(sp + 32);\\n const result = Reflect.apply(m, v, args);\\n sp = this._inst.exports.getsp() >>> 0;\\n storeValue(sp + 56, result);\\n this.mem.setUint8(sp + 64, 1);\\n } catch (err) {\\n sp = this._inst.exports.getsp() >>> 0;\\n storeValue(sp + 56, err);\\n this.mem.setUint8(sp + 64, 0);\\n }\\n },\\n // func valueInvoke(v ref, args []ref) (ref, bool)\\n \"syscall/js.valueInvoke\": (sp) => {\\n sp >>>= 0;\\n try {\\n const v = loadValue(sp + 8);\\n const args = loadSliceOfValues(sp + 16);\\n const result = Reflect.apply(v, void 0, args);\\n sp = this._inst.exports.getsp() >>> 0;\\n storeValue(sp + 40, result);\\n this.mem.setUint8(sp + 48, 1);\\n } catch (err) {\\n sp = this._inst.exports.getsp() >>> 0;\\n storeValue(sp + 40, err);\\n this.mem.setUint8(sp + 48, 0);\\n }\\n },\\n // func valueNew(v ref, args []ref) (ref, bool)\\n \"syscall/js.valueNew\": (sp) => {\\n sp >>>= 0;\\n try {\\n const v = loadValue(sp + 8);\\n const args = loadSliceOfValues(sp + 16);\\n const result = Reflect.construct(v, args);\\n sp = this._inst.exports.getsp() >>> 0;\\n storeValue(sp + 40, result);\\n this.mem.setUint8(sp + 48, 1);\\n } catch (err) {\\n sp = this._inst.exports.getsp() >>> 0;\\n storeValue(sp + 40, err);\\n this.mem.setUint8(sp + 48, 0);\\n }\\n },\\n // func valueLength(v ref) int\\n \"syscall/js.valueLength\": (sp) => {\\n sp >>>= 0;\\n setInt64(sp + 16, parseInt(loadValue(sp + 8).length));\\n },\\n // valuePrepareString(v ref) (ref, int)\\n \"syscall/js.valuePrepareString\": (sp) => {\\n sp >>>= 0;\\n const str = encoder.encode(String(loadValue(sp + 8)));\\n storeValue(sp + 16, str);\\n setInt64(sp + 24, str.length);\\n },\\n // valueLoadString(v ref, b []byte)\\n \"syscall/js.valueLoadString\": (sp) => {\\n sp >>>= 0;\\n const str = loadValue(sp + 8);\\n loadSlice(sp + 16).set(str);\\n },\\n // func valueInstanceOf(v ref, t ref) bool\\n \"syscall/js.valueInstanceOf\": (sp) => {\\n sp >>>= 0;\\n this.mem.setUint8(sp + 24, loadValue(sp + 8) instanceof loadValue(sp + 16) ? 1 : 0);\\n },\\n // func copyBytesToGo(dst []byte, src ref) (int, bool)\\n \"syscall/js.copyBytesToGo\": (sp) => {\\n sp >>>= 0;\\n const dst = loadSlice(sp + 8);\\n const src = loadValue(sp + 32);\\n if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) {\\n this.mem.setUint8(sp + 48, 0);\\n return;\\n }\\n const toCopy = src.subarray(0, dst.length);\\n dst.set(toCopy);\\n setInt64(sp + 40, toCopy.length);\\n this.mem.setUint8(sp + 48, 1);\\n },\\n // func copyBytesToJS(dst ref, src []byte) (int, bool)\\n \"syscall/js.copyBytesToJS\": (sp) => {\\n sp >>>= 0;\\n const dst = loadValue(sp + 8);\\n const src = loadSlice(sp + 16);\\n if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) {\\n this.mem.setUint8(sp + 48, 0);\\n return;\\n }\\n const toCopy = src.subarray(0, dst.length);\\n dst.set(toCopy);\\n setInt64(sp + 40, toCopy.length);\\n this.mem.setUint8(sp + 48, 1);\\n },\\n \"debug\": (value) => {\\n console.log(value);\\n }\\n }\\n };\\n }\\n run(instance) {\\n return __async(this, null, function* () {\\n if (!(instance instanceof WebAssembly.Instance)) {\\n throw new Error(\"Go.run: WebAssembly.Instance expected\");\\n }\\n this._inst = instance;\\n this.mem = new DataView(this._inst.exports.mem.buffer);\\n this._values = [\\n // JS values that Go currently has references to, indexed by reference id\\n NaN,\\n 0,\\n null,\\n true,\\n false,\\n globalThis,\\n this\\n ];\\n this._goRefCounts = new Array(this._values.length).fill(Infinity);\\n this._ids = /* @__PURE__ */ new Map([\\n // mapping from JS values to reference ids\\n [0, 1],\\n [null, 2],\\n [true, 3],\\n [false, 4],\\n [globalThis, 5],\\n [this, 6]\\n ]);\\n this._idPool = [];\\n this.exited = false;\\n let offset = 4096;\\n const strPtr = (str) => {\\n const ptr = offset;\\n const bytes = encoder.encode(str + \"\\\\0\");\\n new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);\\n offset += bytes.length;\\n if (offset % 8 !== 0) {\\n offset += 8 - offset % 8;\\n }\\n return ptr;\\n };\\n const argc = this.argv.length;\\n const argvPtrs = [];\\n this.argv.forEach((arg) => {\\n argvPtrs.push(strPtr(arg));\\n });\\n argvPtrs.push(0);\\n const keys = Object.keys(this.env).sort();\\n keys.forEach((key) => {\\n argvPtrs.push(strPtr(`${key}=${this.env[key]}`));\\n });\\n argvPtrs.push(0);\\n const argv = offset;\\n argvPtrs.forEach((ptr) => {\\n this.mem.setUint32(offset, ptr, true);\\n this.mem.setUint32(offset + 4, 0, true);\\n offset += 8;\\n });\\n const wasmMinDataAddr = 4096 + 8192;\\n if (offset >= wasmMinDataAddr) {\\n throw new Error(\"total length of command line and environment variables exceeds limit\");\\n }\\n this._inst.exports.run(argc, argv);\\n if (this.exited) {\\n this._resolveExitPromise();\\n }\\n yield this._exitPromise;\\n });\\n }\\n _resume() {\\n if (this.exited) {\\n throw new Error(\"Go program has already exited\");\\n }\\n this._inst.exports.resume();\\n if (this.exited) {\\n this._resolveExitPromise();\\n }\\n }\\n _makeFuncWrapper(id) {\\n const go = this;\\n return function() {\\n const event = { id, this: this, args: arguments };\\n go._pendingEvent = event;\\n go._resume();\\n return event.result;\\n };\\n }\\n };\\n })();\\n onmessage = ({ data: wasm }) => {\\n let decoder = new TextDecoder();\\n let fs = globalThis.fs;\\n let stderr = \"\";\\n fs.writeSync = (fd, buffer) => {\\n if (fd === 1) {\\n postMessage(buffer);\\n } else if (fd === 2) {\\n stderr += decoder.decode(buffer);\\n let parts = stderr.split(\"\\\\n\");\\n if (parts.length > 1) console.log(parts.slice(0, -1).join(\"\\\\n\"));\\n stderr = parts[parts.length - 1];\\n } else {\\n throw new Error(\"Bad write\");\\n }\\n return buffer.length;\\n };\\n let stdin = [];\\n let resumeStdin;\\n let stdinPos = 0;\\n onmessage = ({ data }) => {\\n if (data.length > 0) {\\n stdin.push(data);\\n if (resumeStdin) resumeStdin();\\n }\\n return go;\\n };\\n fs.read = (fd, buffer, offset, length, position, callback) => {\\n if (fd !== 0 || offset !== 0 || length !== buffer.length || position !== null) {\\n throw new Error(\"Bad read\");\\n }\\n if (stdin.length === 0) {\\n resumeStdin = () => fs.read(fd, buffer, offset, length, position, callback);\\n return;\\n }\\n let first = stdin[0];\\n let count = Math.max(0, Math.min(length, first.length - stdinPos));\\n buffer.set(first.subarray(stdinPos, stdinPos + count), offset);\\n stdinPos += count;\\n if (stdinPos === first.length) {\\n stdin.shift();\\n stdinPos = 0;\\n }\\n callback(null, count);\\n };\\n let go = new globalThis.Go();\\n go.argv = [\"\", `--service=${\"0.27.4\"}`];\\n tryToInstantiateModule(wasm, go).then(\\n (instance) => {\\n postMessage(null);\\n go.run(instance);\\n },\\n (error) => {\\n postMessage(error);\\n }\\n );\\n return go;\\n };\\n function tryToInstantiateModule(wasm, go) {\\n return __async(this, null, function* () {\\n if (wasm instanceof WebAssembly.Module) {\\n return WebAssembly.instantiate(wasm, go.importObject);\\n }\\n const res = yield fetch(wasm);\\n if (!res.ok) throw new Error(`Failed to download ${JSON.stringify(wasm)}`);\\n if (\"instantiateStreaming\" in WebAssembly && /^application\\\\/wasm($|;)/i.test(res.headers.get(\"Content-Type\") || \"\")) {\\n const result2 = yield WebAssembly.instantiateStreaming(res, go.importObject);\\n return result2.instance;\\n }\\n const bytes = yield res.arrayBuffer();\\n const result = yield WebAssembly.instantiate(bytes, go.importObject);\\n return result.instance;\\n });\\n }\\n return (m) => onmessage(m);\\n })'}(postMessage)`], { type: \"text/javascript\" });\n worker = new Worker(URL.createObjectURL(blob));\n } else {\n let onmessage = ((postMessage) => {\n // Copyright 2018 The Go Authors. All rights reserved.\n // Use of this source code is governed by a BSD-style\n // license that can be found in the LICENSE file.\n var __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n };\n let onmessage;\n let globalThis = {};\n for (let o = self; o; o = Object.getPrototypeOf(o))\n for (let k of Object.getOwnPropertyNames(o))\n if (!(k in globalThis))\n Object.defineProperty(globalThis, k, { get: () => self[k] });\n \"use strict\";\n (() => {\n const enosys = () => {\n const err = new Error(\"not implemented\");\n err.code = \"ENOSYS\";\n return err;\n };\n if (!globalThis.fs) {\n let outputBuf = \"\";\n globalThis.fs = {\n constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1, O_DIRECTORY: -1 },\n // unused\n writeSync(fd, buf) {\n outputBuf += decoder.decode(buf);\n const nl = outputBuf.lastIndexOf(\"\\n\");\n if (nl != -1) {\n console.log(outputBuf.substring(0, nl));\n outputBuf = outputBuf.substring(nl + 1);\n }\n return buf.length;\n },\n write(fd, buf, offset, length, position, callback) {\n if (offset !== 0 || length !== buf.length || position !== null) {\n callback(enosys());\n return;\n }\n const n = this.writeSync(fd, buf);\n callback(null, n);\n },\n chmod(path, mode, callback) {\n callback(enosys());\n },\n chown(path, uid, gid, callback) {\n callback(enosys());\n },\n close(fd, callback) {\n callback(enosys());\n },\n fchmod(fd, mode, callback) {\n callback(enosys());\n },\n fchown(fd, uid, gid, callback) {\n callback(enosys());\n },\n fstat(fd, callback) {\n callback(enosys());\n },\n fsync(fd, callback) {\n callback(null);\n },\n ftruncate(fd, length, callback) {\n callback(enosys());\n },\n lchown(path, uid, gid, callback) {\n callback(enosys());\n },\n link(path, link, callback) {\n callback(enosys());\n },\n lstat(path, callback) {\n callback(enosys());\n },\n mkdir(path, perm, callback) {\n callback(enosys());\n },\n open(path, flags, mode, callback) {\n callback(enosys());\n },\n read(fd, buffer, offset, length, position, callback) {\n callback(enosys());\n },\n readdir(path, callback) {\n callback(enosys());\n },\n readlink(path, callback) {\n callback(enosys());\n },\n rename(from, to, callback) {\n callback(enosys());\n },\n rmdir(path, callback) {\n callback(enosys());\n },\n stat(path, callback) {\n callback(enosys());\n },\n symlink(path, link, callback) {\n callback(enosys());\n },\n truncate(path, length, callback) {\n callback(enosys());\n },\n unlink(path, callback) {\n callback(enosys());\n },\n utimes(path, atime, mtime, callback) {\n callback(enosys());\n }\n };\n }\n if (!globalThis.process) {\n globalThis.process = {\n getuid() {\n return -1;\n },\n getgid() {\n return -1;\n },\n geteuid() {\n return -1;\n },\n getegid() {\n return -1;\n },\n getgroups() {\n throw enosys();\n },\n pid: -1,\n ppid: -1,\n umask() {\n throw enosys();\n },\n cwd() {\n throw enosys();\n },\n chdir() {\n throw enosys();\n }\n };\n }\n if (!globalThis.path) {\n globalThis.path = {\n resolve(...pathSegments) {\n return pathSegments.join(\"/\");\n }\n };\n }\n if (!globalThis.crypto) {\n throw new Error(\"globalThis.crypto is not available, polyfill required (crypto.getRandomValues only)\");\n }\n if (!globalThis.performance) {\n throw new Error(\"globalThis.performance is not available, polyfill required (performance.now only)\");\n }\n if (!globalThis.TextEncoder) {\n throw new Error(\"globalThis.TextEncoder is not available, polyfill required\");\n }\n if (!globalThis.TextDecoder) {\n throw new Error(\"globalThis.TextDecoder is not available, polyfill required\");\n }\n const encoder = new TextEncoder(\"utf-8\");\n const decoder = new TextDecoder(\"utf-8\");\n globalThis.Go = class {\n constructor() {\n this.argv = [\"js\"];\n this.env = {};\n this.exit = (code) => {\n if (code !== 0) {\n console.warn(\"exit code:\", code);\n }\n };\n this._exitPromise = new Promise((resolve) => {\n this._resolveExitPromise = resolve;\n });\n this._pendingEvent = null;\n this._scheduledTimeouts = /* @__PURE__ */ new Map();\n this._nextCallbackTimeoutID = 1;\n const setInt64 = (addr, v) => {\n this.mem.setUint32(addr + 0, v, true);\n this.mem.setUint32(addr + 4, Math.floor(v / 4294967296), true);\n };\n const setInt32 = (addr, v) => {\n this.mem.setUint32(addr + 0, v, true);\n };\n const getInt64 = (addr) => {\n const low = this.mem.getUint32(addr + 0, true);\n const high = this.mem.getInt32(addr + 4, true);\n return low + high * 4294967296;\n };\n const loadValue = (addr) => {\n const f = this.mem.getFloat64(addr, true);\n if (f === 0) {\n return void 0;\n }\n if (!isNaN(f)) {\n return f;\n }\n const id = this.mem.getUint32(addr, true);\n return this._values[id];\n };\n const storeValue = (addr, v) => {\n const nanHead = 2146959360;\n if (typeof v === \"number\" && v !== 0) {\n if (isNaN(v)) {\n this.mem.setUint32(addr + 4, nanHead, true);\n this.mem.setUint32(addr, 0, true);\n return;\n }\n this.mem.setFloat64(addr, v, true);\n return;\n }\n if (v === void 0) {\n this.mem.setFloat64(addr, 0, true);\n return;\n }\n let id = this._ids.get(v);\n if (id === void 0) {\n id = this._idPool.pop();\n if (id === void 0) {\n id = this._values.length;\n }\n this._values[id] = v;\n this._goRefCounts[id] = 0;\n this._ids.set(v, id);\n }\n this._goRefCounts[id]++;\n let typeFlag = 0;\n switch (typeof v) {\n case \"object\":\n if (v !== null) {\n typeFlag = 1;\n }\n break;\n case \"string\":\n typeFlag = 2;\n break;\n case \"symbol\":\n typeFlag = 3;\n break;\n case \"function\":\n typeFlag = 4;\n break;\n }\n this.mem.setUint32(addr + 4, nanHead | typeFlag, true);\n this.mem.setUint32(addr, id, true);\n };\n const loadSlice = (addr) => {\n const array = getInt64(addr + 0);\n const len = getInt64(addr + 8);\n return new Uint8Array(this._inst.exports.mem.buffer, array, len);\n };\n const loadSliceOfValues = (addr) => {\n const array = getInt64(addr + 0);\n const len = getInt64(addr + 8);\n const a = new Array(len);\n for (let i = 0; i < len; i++) {\n a[i] = loadValue(array + i * 8);\n }\n return a;\n };\n const loadString = (addr) => {\n const saddr = getInt64(addr + 0);\n const len = getInt64(addr + 8);\n return decoder.decode(new DataView(this._inst.exports.mem.buffer, saddr, len));\n };\n const testCallExport = (a, b) => {\n this._inst.exports.testExport0();\n return this._inst.exports.testExport(a, b);\n };\n const timeOrigin = Date.now() - performance.now();\n this.importObject = {\n _gotest: {\n add: (a, b) => a + b,\n callExport: testCallExport\n },\n gojs: {\n // Go's SP does not change as long as no Go code is running. Some operations (e.g. calls, getters and setters)\n // may synchronously trigger a Go event handler. This makes Go code get executed in the middle of the imported\n // function. A goroutine can switch to a new stack if the current stack is too small (see morestack function).\n // This changes the SP, thus we have to update the SP used by the imported function.\n // func wasmExit(code int32)\n \"runtime.wasmExit\": (sp) => {\n sp >>>= 0;\n const code = this.mem.getInt32(sp + 8, true);\n this.exited = true;\n delete this._inst;\n delete this._values;\n delete this._goRefCounts;\n delete this._ids;\n delete this._idPool;\n this.exit(code);\n },\n // func wasmWrite(fd uintptr, p unsafe.Pointer, n int32)\n \"runtime.wasmWrite\": (sp) => {\n sp >>>= 0;\n const fd = getInt64(sp + 8);\n const p = getInt64(sp + 16);\n const n = this.mem.getInt32(sp + 24, true);\n globalThis.fs.writeSync(fd, new Uint8Array(this._inst.exports.mem.buffer, p, n));\n },\n // func resetMemoryDataView()\n \"runtime.resetMemoryDataView\": (sp) => {\n sp >>>= 0;\n this.mem = new DataView(this._inst.exports.mem.buffer);\n },\n // func nanotime1() int64\n \"runtime.nanotime1\": (sp) => {\n sp >>>= 0;\n setInt64(sp + 8, (timeOrigin + performance.now()) * 1e6);\n },\n // func walltime() (sec int64, nsec int32)\n \"runtime.walltime\": (sp) => {\n sp >>>= 0;\n const msec = (/* @__PURE__ */ new Date()).getTime();\n setInt64(sp + 8, msec / 1e3);\n this.mem.setInt32(sp + 16, msec % 1e3 * 1e6, true);\n },\n // func scheduleTimeoutEvent(delay int64) int32\n \"runtime.scheduleTimeoutEvent\": (sp) => {\n sp >>>= 0;\n const id = this._nextCallbackTimeoutID;\n this._nextCallbackTimeoutID++;\n this._scheduledTimeouts.set(id, setTimeout(\n () => {\n this._resume();\n while (this._scheduledTimeouts.has(id)) {\n console.warn(\"scheduleTimeoutEvent: missed timeout event\");\n this._resume();\n }\n },\n getInt64(sp + 8)\n ));\n this.mem.setInt32(sp + 16, id, true);\n },\n // func clearTimeoutEvent(id int32)\n \"runtime.clearTimeoutEvent\": (sp) => {\n sp >>>= 0;\n const id = this.mem.getInt32(sp + 8, true);\n clearTimeout(this._scheduledTimeouts.get(id));\n this._scheduledTimeouts.delete(id);\n },\n // func getRandomData(r []byte)\n \"runtime.getRandomData\": (sp) => {\n sp >>>= 0;\n crypto.getRandomValues(loadSlice(sp + 8));\n },\n // func finalizeRef(v ref)\n \"syscall/js.finalizeRef\": (sp) => {\n sp >>>= 0;\n const id = this.mem.getUint32(sp + 8, true);\n this._goRefCounts[id]--;\n if (this._goRefCounts[id] === 0) {\n const v = this._values[id];\n this._values[id] = null;\n this._ids.delete(v);\n this._idPool.push(id);\n }\n },\n // func stringVal(value string) ref\n \"syscall/js.stringVal\": (sp) => {\n sp >>>= 0;\n storeValue(sp + 24, loadString(sp + 8));\n },\n // func valueGet(v ref, p string) ref\n \"syscall/js.valueGet\": (sp) => {\n sp >>>= 0;\n const result = Reflect.get(loadValue(sp + 8), loadString(sp + 16));\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 32, result);\n },\n // func valueSet(v ref, p string, x ref)\n \"syscall/js.valueSet\": (sp) => {\n sp >>>= 0;\n Reflect.set(loadValue(sp + 8), loadString(sp + 16), loadValue(sp + 32));\n },\n // func valueDelete(v ref, p string)\n \"syscall/js.valueDelete\": (sp) => {\n sp >>>= 0;\n Reflect.deleteProperty(loadValue(sp + 8), loadString(sp + 16));\n },\n // func valueIndex(v ref, i int) ref\n \"syscall/js.valueIndex\": (sp) => {\n sp >>>= 0;\n storeValue(sp + 24, Reflect.get(loadValue(sp + 8), getInt64(sp + 16)));\n },\n // valueSetIndex(v ref, i int, x ref)\n \"syscall/js.valueSetIndex\": (sp) => {\n sp >>>= 0;\n Reflect.set(loadValue(sp + 8), getInt64(sp + 16), loadValue(sp + 24));\n },\n // func valueCall(v ref, m string, args []ref) (ref, bool)\n \"syscall/js.valueCall\": (sp) => {\n sp >>>= 0;\n try {\n const v = loadValue(sp + 8);\n const m = Reflect.get(v, loadString(sp + 16));\n const args = loadSliceOfValues(sp + 32);\n const result = Reflect.apply(m, v, args);\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 56, result);\n this.mem.setUint8(sp + 64, 1);\n } catch (err) {\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 56, err);\n this.mem.setUint8(sp + 64, 0);\n }\n },\n // func valueInvoke(v ref, args []ref) (ref, bool)\n \"syscall/js.valueInvoke\": (sp) => {\n sp >>>= 0;\n try {\n const v = loadValue(sp + 8);\n const args = loadSliceOfValues(sp + 16);\n const result = Reflect.apply(v, void 0, args);\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, result);\n this.mem.setUint8(sp + 48, 1);\n } catch (err) {\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, err);\n this.mem.setUint8(sp + 48, 0);\n }\n },\n // func valueNew(v ref, args []ref) (ref, bool)\n \"syscall/js.valueNew\": (sp) => {\n sp >>>= 0;\n try {\n const v = loadValue(sp + 8);\n const args = loadSliceOfValues(sp + 16);\n const result = Reflect.construct(v, args);\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, result);\n this.mem.setUint8(sp + 48, 1);\n } catch (err) {\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, err);\n this.mem.setUint8(sp + 48, 0);\n }\n },\n // func valueLength(v ref) int\n \"syscall/js.valueLength\": (sp) => {\n sp >>>= 0;\n setInt64(sp + 16, parseInt(loadValue(sp + 8).length));\n },\n // valuePrepareString(v ref) (ref, int)\n \"syscall/js.valuePrepareString\": (sp) => {\n sp >>>= 0;\n const str = encoder.encode(String(loadValue(sp + 8)));\n storeValue(sp + 16, str);\n setInt64(sp + 24, str.length);\n },\n // valueLoadString(v ref, b []byte)\n \"syscall/js.valueLoadString\": (sp) => {\n sp >>>= 0;\n const str = loadValue(sp + 8);\n loadSlice(sp + 16).set(str);\n },\n // func valueInstanceOf(v ref, t ref) bool\n \"syscall/js.valueInstanceOf\": (sp) => {\n sp >>>= 0;\n this.mem.setUint8(sp + 24, loadValue(sp + 8) instanceof loadValue(sp + 16) ? 1 : 0);\n },\n // func copyBytesToGo(dst []byte, src ref) (int, bool)\n \"syscall/js.copyBytesToGo\": (sp) => {\n sp >>>= 0;\n const dst = loadSlice(sp + 8);\n const src = loadValue(sp + 32);\n if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) {\n this.mem.setUint8(sp + 48, 0);\n return;\n }\n const toCopy = src.subarray(0, dst.length);\n dst.set(toCopy);\n setInt64(sp + 40, toCopy.length);\n this.mem.setUint8(sp + 48, 1);\n },\n // func copyBytesToJS(dst ref, src []byte) (int, bool)\n \"syscall/js.copyBytesToJS\": (sp) => {\n sp >>>= 0;\n const dst = loadValue(sp + 8);\n const src = loadSlice(sp + 16);\n if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) {\n this.mem.setUint8(sp + 48, 0);\n return;\n }\n const toCopy = src.subarray(0, dst.length);\n dst.set(toCopy);\n setInt64(sp + 40, toCopy.length);\n this.mem.setUint8(sp + 48, 1);\n },\n \"debug\": (value) => {\n console.log(value);\n }\n }\n };\n }\n run(instance) {\n return __async(this, null, function* () {\n if (!(instance instanceof WebAssembly.Instance)) {\n throw new Error(\"Go.run: WebAssembly.Instance expected\");\n }\n this._inst = instance;\n this.mem = new DataView(this._inst.exports.mem.buffer);\n this._values = [\n // JS values that Go currently has references to, indexed by reference id\n NaN,\n 0,\n null,\n true,\n false,\n globalThis,\n this\n ];\n this._goRefCounts = new Array(this._values.length).fill(Infinity);\n this._ids = /* @__PURE__ */ new Map([\n // mapping from JS values to reference ids\n [0, 1],\n [null, 2],\n [true, 3],\n [false, 4],\n [globalThis, 5],\n [this, 6]\n ]);\n this._idPool = [];\n this.exited = false;\n let offset = 4096;\n const strPtr = (str) => {\n const ptr = offset;\n const bytes = encoder.encode(str + \"\\0\");\n new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);\n offset += bytes.length;\n if (offset % 8 !== 0) {\n offset += 8 - offset % 8;\n }\n return ptr;\n };\n const argc = this.argv.length;\n const argvPtrs = [];\n this.argv.forEach((arg) => {\n argvPtrs.push(strPtr(arg));\n });\n argvPtrs.push(0);\n const keys = Object.keys(this.env).sort();\n keys.forEach((key) => {\n argvPtrs.push(strPtr(`${key}=${this.env[key]}`));\n });\n argvPtrs.push(0);\n const argv = offset;\n argvPtrs.forEach((ptr) => {\n this.mem.setUint32(offset, ptr, true);\n this.mem.setUint32(offset + 4, 0, true);\n offset += 8;\n });\n const wasmMinDataAddr = 4096 + 8192;\n if (offset >= wasmMinDataAddr) {\n throw new Error(\"total length of command line and environment variables exceeds limit\");\n }\n this._inst.exports.run(argc, argv);\n if (this.exited) {\n this._resolveExitPromise();\n }\n yield this._exitPromise;\n });\n }\n _resume() {\n if (this.exited) {\n throw new Error(\"Go program has already exited\");\n }\n this._inst.exports.resume();\n if (this.exited) {\n this._resolveExitPromise();\n }\n }\n _makeFuncWrapper(id) {\n const go = this;\n return function() {\n const event = { id, this: this, args: arguments };\n go._pendingEvent = event;\n go._resume();\n return event.result;\n };\n }\n };\n })();\n onmessage = ({ data: wasm }) => {\n let decoder = new TextDecoder();\n let fs = globalThis.fs;\n let stderr = \"\";\n fs.writeSync = (fd, buffer) => {\n if (fd === 1) {\n postMessage(buffer);\n } else if (fd === 2) {\n stderr += decoder.decode(buffer);\n let parts = stderr.split(\"\\n\");\n if (parts.length > 1) console.log(parts.slice(0, -1).join(\"\\n\"));\n stderr = parts[parts.length - 1];\n } else {\n throw new Error(\"Bad write\");\n }\n return buffer.length;\n };\n let stdin = [];\n let resumeStdin;\n let stdinPos = 0;\n onmessage = ({ data }) => {\n if (data.length > 0) {\n stdin.push(data);\n if (resumeStdin) resumeStdin();\n }\n return go;\n };\n fs.read = (fd, buffer, offset, length, position, callback) => {\n if (fd !== 0 || offset !== 0 || length !== buffer.length || position !== null) {\n throw new Error(\"Bad read\");\n }\n if (stdin.length === 0) {\n resumeStdin = () => fs.read(fd, buffer, offset, length, position, callback);\n return;\n }\n let first = stdin[0];\n let count = Math.max(0, Math.min(length, first.length - stdinPos));\n buffer.set(first.subarray(stdinPos, stdinPos + count), offset);\n stdinPos += count;\n if (stdinPos === first.length) {\n stdin.shift();\n stdinPos = 0;\n }\n callback(null, count);\n };\n let go = new globalThis.Go();\n go.argv = [\"\", `--service=${\"0.27.4\"}`];\n tryToInstantiateModule(wasm, go).then(\n (instance) => {\n postMessage(null);\n go.run(instance);\n },\n (error) => {\n postMessage(error);\n }\n );\n return go;\n };\n function tryToInstantiateModule(wasm, go) {\n return __async(this, null, function* () {\n if (wasm instanceof WebAssembly.Module) {\n return WebAssembly.instantiate(wasm, go.importObject);\n }\n const res = yield fetch(wasm);\n if (!res.ok) throw new Error(`Failed to download ${JSON.stringify(wasm)}`);\n if (\"instantiateStreaming\" in WebAssembly && /^application\\/wasm($|;)/i.test(res.headers.get(\"Content-Type\") || \"\")) {\n const result2 = yield WebAssembly.instantiateStreaming(res, go.importObject);\n return result2.instance;\n }\n const bytes = yield res.arrayBuffer();\n const result = yield WebAssembly.instantiate(bytes, go.importObject);\n return result.instance;\n });\n }\n return (m) => onmessage(m);\n })((data) => worker.onmessage({ data }));\n let go;\n worker = {\n onmessage: null,\n postMessage: (data) => setTimeout(() => {\n try {\n go = onmessage({ data });\n } catch (error) {\n rejectAllWith(error);\n }\n }),\n terminate() {\n if (go)\n for (let timeout of go._scheduledTimeouts.values())\n clearTimeout(timeout);\n }\n };\n }\n let firstMessageResolve;\n let firstMessageReject;\n const firstMessagePromise = new Promise((resolve, reject) => {\n firstMessageResolve = resolve;\n firstMessageReject = reject;\n });\n worker.onmessage = ({ data: error }) => {\n worker.onmessage = ({ data }) => readFromStdout(data);\n if (error) firstMessageReject(error);\n else firstMessageResolve();\n };\n worker.postMessage(wasmModule || new URL(wasmURL, location.href).toString());\n let { readFromStdout, service } = createChannel({\n writeToStdin(bytes) {\n worker.postMessage(bytes);\n },\n isSync: false,\n hasFS: false,\n esbuild: browser_exports\n });\n yield firstMessagePromise;\n stopService = () => {\n worker.terminate();\n initializePromise = void 0;\n stopService = void 0;\n longLivedService = void 0;\n };\n longLivedService = {\n build: (options) => new Promise((resolve, reject) => {\n rejectAllPromise.then(reject);\n service.buildOrContext({\n callName: \"build\",\n refs: null,\n options,\n isTTY: false,\n defaultWD: \"/\",\n callback: (err, res) => err ? reject(err) : resolve(res)\n });\n }),\n context: (options) => new Promise((resolve, reject) => {\n rejectAllPromise.then(reject);\n service.buildOrContext({\n callName: \"context\",\n refs: null,\n options,\n isTTY: false,\n defaultWD: \"/\",\n callback: (err, res) => err ? reject(err) : resolve(res)\n });\n }),\n transform: (input, options) => new Promise((resolve, reject) => {\n rejectAllPromise.then(reject);\n service.transform({\n callName: \"transform\",\n refs: null,\n input,\n options: options || {},\n isTTY: false,\n fs: {\n readFile(_, callback) {\n callback(new Error(\"Internal error\"), null);\n },\n writeFile(_, callback) {\n callback(null);\n }\n },\n callback: (err, res) => err ? reject(err) : resolve(res)\n });\n }),\n formatMessages: (messages, options) => new Promise((resolve, reject) => {\n rejectAllPromise.then(reject);\n service.formatMessages({\n callName: \"formatMessages\",\n refs: null,\n messages,\n options,\n callback: (err, res) => err ? reject(err) : resolve(res)\n });\n }),\n analyzeMetafile: (metafile, options) => new Promise((resolve, reject) => {\n rejectAllPromise.then(reject);\n service.analyzeMetafile({\n callName: \"analyzeMetafile\",\n refs: null,\n metafile: typeof metafile === \"string\" ? metafile : JSON.stringify(metafile),\n options,\n callback: (err, res) => err ? reject(err) : resolve(res)\n });\n })\n };\n});\nvar browser_default = browser_exports;\n})(typeof module===\"object\"?module:{set exports(x){(typeof self!==\"undefined\"?self:this).esbuild=x}});\n", "'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n", "'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifier, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n", "'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\n\nconst isPrereleaseIdentifier = (prerelease, identifier) => {\n const identifiers = identifier.split('.')\n if (identifiers.length > prerelease.length) {\n return false\n }\n\n for (let i = 0; i < identifiers.length; i++) {\n if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {\n return false\n }\n }\n\n return true\n}\n\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (isPrereleaseIdentifier(this.prerelease, identifier)) {\n const prereleaseBase = this.prerelease[identifier.split('.').length]\n if (isNaN(prereleaseBase)) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n", "'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are prereleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\n\nconst parse = require('./parse')\nconst constants = require('../internal/constants')\nconst SemVer = require('../classes/semver')\n\nconst truncate = (version, truncation, options) => {\n if (!constants.RELEASE_TYPES.includes(truncation)) {\n return null\n }\n\n const clonedVersion = cloneInputVersion(version, options)\n return clonedVersion && doTruncation(clonedVersion, truncation)\n}\n\nconst cloneInputVersion = (version, options) => {\n const versionStringToParse = (\n version instanceof SemVer ? version.version : version\n )\n\n return parse(versionStringToParse, options)\n}\n\nconst doTruncation = (version, truncation) => {\n if (isPrerelease(truncation)) {\n return version.version\n }\n\n version.prerelease = []\n\n switch (truncation) {\n case 'major':\n version.minor = 0\n version.patch = 0\n break\n case 'minor':\n version.patch = 0\n break\n }\n\n return version.format()\n}\n\nconst isPrerelease = (type) => {\n return type.startsWith('pre')\n}\n\nmodule.exports = truncate\n", "'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n", "'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // strip build metadata so it can't bleed into the version\n range = range.replace(BUILDSTRIPRE, '')\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n src,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\n// unbounded global build-metadata stripper used by parseRange\nconst BUILDSTRIPRE = new RegExp(src[t.BUILD], 'g')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\nconst invalidXRangeOrder = (M, m, p) => (\n (isX(M) && !isX(m)) ||\n (isX(m) && p && !isX(p))\n)\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n // if we're including prereleases in the match, then the lower bound is\n // -0, the lowest possible prerelease value, just like x-ranges and carets.\n // this keeps `~1.2` equivalent to the `1.2.x` x-range it's documented as.\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n if (invalidXRangeOrder(M, m, p)) {\n return comp\n }\n\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n", "'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If LT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !c.test(gt.semver)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !c.test(lt.semver)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst truncate = require('./functions/truncate')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n truncate,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\n\ntype Url = {\n scheme: string;\n user: string;\n host: string;\n port: string;\n path: string;\n query: string;\n hash: string;\n type: UrlType;\n};\n\nconst enum UrlType {\n Empty = 1,\n Hash = 2,\n Query = 3,\n RelativePath = 4,\n AbsolutePath = 5,\n SchemeRelative = 6,\n Absolute = 7,\n}\n\nfunction isAbsoluteUrl(input: string): boolean {\n return schemeRegex.test(input);\n}\n\nfunction isSchemeRelativeUrl(input: string): boolean {\n return input.startsWith('//');\n}\n\nfunction isAbsolutePath(input: string): boolean {\n return input.startsWith('/');\n}\n\nfunction isFileUrl(input: string): boolean {\n return input.startsWith('file:');\n}\n\nfunction isRelative(input: string): boolean {\n return /^[.?#]/.test(input);\n}\n\nfunction parseAbsoluteUrl(input: string): Url {\n const match = urlRegex.exec(input)!;\n return makeUrl(\n match[1],\n match[2] || '',\n match[3],\n match[4] || '',\n match[5] || '/',\n match[6] || '',\n match[7] || '',\n );\n}\n\nfunction parseFileUrl(input: string): Url {\n const match = fileRegex.exec(input)!;\n const path = match[2];\n return makeUrl(\n 'file:',\n '',\n match[1] || '',\n '',\n isAbsolutePath(path) ? path : '/' + path,\n match[3] || '',\n match[4] || '',\n );\n}\n\nfunction makeUrl(\n scheme: string,\n user: string,\n host: string,\n port: string,\n path: string,\n query: string,\n hash: string,\n): Url {\n return {\n scheme,\n user,\n host,\n port,\n path,\n query,\n hash,\n type: UrlType.Absolute,\n };\n}\n\nfunction parseUrl(input: string): Url {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n url.type = UrlType.SchemeRelative;\n return url;\n }\n\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n url.type = UrlType.AbsolutePath;\n return url;\n }\n\n if (isFileUrl(input)) return parseFileUrl(input);\n\n if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);\n\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.type = input\n ? input.startsWith('?')\n ? UrlType.Query\n : input.startsWith('#')\n ? UrlType.Hash\n : UrlType.RelativePath\n : UrlType.Empty;\n return url;\n}\n\nfunction stripPathFilename(path: string): string {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..')) return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\nfunction mergePaths(url: Url, base: Url) {\n normalizePath(base, base.type);\n\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n } else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n}\n\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url: Url, type: UrlType) {\n const rel = type <= UrlType.RelativePath;\n const pieces = url.path.split('/');\n\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n\n // A current directory, which we can always drop.\n if (piece === '.') continue;\n\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n } else if (rel) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n}\n\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nexport default function resolve(input: string, base: string | undefined): string {\n if (!input && !base) return '';\n\n const url = parseUrl(input);\n let inputType = url.type;\n\n if (base && inputType !== UrlType.Absolute) {\n const baseUrl = parseUrl(base);\n const baseType = baseUrl.type;\n\n switch (inputType) {\n case UrlType.Empty:\n url.hash = baseUrl.hash;\n // fall through\n\n case UrlType.Hash:\n url.query = baseUrl.query;\n // fall through\n\n case UrlType.Query:\n case UrlType.RelativePath:\n mergePaths(url, baseUrl);\n // fall through\n\n case UrlType.AbsolutePath:\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n // fall through\n\n case UrlType.SchemeRelative:\n // The input doesn't have a schema at least, so we need to copy at least that over.\n url.scheme = baseUrl.scheme;\n }\n if (baseType > inputType) inputType = baseType;\n }\n\n normalizePath(url, inputType);\n\n const queryHash = url.query + url.hash;\n switch (inputType) {\n // This is impossible, because of the empty checks at the start of the function.\n // case UrlType.Empty:\n\n case UrlType.Hash:\n case UrlType.Query:\n return queryHash;\n\n case UrlType.RelativePath: {\n // The first char is always a \"/\", and we need it to be relative.\n const path = url.path.slice(1);\n\n if (!path) return queryHash || '.';\n\n if (isRelative(base || input) && !isRelative(path)) {\n // If base started with a leading \".\", or there is no base and input started with a \".\",\n // then we need to ensure that the relative path starts with a \".\". We don't know if\n // relative starts with a \"..\", though, so check before prepending.\n return './' + path + queryHash;\n }\n\n return path + queryHash;\n }\n\n case UrlType.AbsolutePath:\n return url.path + queryHash;\n\n default:\n return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n }\n}\n", "\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DetailContext = exports.NoopContext = exports.VError = void 0;\n/**\n * Error thrown by validation. Besides an informative message, it includes the path to the\n * property which triggered the failure.\n */\nvar VError = /** @class */ (function (_super) {\n __extends(VError, _super);\n function VError(path, message) {\n var _this = _super.call(this, message) || this;\n _this.path = path;\n // See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work for info about this workaround.\n Object.setPrototypeOf(_this, VError.prototype);\n return _this;\n }\n return VError;\n}(Error));\nexports.VError = VError;\n/**\n * Fast implementation of IContext used for first-pass validation. If that fails, we can validate\n * using DetailContext to collect error messages. That's faster for the common case when messages\n * normally pass validation.\n */\nvar NoopContext = /** @class */ (function () {\n function NoopContext() {\n }\n NoopContext.prototype.fail = function (relPath, message, score) {\n return false;\n };\n NoopContext.prototype.unionResolver = function () { return this; };\n NoopContext.prototype.createContext = function () { return this; };\n NoopContext.prototype.resolveUnion = function (ur) { };\n return NoopContext;\n}());\nexports.NoopContext = NoopContext;\n/**\n * Complete implementation of IContext that collects meaningfull errors.\n */\nvar DetailContext = /** @class */ (function () {\n function DetailContext() {\n // Stack of property names and associated messages for reporting helpful error messages.\n this._propNames = [\"\"];\n this._messages = [null];\n // Score is used to choose the best union member whose DetailContext to use for reporting.\n // Higher score means better match (or rather less severe mismatch).\n this._score = 0;\n }\n DetailContext.prototype.fail = function (relPath, message, score) {\n this._propNames.push(relPath);\n this._messages.push(message);\n this._score += score;\n return false;\n };\n DetailContext.prototype.unionResolver = function () {\n return new DetailUnionResolver();\n };\n DetailContext.prototype.resolveUnion = function (unionResolver) {\n var _a, _b;\n var u = unionResolver;\n var best = null;\n for (var _i = 0, _c = u.contexts; _i < _c.length; _i++) {\n var ctx = _c[_i];\n if (!best || ctx._score >= best._score) {\n best = ctx;\n }\n }\n if (best && best._score > 0) {\n (_a = this._propNames).push.apply(_a, best._propNames);\n (_b = this._messages).push.apply(_b, best._messages);\n }\n };\n DetailContext.prototype.getError = function (path) {\n var msgParts = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var m = this._messages[i];\n if (m) {\n msgParts.push(path + \" \" + m);\n }\n }\n return new VError(path, msgParts.join(\"; \"));\n };\n DetailContext.prototype.getErrorDetail = function (path) {\n var details = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var message = this._messages[i];\n if (message) {\n details.push({ path: path, message: message });\n }\n }\n var detail = null;\n for (var i = details.length - 1; i >= 0; i--) {\n if (detail) {\n details[i].nested = [detail];\n }\n detail = details[i];\n }\n return detail;\n };\n return DetailContext;\n}());\nexports.DetailContext = DetailContext;\nvar DetailUnionResolver = /** @class */ (function () {\n function DetailUnionResolver() {\n this.contexts = [];\n }\n DetailUnionResolver.prototype.createContext = function () {\n var ctx = new DetailContext();\n this.contexts.push(ctx);\n return ctx;\n };\n return DetailUnionResolver;\n}());\n", "\"use strict\";\n/**\n * This module defines nodes used to define types and validations for objects and interfaces.\n */\n// tslint:disable:no-shadowed-variable prefer-for-of\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.basicTypes = exports.BasicType = exports.TParamList = exports.TParam = exports.param = exports.TFunc = exports.func = exports.TProp = exports.TOptional = exports.opt = exports.TIface = exports.iface = exports.TEnumLiteral = exports.enumlit = exports.TEnumType = exports.enumtype = exports.TIntersection = exports.intersection = exports.TUnion = exports.union = exports.TTuple = exports.tuple = exports.TArray = exports.array = exports.TLiteral = exports.lit = exports.TName = exports.name = exports.TType = void 0;\nvar util_1 = require(\"./util\");\n/** Node that represents a type. */\nvar TType = /** @class */ (function () {\n function TType() {\n }\n return TType;\n}());\nexports.TType = TType;\n/** Parses a type spec into a TType node. */\nfunction parseSpec(typeSpec) {\n return typeof typeSpec === \"string\" ? name(typeSpec) : typeSpec;\n}\nfunction getNamedType(suite, name) {\n var ttype = suite[name];\n if (!ttype) {\n throw new Error(\"Unknown type \" + name);\n }\n return ttype;\n}\n/**\n * Defines a type name, either built-in, or defined in this suite. It can typically be included in\n * the specs as just a plain string.\n */\nfunction name(value) { return new TName(value); }\nexports.name = name;\nvar TName = /** @class */ (function (_super) {\n __extends(TName, _super);\n function TName(name) {\n var _this = _super.call(this) || this;\n _this.name = name;\n _this._failMsg = \"is not a \" + name;\n return _this;\n }\n TName.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var ttype = getNamedType(suite, this.name);\n var checker = ttype.getChecker(suite, strict, allowedProps);\n if (ttype instanceof BasicType || ttype instanceof TName) {\n return checker;\n }\n // For complex types, add an additional \"is not a <Type>\" message on failure.\n return function (value, ctx) { return checker(value, ctx) ? true : ctx.fail(null, _this._failMsg, 0); };\n };\n return TName;\n}(TType));\nexports.TName = TName;\n/**\n * Defines a literal value, e.g. lit('hello') or lit(123).\n */\nfunction lit(value) { return new TLiteral(value); }\nexports.lit = lit;\nvar TLiteral = /** @class */ (function (_super) {\n __extends(TLiteral, _super);\n function TLiteral(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n _this.name = JSON.stringify(value);\n _this._failMsg = \"is not \" + _this.name;\n return _this;\n }\n TLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return (value === _this.value) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TLiteral;\n}(TType));\nexports.TLiteral = TLiteral;\n/**\n * Defines an array type, e.g. array('number').\n */\nfunction array(typeSpec) { return new TArray(parseSpec(typeSpec)); }\nexports.array = array;\nvar TArray = /** @class */ (function (_super) {\n __extends(TArray, _super);\n function TArray(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TArray.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < value.length; i++) {\n var ok = itemChecker(value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n };\n return TArray;\n}(TType));\nexports.TArray = TArray;\n/**\n * Defines a tuple type, e.g. tuple('string', 'number').\n */\nfunction tuple() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TTuple(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.tuple = tuple;\nvar TTuple = /** @class */ (function (_super) {\n __extends(TTuple, _super);\n function TTuple(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TTuple.prototype.getChecker = function (suite, strict) {\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TTuple;\n}(TType));\nexports.TTuple = TTuple;\n/**\n * Defines a union type, e.g. union('number', 'null').\n */\nfunction union() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TUnion(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.union = union;\nvar TUnion = /** @class */ (function (_super) {\n __extends(TUnion, _super);\n function TUnion(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n var names = ttypes.map(function (t) { return t instanceof TName || t instanceof TLiteral ? t.name : null; })\n .filter(function (n) { return n; });\n var otherTypes = ttypes.length - names.length;\n if (names.length) {\n if (otherTypes > 0) {\n names.push(otherTypes + \" more\");\n }\n _this._failMsg = \"is none of \" + names.join(\", \");\n }\n else {\n _this._failMsg = \"is none of \" + otherTypes + \" types\";\n }\n return _this;\n }\n TUnion.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n return function (value, ctx) {\n var ur = ctx.unionResolver();\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value, ur.createContext());\n if (ok) {\n return true;\n }\n }\n ctx.resolveUnion(ur);\n return ctx.fail(null, _this._failMsg, 0);\n };\n };\n return TUnion;\n}(TType));\nexports.TUnion = TUnion;\n/**\n * Defines an intersection type, e.g. intersection('number', 'null').\n */\nfunction intersection() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TIntersection(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.intersection = intersection;\nvar TIntersection = /** @class */ (function (_super) {\n __extends(TIntersection, _super);\n function TIntersection(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TIntersection.prototype.getChecker = function (suite, strict) {\n var allowedProps = new Set();\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict, allowedProps); });\n return function (value, ctx) {\n var ok = itemCheckers.every(function (checker) { return checker(value, ctx); });\n if (ok) {\n return true;\n }\n return ctx.fail(null, null, 0);\n };\n };\n return TIntersection;\n}(TType));\nexports.TIntersection = TIntersection;\n/**\n * Defines an enum type, e.g. enum({'A': 1, 'B': 2}).\n */\nfunction enumtype(values) {\n return new TEnumType(values);\n}\nexports.enumtype = enumtype;\nvar TEnumType = /** @class */ (function (_super) {\n __extends(TEnumType, _super);\n function TEnumType(members) {\n var _this = _super.call(this) || this;\n _this.members = members;\n _this.validValues = new Set();\n _this._failMsg = \"is not a valid enum value\";\n _this.validValues = new Set(Object.keys(members).map(function (name) { return members[name]; }));\n return _this;\n }\n TEnumType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) {\n return (_this.validValues.has(value) ? true : ctx.fail(null, _this._failMsg, 0));\n };\n };\n return TEnumType;\n}(TType));\nexports.TEnumType = TEnumType;\n/**\n * Defines a literal enum value, such as Direction.Up, specified as enumlit(\"Direction\", \"Up\").\n */\nfunction enumlit(name, prop) {\n return new TEnumLiteral(name, prop);\n}\nexports.enumlit = enumlit;\nvar TEnumLiteral = /** @class */ (function (_super) {\n __extends(TEnumLiteral, _super);\n function TEnumLiteral(enumName, prop) {\n var _this = _super.call(this) || this;\n _this.enumName = enumName;\n _this.prop = prop;\n _this._failMsg = \"is not \" + enumName + \".\" + prop;\n return _this;\n }\n TEnumLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var ttype = getNamedType(suite, this.enumName);\n if (!(ttype instanceof TEnumType)) {\n throw new Error(\"Type \" + this.enumName + \" used in enumlit is not an enum type\");\n }\n var val = ttype.members[this.prop];\n if (!ttype.members.hasOwnProperty(this.prop)) {\n throw new Error(\"Unknown value \" + this.enumName + \".\" + this.prop + \" used in enumlit\");\n }\n return function (value, ctx) { return (value === val) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TEnumLiteral;\n}(TType));\nexports.TEnumLiteral = TEnumLiteral;\nfunction makeIfaceProps(props) {\n return Object.keys(props).map(function (name) { return makeIfaceProp(name, props[name]); });\n}\nfunction makeIfaceProp(name, prop) {\n return prop instanceof TOptional ?\n new TProp(name, prop.ttype, true) :\n new TProp(name, parseSpec(prop), false);\n}\n/**\n * Defines an interface. The first argument is an array of interfaces that it extends, and the\n * second is an array of properties.\n */\nfunction iface(bases, props) {\n return new TIface(bases, makeIfaceProps(props));\n}\nexports.iface = iface;\nvar TIface = /** @class */ (function (_super) {\n __extends(TIface, _super);\n function TIface(bases, props) {\n var _this = _super.call(this) || this;\n _this.bases = bases;\n _this.props = props;\n _this.propSet = new Set(props.map(function (p) { return p.name; }));\n return _this;\n }\n TIface.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var baseCheckers = this.bases.map(function (b) { return getNamedType(suite, b).getChecker(suite, strict); });\n var propCheckers = this.props.map(function (prop) { return prop.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n // Consider a prop required if it's not optional AND does not allow for undefined as a value.\n var isPropRequired = this.props.map(function (prop, i) {\n return !prop.isOpt && !propCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (typeof value !== \"object\" || value === null) {\n return ctx.fail(null, \"is not an object\", 0);\n }\n for (var i = 0; i < baseCheckers.length; i++) {\n if (!baseCheckers[i](value, ctx)) {\n return false;\n }\n }\n for (var i = 0; i < propCheckers.length; i++) {\n var name_1 = _this.props[i].name;\n var v = value[name_1];\n if (v === undefined) {\n if (isPropRequired[i]) {\n return ctx.fail(name_1, \"is missing\", 1);\n }\n }\n else {\n var ok = propCheckers[i](v, ctx);\n if (!ok) {\n return ctx.fail(name_1, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n var propSet = this.propSet;\n if (allowedProps) {\n this.propSet.forEach(function (prop) { return allowedProps.add(prop); });\n propSet = allowedProps;\n }\n // In strict mode, check also for unknown enumerable properties.\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n for (var prop in value) {\n if (!propSet.has(prop)) {\n return ctx.fail(prop, \"is extraneous\", 2);\n }\n }\n return true;\n };\n };\n return TIface;\n}(TType));\nexports.TIface = TIface;\n/**\n * Defines an optional property on an interface.\n */\nfunction opt(typeSpec) { return new TOptional(parseSpec(typeSpec)); }\nexports.opt = opt;\nvar TOptional = /** @class */ (function (_super) {\n __extends(TOptional, _super);\n function TOptional(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TOptional.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n return value === undefined || itemChecker(value, ctx);\n };\n };\n return TOptional;\n}(TType));\nexports.TOptional = TOptional;\n/**\n * Defines a property in an interface.\n */\nvar TProp = /** @class */ (function () {\n function TProp(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TProp;\n}());\nexports.TProp = TProp;\n/**\n * Defines a function. The first argument declares the function's return type, the rest declare\n * its parameters.\n */\nfunction func(resultSpec) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n return new TFunc(new TParamList(params), parseSpec(resultSpec));\n}\nexports.func = func;\nvar TFunc = /** @class */ (function (_super) {\n __extends(TFunc, _super);\n function TFunc(paramList, result) {\n var _this = _super.call(this) || this;\n _this.paramList = paramList;\n _this.result = result;\n return _this;\n }\n TFunc.prototype.getChecker = function (suite, strict) {\n return function (value, ctx) {\n return typeof value === \"function\" ? true : ctx.fail(null, \"is not a function\", 0);\n };\n };\n return TFunc;\n}(TType));\nexports.TFunc = TFunc;\n/**\n * Defines a function parameter.\n */\nfunction param(name, typeSpec, isOpt) {\n return new TParam(name, parseSpec(typeSpec), Boolean(isOpt));\n}\nexports.param = param;\nvar TParam = /** @class */ (function () {\n function TParam(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TParam;\n}());\nexports.TParam = TParam;\n/**\n * Defines a function parameter list.\n */\nvar TParamList = /** @class */ (function (_super) {\n __extends(TParamList, _super);\n function TParamList(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n return _this;\n }\n TParamList.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.params.map(function (t) { return t.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n var isParamRequired = this.params.map(function (param, i) {\n return !param.isOpt && !itemCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var p = _this.params[i];\n if (value[i] === undefined) {\n if (isParamRequired[i]) {\n return ctx.fail(p.name, \"is missing\", 1);\n }\n }\n else {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(p.name, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TParamList;\n}(TType));\nexports.TParamList = TParamList;\n/**\n * Single TType implementation for all basic built-in types.\n */\nvar BasicType = /** @class */ (function (_super) {\n __extends(BasicType, _super);\n function BasicType(validator, message) {\n var _this = _super.call(this) || this;\n _this.validator = validator;\n _this.message = message;\n return _this;\n }\n BasicType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return _this.validator(value) ? true : ctx.fail(null, _this.message, 0); };\n };\n return BasicType;\n}(TType));\nexports.BasicType = BasicType;\n/**\n * Defines the suite of basic types.\n */\nexports.basicTypes = {\n any: new BasicType(function (v) { return true; }, \"is invalid\"),\n number: new BasicType(function (v) { return (typeof v === \"number\"); }, \"is not a number\"),\n object: new BasicType(function (v) { return (typeof v === \"object\" && v); }, \"is not an object\"),\n boolean: new BasicType(function (v) { return (typeof v === \"boolean\"); }, \"is not a boolean\"),\n string: new BasicType(function (v) { return (typeof v === \"string\"); }, \"is not a string\"),\n symbol: new BasicType(function (v) { return (typeof v === \"symbol\"); }, \"is not a symbol\"),\n void: new BasicType(function (v) { return (v == null); }, \"is not void\"),\n undefined: new BasicType(function (v) { return (v === undefined); }, \"is not undefined\"),\n null: new BasicType(function (v) { return (v === null); }, \"is not null\"),\n never: new BasicType(function (v) { return false; }, \"is unexpected\"),\n Date: new BasicType(getIsNativeChecker(\"[object Date]\"), \"is not a Date\"),\n RegExp: new BasicType(getIsNativeChecker(\"[object RegExp]\"), \"is not a RegExp\"),\n};\n// This approach for checking native object types mirrors that of lodash. Its advantage over\n// `isinstance` is that it can still return true for native objects created in different JS\n// execution environments.\nvar nativeToString = Object.prototype.toString;\nfunction getIsNativeChecker(tag) {\n return function (v) { return typeof v === \"object\" && v && nativeToString.call(v) === tag; };\n}\nif (typeof Buffer !== \"undefined\") {\n exports.basicTypes.Buffer = new BasicType(function (v) { return Buffer.isBuffer(v); }, \"is not a Buffer\");\n}\nvar _loop_1 = function (array_1) {\n exports.basicTypes[array_1.name] = new BasicType(function (v) { return (v instanceof array_1); }, \"is not a \" + array_1.name);\n};\n// Support typed arrays of various flavors\nfor (var _i = 0, _a = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n Int32Array, Uint32Array, Float32Array, Float64Array, ArrayBuffer]; _i < _a.length; _i++) {\n var array_1 = _a[_i];\n _loop_1(array_1);\n}\n", "\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Checker = exports.createCheckers = void 0;\nvar types_1 = require(\"./types\");\nvar util_1 = require(\"./util\");\n/**\n * Export functions used to define interfaces.\n */\nvar types_2 = require(\"./types\");\nObject.defineProperty(exports, \"TArray\", { enumerable: true, get: function () { return types_2.TArray; } });\nObject.defineProperty(exports, \"TEnumType\", { enumerable: true, get: function () { return types_2.TEnumType; } });\nObject.defineProperty(exports, \"TEnumLiteral\", { enumerable: true, get: function () { return types_2.TEnumLiteral; } });\nObject.defineProperty(exports, \"TFunc\", { enumerable: true, get: function () { return types_2.TFunc; } });\nObject.defineProperty(exports, \"TIface\", { enumerable: true, get: function () { return types_2.TIface; } });\nObject.defineProperty(exports, \"TLiteral\", { enumerable: true, get: function () { return types_2.TLiteral; } });\nObject.defineProperty(exports, \"TName\", { enumerable: true, get: function () { return types_2.TName; } });\nObject.defineProperty(exports, \"TOptional\", { enumerable: true, get: function () { return types_2.TOptional; } });\nObject.defineProperty(exports, \"TParam\", { enumerable: true, get: function () { return types_2.TParam; } });\nObject.defineProperty(exports, \"TParamList\", { enumerable: true, get: function () { return types_2.TParamList; } });\nObject.defineProperty(exports, \"TProp\", { enumerable: true, get: function () { return types_2.TProp; } });\nObject.defineProperty(exports, \"TTuple\", { enumerable: true, get: function () { return types_2.TTuple; } });\nObject.defineProperty(exports, \"TType\", { enumerable: true, get: function () { return types_2.TType; } });\nObject.defineProperty(exports, \"TUnion\", { enumerable: true, get: function () { return types_2.TUnion; } });\nObject.defineProperty(exports, \"TIntersection\", { enumerable: true, get: function () { return types_2.TIntersection; } });\nObject.defineProperty(exports, \"array\", { enumerable: true, get: function () { return types_2.array; } });\nObject.defineProperty(exports, \"enumlit\", { enumerable: true, get: function () { return types_2.enumlit; } });\nObject.defineProperty(exports, \"enumtype\", { enumerable: true, get: function () { return types_2.enumtype; } });\nObject.defineProperty(exports, \"func\", { enumerable: true, get: function () { return types_2.func; } });\nObject.defineProperty(exports, \"iface\", { enumerable: true, get: function () { return types_2.iface; } });\nObject.defineProperty(exports, \"lit\", { enumerable: true, get: function () { return types_2.lit; } });\nObject.defineProperty(exports, \"name\", { enumerable: true, get: function () { return types_2.name; } });\nObject.defineProperty(exports, \"opt\", { enumerable: true, get: function () { return types_2.opt; } });\nObject.defineProperty(exports, \"param\", { enumerable: true, get: function () { return types_2.param; } });\nObject.defineProperty(exports, \"tuple\", { enumerable: true, get: function () { return types_2.tuple; } });\nObject.defineProperty(exports, \"union\", { enumerable: true, get: function () { return types_2.union; } });\nObject.defineProperty(exports, \"intersection\", { enumerable: true, get: function () { return types_2.intersection; } });\nObject.defineProperty(exports, \"BasicType\", { enumerable: true, get: function () { return types_2.BasicType; } });\nvar util_2 = require(\"./util\");\nObject.defineProperty(exports, \"VError\", { enumerable: true, get: function () { return util_2.VError; } });\n/**\n * Takes one of more type suites (e.g. a module generated by `ts-interface-builder`), and combines\n * them into a suite of interface checkers. If a type is used by name, that name should be present\n * among the passed-in type suites.\n *\n * The returned object maps type names to Checker objects.\n */\nfunction createCheckers() {\n var typeSuite = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSuite[_i] = arguments[_i];\n }\n var fullSuite = Object.assign.apply(Object, __spreadArrays([{}, types_1.basicTypes], typeSuite));\n var checkers = {};\n for (var _a = 0, typeSuite_1 = typeSuite; _a < typeSuite_1.length; _a++) {\n var suite_1 = typeSuite_1[_a];\n for (var _b = 0, _c = Object.keys(suite_1); _b < _c.length; _b++) {\n var name = _c[_b];\n checkers[name] = new Checker(fullSuite, suite_1[name]);\n }\n }\n return checkers;\n}\nexports.createCheckers = createCheckers;\n/**\n * Checker implements validation of objects, and also includes accessors to validate method calls.\n * Checkers should be created using `createCheckers()`.\n */\nvar Checker = /** @class */ (function () {\n // Create checkers by using `createCheckers()` function.\n function Checker(suite, ttype, _path) {\n if (_path === void 0) { _path = 'value'; }\n this.suite = suite;\n this.ttype = ttype;\n this._path = _path;\n this.props = new Map();\n if (ttype instanceof types_1.TIface) {\n for (var _i = 0, _a = ttype.props; _i < _a.length; _i++) {\n var p = _a[_i];\n this.props.set(p.name, p.ttype);\n }\n }\n this.checkerPlain = this.ttype.getChecker(suite, false);\n this.checkerStrict = this.ttype.getChecker(suite, true);\n }\n /**\n * Set the path to report in errors, instead of the default \"value\". (E.g. if the Checker is for\n * a \"person\" interface, set path to \"person\" to report e.g. \"person.name is not a string\".)\n */\n Checker.prototype.setReportedPath = function (path) {\n this._path = path;\n };\n /**\n * Check that the given value satisfies this checker's type, or throw Error.\n */\n Checker.prototype.check = function (value) { return this._doCheck(this.checkerPlain, value); };\n /**\n * A fast check for whether or not the given value satisfies this Checker's type. This returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.test = function (value) {\n return this.checkerPlain(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type, or null if it does.\n */\n Checker.prototype.validate = function (value) {\n return this._doValidate(this.checkerPlain, value);\n };\n /**\n * Check that the given value satisfies this checker's type strictly. This checks that objects\n * and tuples have no extra members. Note that this prevents backward compatibility, so usually\n * a plain check() is more appropriate.\n */\n Checker.prototype.strictCheck = function (value) { return this._doCheck(this.checkerStrict, value); };\n /**\n * A fast strict check for whether or not the given value satisfies this Checker's type. Returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.strictTest = function (value) {\n return this.checkerStrict(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type strictly, or null if it does.\n */\n Checker.prototype.strictValidate = function (value) {\n return this._doValidate(this.checkerStrict, value);\n };\n /**\n * If this checker is for an interface, returns a Checker for the type required for the given\n * property of this interface.\n */\n Checker.prototype.getProp = function (prop) {\n var ttype = this.props.get(prop);\n if (!ttype) {\n throw new Error(\"Type has no property \" + prop);\n }\n return new Checker(this.suite, ttype, this._path + \".\" + prop);\n };\n /**\n * If this checker is for an interface, returns a Checker for the argument-list required to call\n * the given method of this interface. E.g. if this Checker is for the interface:\n * interface Foo {\n * find(s: string, pos?: number): number;\n * }\n * Then methodArgs(\"find\").check(...) will succeed for [\"foo\"] and [\"foo\", 3], but not for [17].\n */\n Checker.prototype.methodArgs = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.paramList);\n };\n /**\n * If this checker is for an interface, returns a Checker for the return value of the given\n * method of this interface.\n */\n Checker.prototype.methodResult = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.result);\n };\n /**\n * If this checker is for a function, returns a Checker for its argument-list.\n */\n Checker.prototype.getArgs = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getArgs() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.paramList);\n };\n /**\n * If this checker is for a function, returns a Checker for its result.\n */\n Checker.prototype.getResult = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getResult() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.result);\n };\n /**\n * Return the type for which this is a checker.\n */\n Checker.prototype.getType = function () {\n return this.ttype;\n };\n /**\n * Actual implementation of check() and strictCheck().\n */\n Checker.prototype._doCheck = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (!checkerFunc(value, noopCtx)) {\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n throw detailCtx.getError(this._path);\n }\n };\n Checker.prototype._doValidate = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (checkerFunc(value, noopCtx)) {\n return null;\n }\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n return detailCtx.getErrorDetail(this._path);\n };\n Checker.prototype._getMethod = function (methodName) {\n var ttype = this.props.get(methodName);\n if (!ttype) {\n throw new Error(\"Type has no property \" + methodName);\n }\n if (!(ttype instanceof types_1.TFunc)) {\n throw new Error(\"Property \" + methodName + \" is not a method\");\n }\n return ttype;\n };\n return Checker;\n}());\nexports.Checker = Checker;\n", "\"use strict\";\nexports.__esModule = true;\nexports.LinesAndColumns = void 0;\nvar LF = '\\n';\nvar CR = '\\r';\nvar LinesAndColumns = /** @class */ (function () {\n function LinesAndColumns(string) {\n this.string = string;\n var offsets = [0];\n for (var offset = 0; offset < string.length;) {\n switch (string[offset]) {\n case LF:\n offset += LF.length;\n offsets.push(offset);\n break;\n case CR:\n offset += CR.length;\n if (string[offset] === LF) {\n offset += LF.length;\n }\n offsets.push(offset);\n break;\n default:\n offset++;\n break;\n }\n }\n this.offsets = offsets;\n }\n LinesAndColumns.prototype.locationForIndex = function (index) {\n if (index < 0 || index > this.string.length) {\n return null;\n }\n var line = 0;\n var offsets = this.offsets;\n while (offsets[line + 1] <= index) {\n line++;\n }\n var column = index - offsets[line];\n return { line: line, column: column };\n };\n LinesAndColumns.prototype.indexForLocation = function (location) {\n var line = location.line, column = location.column;\n if (line < 0 || line >= this.offsets.length) {\n return null;\n }\n if (column < 0 || column > this.lengthOfLine(line)) {\n return null;\n }\n return this.offsets[line] + column;\n };\n LinesAndColumns.prototype.lengthOfLine = function (line) {\n var offset = this.offsets[line];\n var nextOffset = line === this.offsets.length - 1\n ? this.string.length\n : this.offsets[line + 1];\n return nextOffset - offset;\n };\n return LinesAndColumns;\n}());\nexports.LinesAndColumns = LinesAndColumns;\nexports[\"default\"] = LinesAndColumns;\n", "/* es-module-lexer 2.3.1 */\nlet e,a,r,i=2<<19;const s=1===new Uint8Array(new Uint16Array([1]).buffer)[0]?function(e,a){const r=e.length;let i=0;for(;i<r;)a[i]=e.charCodeAt(i++)}:function(e,a){const r=e.length;let i=0;for(;i<r;){const r=e.charCodeAt(i);a[i++]=(255&r)<<8|r>>>8}},f=\"xportportetaourceeferromsyncunctionlassvoyiedelecontininstantybreareturdebuggeawaithrwhileforifcatcfinallels\";let c,t,n;export function parse(k,l=\"@\"){c=k,t=l;const u=2*c.length+(2<<18);if(u>i||!e){for(;u>i;)i*=2;a=new ArrayBuffer(i),s(f,new Uint16Array(a,16,108)),e=function(e,a,r){\"use asm\";var i=new e.Int8Array(r),s=new e.Int16Array(r),f=new e.Int32Array(r),c=new e.Uint8Array(r),t=new e.Uint16Array(r),n=1040;function b(){var e=0,a=0,r=0,c=0,t=0,b=0,k=0,o=0,h=0;h=n;n=n+10240|0;i[808]=1;i[807]=0;s[401]=0;s[402]=0;f[70]=f[2];i[809]=0;f[68]=0;i[806]=0;f[71]=h+2048;f[72]=h;i[810]=0;e=(f[3]|0)+-2|0;f[73]=e;a=e+(f[66]<<1)|0;f[74]=a;e:while(1){r=e+2|0;f[73]=r;if(e>>>0>=a>>>0){c=19;break}a:do{switch(s[r>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if((((s[402]|0)==0?R(r)|0:0)?(S(e+4|0,16,10)|0)==0:0)?(u(),(i[808]|0)==0):0){c=9;break e}else c=18;break}case 105:{if(((s[e+4>>1]|0)==109?R(r)|0:0)?(S(e+6|0,26,8)|0)==0:0){l();c=18}else c=18;break}case 59:{c=18;break}case 47:switch(s[e+4>>1]|0){case 47:{F();break a}case 42:{x(1);break a}default:{c=17;break e}}default:{c=17;break e}}}while(0);if((c|0)==18){c=0;f[70]=f[73]}e=f[73]|0;a=f[74]|0}if((c|0)==9){e=f[73]|0;f[70]=e;c=20}else if((c|0)==17){i[808]=0;f[73]=e;c=20}else if((c|0)==19)if(!(i[806]|0)){e=r;c=20}else e=0;do{if((c|0)==20){e:while(1){r=e+2|0;f[73]=r;if(e>>>0>=(f[74]|0)>>>0){c=104;break}a=s[r>>1]|0;a:do{switch(a<<16>>16){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if(((s[402]|0)==0?R(r)|0:0)?(S(e+4|0,16,10)|0)==0:0){u();c=103}else c=103;break}case 105:{if(((s[e+4>>1]|0)==109?R(r)|0:0)?(S(e+6|0,26,8)|0)==0:0){l();c=103}else c=103;break}case 99:{if((((s[e+4>>1]|0)==108?R(r)|0:0)?(S(e+6|0,88,6)|0)==0:0)?L(s[e+12>>1]|0)|0:0){i[810]=1;c=103}else c=103;break}case 40:{r=f[71]|0;c=s[402]|0;f[r+((c&65535)<<3)>>2]=1;a=f[70]|0;s[402]=c+1<<16>>16;f[r+((c&65535)<<3)+4>>2]=a;c=103;break}case 91:{r=f[71]|0;c=s[402]|0;f[r+((c&65535)<<3)>>2]=8;a=f[70]|0;s[402]=c+1<<16>>16;f[r+((c&65535)<<3)+4>>2]=a;c=103;break}case 93:{e=s[402]|0;if(!(e<<16>>16)){c=40;break e}s[402]=e+-1<<16>>16;c=103;break}case 44:{a=s[401]|0;if(((a<<16>>16!=0?(t=s[402]|0,t<<16>>16!=0):0)?(f[(f[71]|0)+((t&65535)+-1<<3)>>2]|0)==5:0)?(b=f[(f[72]|0)+((a&65535)+-1<<2)>>2]|0,(f[b+4>>2]|0)==0):0){f[b+4>>2]=(f[70]|0)+2;f[73]=e+4;v(1)|0;c=f[73]|0;f[b+16>>2]=c;f[73]=c+-2;c=103}else c=103;break}case 41:{a=s[402]|0;if(!(a<<16>>16)){c=48;break e}s[402]=a+-1<<16>>16;r=s[401]|0;if(r<<16>>16!=0?(f[(f[71]|0)+((a+-1&65535)<<3)>>2]|0)==5:0){a=f[(f[72]|0)+((r&65535)+-1<<2)>>2]|0;if(!(f[a+4>>2]|0))f[a+4>>2]=(f[70]|0)+2;f[a+12>>2]=e+4;s[401]=r+-1<<16>>16;c=103}else c=103;break}case 123:{e=f[70]|0;c=f[62]|0;do{if((s[e>>1]|0)==41&(c|0)!=0?(f[c+12>>2]|0)==(e+2|0):0){a=f[63]|0;f[62]=a;if(!a){f[58]=0;break}else{f[a+36>>2]=0;break}}}while(0);r=f[71]|0;c=s[402]|0;f[r+((c&65535)<<3)>>2]=(i[810]|0)==0?2:6;s[402]=c+1<<16>>16;f[r+((c&65535)<<3)+4>>2]=e;i[810]=0;c=103;break}case 125:{e=s[402]|0;if(!(e<<16>>16)){c=61;break e}c=f[71]|0;s[402]=e+-1<<16>>16;if((f[c+((e+-1&65535)<<3)>>2]|0)==4){d();c=103}else c=103;break}case 34:case 39:{C(a);c=103;break}case 47:switch(s[e+4>>1]|0){case 47:{F();break a}case 42:{x(1);break a}default:{e=f[70]|0;a=s[e>>1]|0;r:do{if(!($(a)|0))if(a<<16>>16==41){r=s[402]|0;if(!(K(f[(f[71]|0)+((r&65535)<<3)+4>>2]|0)|0))c=76}else c=75;else switch(a<<16>>16){case 46:if(((s[e+-2>>1]|0)+-48&65535)<10){c=75;break r}else break r;case 43:if((s[e+-2>>1]|0)==43){c=75;break r}else break r;case 45:if((s[e+-2>>1]|0)==45){c=75;break r}else break r;default:break r}}while(0);if((c|0)==75){r=s[402]|0;c=76}r:do{if((c|0)==76){c=0;if(r<<16>>16!=0?(k=f[71]|0,o=(r&65535)+-1|0,a<<16>>16==102?(f[k+(o<<3)>>2]|0)==1:0):0){if(((s[e+-2>>1]|0)==111?g(e+-4|0)|0:0)?E(f[k+(o<<3)+4>>2]|0,196,3)|0:0)break}else c=81;if((c|0)==81?(0,a<<16>>16==125):0){c=f[71]|0;r=r&65535;if(U(f[c+(r<<3)+4>>2]|0)|0)break;if((f[c+(r<<3)>>2]|0)==6)break}if(!(w(e)|0)){switch(a<<16>>16){case 0:break r;case 47:{if(i[809]|0)break r;break}default:{}}c=f[64]|0;if((c|0?e>>>0>=(f[c>>2]|0)>>>0:0)?e>>>0<=(f[c+4>>2]|0)>>>0:0){I();i[809]=0;c=103;break a}r=f[3]|0;do{if(e>>>0<=r>>>0)break;e=e+-2|0;f[70]=e;a=s[e>>1]|0}while(!(D(a)|0));if(M(a)|0){do{if(e>>>0<=r>>>0)break;e=e+-2|0;f[70]=e}while(M(s[e>>1]|0)|0);if(q(e)|0){I();i[809]=0;c=103;break a}}i[809]=1;c=103;break a}}}while(0);I();i[809]=0;c=103;break a}}case 96:{r=f[71]|0;c=s[402]|0;f[r+((c&65535)<<3)+4>>2]=f[70];s[402]=c+1<<16>>16;f[r+((c&65535)<<3)>>2]=3;d();c=103;break}default:c=103}}while(0);if((c|0)==103){c=0;f[70]=f[73]}e=f[73]|0}if((c|0)==40){ae();e=0;break}else if((c|0)==48){ae();e=0;break}else if((c|0)==61){ae();e=0;break}else if((c|0)==104){e=(i[806]|0)==0?(s[401]|s[402])<<16>>16==0:0;break}}}while(0);n=h;return e|0}function k(e){e=e|0;var a=0,r=0,c=0,t=0,n=0,b=0,k=0,o=0,h=0,A=0,p=0,y=0,m=0,O=0,T=0;y=s[402]|0;a=f[73]|0;f[70]=a;k=a;p=a;o=y;A=0;e:while(1){r=f[74]|0;t=o<<16>>16==y<<16>>16;c=A&e;b=a;while(1){n=b+2|0;if(b>>>0>=r>>>0){a=0;h=100;break e}a=s[n>>1]|0;if(!(M(a)|0)){if(t){switch(a<<16>>16){case 125:case 93:case 41:case 59:case 44:{h=100;break e}default:{}}if(c?be(a)|0:0){h=100;break e}}if(!(be(a)|0))break}b=n}f[73]=n;a:do{switch(a<<16>>16){case 101:{if((o<<16>>16==0?R(n)|0:0)?(S(b+4|0,16,10)|0)==0:0){u();h=89}else h=89;break}case 105:{if(((s[b+4>>1]|0)==109?R(n)|0:0)?(S(b+6|0,26,8)|0)==0:0){l();h=89}else h=89;break}case 99:{if((((s[b+4>>1]|0)==108?R(n)|0:0)?(S(b+6|0,88,6)|0)==0:0)?L(s[b+12>>1]|0)|0:0){i[810]=1;h=89}else h=89;break}case 40:{b=f[71]|0;h=o&65535;f[b+(h<<3)>>2]=1;s[402]=o+1<<16>>16;f[b+(h<<3)+4>>2]=k;h=89;break}case 91:{b=f[71]|0;h=o&65535;f[b+(h<<3)>>2]=8;s[402]=o+1<<16>>16;f[b+(h<<3)+4>>2]=k;h=89;break}case 93:if(!(o<<16>>16)){ae();break a}else{s[402]=o+-1<<16>>16;h=89;break a}case 44:{r=s[401]|0;if((!(o<<16>>16==0|r<<16>>16==0)?(f[(f[71]|0)+((o&65535)+-1<<3)>>2]|0)==5:0)?(m=f[(f[72]|0)+((r&65535)+-1<<2)>>2]|0,(f[m+4>>2]|0)==0):0){f[m+4>>2]=p+2;f[73]=b+4;v(1)|0;h=f[73]|0;f[m+16>>2]=h;f[73]=h+-2;h=89}else h=89;break}case 41:{if(!(o<<16>>16)){ae();break a}h=o+-1<<16>>16;s[402]=h;r=s[401]|0;if(r<<16>>16!=0?(f[(f[71]|0)+((h&65535)<<3)>>2]|0)==5:0){c=f[(f[72]|0)+((r&65535)+-1<<2)>>2]|0;if(!(f[c+4>>2]|0))f[c+4>>2]=p+2;f[c+12>>2]=b+4;s[401]=r+-1<<16>>16;h=89}else h=89;break}case 123:{h=f[62]|0;do{if((s[p>>1]|0)==41&(h|0)!=0?(f[h+12>>2]|0)==(p+2|0):0){r=f[63]|0;f[62]=r;if(!r){f[58]=0;break}else{f[r+36>>2]=0;break}}}while(0);b=f[71]|0;h=o&65535;f[b+(h<<3)>>2]=(i[810]|0)==0?2:6;s[402]=o+1<<16>>16;f[b+(h<<3)+4>>2]=k;i[810]=0;h=89;break}case 125:{if(!(o<<16>>16)){ae();break a}k=f[71]|0;h=o+-1<<16>>16;s[402]=h;if((f[k+((h&65535)<<3)>>2]|0)==4){d();h=89}else h=89;break}case 34:case 39:{C(a);h=89;break}case 47:switch(s[b+4>>1]|0){case 47:{F();break a}case 42:{x(1);break a}default:{c=s[p>>1]|0;r:do{if(!($(c)|0)){if(!(c<<16>>16==41?K(f[(f[71]|0)+((o&65535)<<3)+4>>2]|0)|0:0))h=62}else switch(c<<16>>16){case 46:if(((s[p+-2>>1]|0)+-48&65535)<10){h=62;break r}else break r;case 43:if((s[p+-2>>1]|0)==43){h=62;break r}else break r;case 45:if((s[p+-2>>1]|0)==45){h=62;break r}else break r;default:break r}}while(0);r:do{if((h|0)==62){h=0;if(o<<16>>16!=0?(O=f[71]|0,T=(o&65535)+-1|0,c<<16>>16==102?(f[O+(T<<3)>>2]|0)==1:0):0){if(((s[p+-2>>1]|0)==111?g(p+-4|0)|0:0)?E(f[O+(T<<3)+4>>2]|0,196,3)|0:0)break}else h=67;if((h|0)==67?(0,c<<16>>16==125):0){t=f[71]|0;r=o&65535;if(U(f[t+(r<<3)+4>>2]|0)|0)break;if((f[t+(r<<3)>>2]|0)==6)break}if(!(w(p)|0)){switch(c<<16>>16){case 0:break r;case 47:{if(i[809]|0)break r;break}default:{}}h=f[64]|0;if((h|0?p>>>0>=(f[h>>2]|0)>>>0:0)?p>>>0<=(f[h+4>>2]|0)>>>0:0){I();i[809]=0;h=89;break a}t=f[3]|0;r=p;do{if(r>>>0<=t>>>0)break;r=r+-2|0;f[70]=r;c=s[r>>1]|0}while(!(D(c)|0));if(M(c)|0){do{if(r>>>0<=t>>>0)break;r=r+-2|0;f[70]=r}while(M(s[r>>1]|0)|0);if(q(r)|0){I();i[809]=0;h=89;break a}}i[809]=1;h=89;break a}}}while(0);I();i[809]=0;h=89;break a}}case 96:{b=f[71]|0;h=o&65535;f[b+(h<<3)+4>>2]=k;s[402]=o+1<<16>>16;f[b+(h<<3)>>2]=3;d();h=89;break}default:h=89}}while(0);if((h|0)==89){h=0;f[70]=f[73]}if(i[806]|0){a=0;break}r=f[70]|0;a:do{if((r|0)==(p|0))if(A&((s[402]|0)==y<<16>>16&e)){a=s[f[73]>>1]|0;if(be(a)|0)break e;else a=1}else a=A;else{if(a<<16>>16==47){a=(i[809]|0)==0;break}if(G(a)|0)a=1;else{switch(a<<16>>16){case 96:case 34:case 39:case 41:case 93:case 125:{a=1;break a}default:{}}a=0}}}while(0);k=r;p=r;o=s[402]|0;A=a;a=f[73]|0}if((h|0)==100)f[73]=n;return a|0}function l(){var e=0,a=0,r=0,c=0,t=0,n=0;n=f[73]|0;f[73]=n+12;e=v(1)|0;r=f[73]|0;e:do{if(e<<16>>16!=46){if(!(e<<16>>16==115&r>>>0>(n+12|0)>>>0)){if(!(e<<16>>16==100&r>>>0>(n+10|0)>>>0)){r=0;t=28;break}if(S(r+2|0,50,8)|0){a=r;e=100;r=0;t=60;break}if(!(L(s[r+10>>1]|0)|0)){a=r;e=100;r=0;t=60;break}f[73]=r+10;e=v(1)|0;if(e<<16>>16==42){e=42;c=2;t=62;break}f[73]=r;r=0;t=28;break}if((S(r+2|0,40,10)|0)==0?L(s[r+12>>1]|0)|0:0){f[73]=r+12;e=v(1)|0;a=f[73]|0;if((a|0)!=(r+12|0)){if(e<<16>>16!=102){r=1;t=28;break}if(S(a+2|0,58,6)|0){e=102;r=1;t=60;break}if(!(D(s[a+8>>1]|0)|0)){e=102;r=1;t=60;break}}f[73]=r;r=0;t=28}else{a=r;e=115;r=0;t=60}}else{f[73]=r+2;switch((v(1)|0)<<16>>16){case 109:{e=f[73]|0;if(S(e+2|0,34,6)|0)break e;a=f[70]|0;if(!(N(a)|0)?(s[a>>1]|0)==46:0)break e;A(n,n,e+8|0,2);break e}case 115:{e=f[73]|0;if(S(e+2|0,40,10)|0)break e;a=f[70]|0;if(!(N(a)|0)?(s[a>>1]|0)==46:0)break e;f[73]=e+12;e=v(1)|0;r=1;t=28;break e}case 100:{e=f[73]|0;if(S(e+2|0,50,8)|0)break e;a=f[70]|0;if(!(N(a)|0)?(s[a>>1]|0)==46:0)break e;f[73]=e+10;e=v(1)|0;r=2;t=28;break e}default:break e}}}while(0);e:do{if((t|0)==28){if(e<<16>>16==40){a=f[71]|0;c=s[402]|0;f[a+((c&65535)<<3)>>2]=5;e=f[73]|0;s[402]=c+1<<16>>16;f[a+((c&65535)<<3)+4>>2]=e;if((s[f[70]>>1]|0)==46)break;f[73]=e+2;a=v(1)|0;A(n,f[73]|0,0,e);if(!r)e=f[62]|0;else{e=f[62]|0;f[e+28>>2]=(r|0)==1?5:7}c=f[72]|0;n=s[401]|0;s[401]=n+1<<16>>16;f[c+((n&65535)<<2)>>2]=e;switch(a<<16>>16){case 39:{C(39);break}case 34:{C(34);break}case 96:{if(!(y()|0))t=37;break}default:t=37}if((t|0)==37){f[73]=(f[73]|0)+-2;break}e=(f[73]|0)+2|0;f[73]=e;switch((v(1)|0)<<16>>16){case 44:{f[73]=(f[73]|0)+2;v(1)|0;c=f[62]|0;f[c+4>>2]=e;n=f[73]|0;f[c+16>>2]=n;i[c+24>>0]=1;f[73]=n+-2;break e}case 41:{s[402]=(s[402]|0)+-1<<16>>16;n=f[62]|0;f[n+4>>2]=e;f[n+12>>2]=(f[73]|0)+2;i[n+24>>0]=1;s[401]=(s[401]|0)+-1<<16>>16;break e}default:{f[73]=(f[73]|0)+-2;break e}}}if(!((r|0)==0&e<<16>>16==123)){switch(e<<16>>16){case 42:case 39:case 34:{c=r;t=62;break e}default:{}}a=f[73]|0;t=60;break}e=f[73]|0;if(s[402]|0){f[73]=e+-2;break}while(1){if(e>>>0>=(f[74]|0)>>>0)break;e=v(1)|0;if(!(re(e)|0)){if(e<<16>>16==125){t=50;break}}else C(e);e=(f[73]|0)+2|0;f[73]=e}if((t|0)==50)f[73]=(f[73]|0)+2;c=(v(1)|0)<<16>>16==102;e=f[73]|0;if(c?S(e+2|0,58,6)|0:0){ae();break}f[73]=e+8;e=v(1)|0;if(re(e)|0){o(n,e,0);break}else{ae();break}}}while(0);if((t|0)==60)if((a|0)==(n+12|0))f[73]=n+10;else{c=r;t=62}do{if((t|0)==62){if(!((e<<16>>16==42|(c|0)!=2)&(s[402]|0)==0)){f[73]=(f[73]|0)+-2;break}e=f[74]|0;a=f[73]|0;while(1){if(a>>>0>=e>>>0){t=69;break}r=s[a>>1]|0;if(re(r)|0){t=67;break}t=a+2|0;f[73]=t;a=t}if((t|0)==67){o(n,r,c);break}else if((t|0)==69){ae();break}}}while(0);return}function u(){var e=0,a=0,r=0,c=0,t=0,n=0,b=0,l=0,u=0,h=0;l=f[73]|0;u=f[64]|0;f[73]=l+12;a=v(1)|0;e=f[73]|0;if(!((e|0)==(l+12|0)?!(O(a)|0):0))h=3;e:do{if((h|0)==3){f[65]=l;a:do{switch(a<<16>>16){case 123:{f[73]=e+2;e=v(1)|0;a=f[73]|0;while(1){if(re(e)|0){C(e);e=(f[73]|0)+2|0;f[73]=e}else{H(e)|0;e=f[73]|0}v(1)|0;e=p(a,e)|0;if(e<<16>>16==44){f[73]=(f[73]|0)+2;e=v(1)|0}if(e<<16>>16==125){h=15;break}h=a;a=f[73]|0;if((a|0)==(h|0)){h=12;break}if(a>>>0>(f[74]|0)>>>0){h=14;break}}if((h|0)==12){ae();break e}else if((h|0)==14){ae();break e}else if((h|0)==15){i[807]=1;f[73]=(f[73]|0)+2;break a}break}case 42:{f[73]=e+2;v(1)|0;h=f[73]|0;p(h,h)|0;break}default:{i[808]=0;switch(a<<16>>16){case 100:{f[73]=e+14;switch((v(1)|0)<<16>>16){case 97:{a=f[73]|0;if((S(a+2|0,64,8)|0)==0?M(s[a+10>>1]|0)|0:0){f[73]=a+10;v(0)|0;h=22}break}case 102:{h=22;break}case 99:{a=f[73]|0;if(((S(a+2|0,86,8)|0)==0?(u=s[a+10>>1]|0,L(u)|0|u<<16>>16==123):0)?(f[73]=a+10,r=v(1)|0,r<<16>>16!=123):0){b=r;h=31}break}default:{}}r:do{if((h|0)==22?(c=f[73]|0,(S(c+2|0,72,14)|0)==0):0){a=s[c+16>>1]|0;if(!(L(a)|0))switch(a<<16>>16){case 40:case 42:break;default:break r}f[73]=c+16;a=v(1)|0;if(a<<16>>16==42){f[73]=(f[73]|0)+2;a=v(1)|0}if(a<<16>>16!=40){b=a;h=31}}}while(0);if((h|0)==31?(t=f[73]|0,H(b)|0,n=f[73]|0,n>>>0>t>>>0):0){T(e,e+14|0,t,n);f[73]=(f[73]|0)+-2;break e}T(e,e+14|0,0,0);f[73]=e+12;break e}case 97:{f[73]=e+10;v(0)|0;e=f[73]|0;h=35;break}case 102:{h=35;break}case 99:{if((S(e+2|0,86,8)|0)==0?D(s[e+10>>1]|0)|0:0){f[73]=e+10;h=v(1)|0;u=f[73]|0;H(h)|0;h=f[73]|0;T(u,h,u,h);f[73]=(f[73]|0)+-2;break e}f[73]=e+4;e=e+4|0;break}case 108:case 118:break;default:break e}if((h|0)==35){f[73]=e+16;e=v(1)|0;if(e<<16>>16==42){f[73]=(f[73]|0)+2;e=v(1)|0}u=f[73]|0;H(e)|0;h=f[73]|0;T(u,h,u,h);f[73]=(f[73]|0)+-2;break e}f[73]=e+6;i[808]=0;while(1){a=v(1)|0;e=f[73]|0;if(e>>>0>(f[74]|0)>>>0)break;a=P(a)|0;if((f[73]|0)==(e|0))break;if(a<<16>>16==61)a=k(1)|0;e=f[73]|0;if(a<<16>>16!=44)break;f[73]=e+2}f[73]=e+-2;break e}}}while(0);h=(v(1)|0)<<16>>16==102;e=f[73]|0;if(h?(S(e+2|0,58,6)|0)==0:0){f[73]=e+8;o(l,v(1)|0,0);e=(u|0)==0?236:u+20|0;while(1){e=f[e>>2]|0;if(!e)break e;f[e+12>>2]=0;f[e+8>>2]=0;e=e+20|0}}f[73]=e+-2}}while(0);return}function o(e,a,r){e=e|0;a=a|0;r=r|0;var i=0,c=0,t=0,n=0,b=0;i=(f[73]|0)+2|0;switch(a<<16>>16){case 39:{C(39);c=5;break}case 34:{C(34);c=5;break}default:ae()}do{if((c|0)==5){A(e,i,f[73]|0,1);if((r|0)>0)f[(f[62]|0)+28>>2]=(r|0)==1?4:6;f[73]=(f[73]|0)+2;n=(v(0)|0)<<16>>16==119;t=f[73]|0;if(((n?(s[t+2>>1]|0)==105:0)?(s[t+4>>1]|0)==116:0)?(s[t+6>>1]|0)==104:0){f[73]=t+8;if((v(1)|0)<<16>>16!=123){f[73]=t;break}n=f[73]|0;i=n;c=0;e:while(1){f[73]=i+2;i=v(1)|0;do{if(i<<16>>16!=39){a=f[73]|0;if(i<<16>>16==34){C(34);e=(f[73]|0)+2|0;f[73]=e;i=v(1)|0;break}else{i=H(i)|0;e=f[73]|0;break}}else{a=f[73]|0;C(39);e=(f[73]|0)+2|0;f[73]=e;i=v(1)|0}}while(0);if(i<<16>>16!=58){c=21;break}f[73]=(f[73]|0)+2;switch((v(1)|0)<<16>>16){case 39:{i=f[73]|0;C(39);break}case 34:{i=f[73]|0;C(34);break}default:{c=25;break e}}b=(f[73]|0)+2|0;r=f[67]|0;f[67]=r+20;f[r>>2]=a;f[r+4>>2]=e;f[r+8>>2]=i;f[r+12>>2]=b;f[r+16>>2]=0;f[((c|0)==0?(f[62]|0)+32|0:c+16|0)>>2]=r;f[73]=(f[73]|0)+2;switch((v(1)|0)<<16>>16){case 125:{c=29;break e}case 44:break;default:{c=27;break e}}i=(f[73]|0)+2|0;f[73]=i;c=r}if((c|0)==21){f[73]=t;break}else if((c|0)==25){f[73]=t;break}else if((c|0)==27){f[73]=t;break}else if((c|0)==29){b=f[62]|0;f[b+16>>2]=n;f[b+12>>2]=(f[73]|0)+2;break}}f[73]=t+-2}}while(0);return}function h(){var e=0,a=0,r=0,i=0,c=0,t=0,n=0;e=f[73]|0;c=(s[e>>1]|0)==123;f[73]=e+2;e=v(1)|0;t=c?125:93;e:while(1){if((t|0)==(e&65535|0))break;i=f[73]|0;if(i>>>0>(f[74]|0)>>>0)break;if((e<<16>>16==46?(s[i+2>>1]|0)==46:0)?(s[i+4>>1]|0)==46:0){f[73]=i+6;e=P(v(1)|0)|0}else n=9;a:do{if((n|0)==9){n=0;do{if(c){do{if(e<<16>>16==91){k(0)|0;f[73]=(f[73]|0)+2;a=i}else{if(re(e)|0){C(e);f[73]=(f[73]|0)+2;a=i;break}if((e+-48&65535)>=10){H(e)|0;a=f[73]|0;break}e=i;r:while(1){r=e+2|0;a=s[r>>1]|0;i:do{if((a+-48&65535)>=10){switch(a<<16>>16){case 67:case 68:case 70:case 97:case 65:case 99:case 100:case 102:case 46:case 66:case 69:case 79:case 88:case 95:case 98:case 101:case 110:case 111:case 120:break i;case 43:case 45:break;default:break r}switch(s[e>>1]|0){case 69:case 101:break;default:break r}}}while(0);e=r}f[73]=r;a=i}}while(0);e=v(1)|0;if(e<<16>>16==58){f[73]=(f[73]|0)+2;e=P(v(1)|0)|0;break}if(a>>>0>i>>>0)T(i,a,i,a)}else if(e<<16>>16==44){f[73]=i+2;e=v(1)|0;break a}else{e=P(e)|0;break}}while(0);if(e<<16>>16==61)e=k(0)|0;if(e<<16>>16!=44)break e;f[73]=(f[73]|0)+2;e=v(1)|0}}while(0)}return}function w(e){e=e|0;e:do{switch(s[e>>1]|0){case 100:switch(s[e+-2>>1]|0){case 105:{e=E(e+-4|0,94,2)|0;break e}case 108:{e=E(e+-4|0,98,3)|0;break e}default:{e=0;break e}}case 101:switch(s[e+-2>>1]|0){case 115:switch(s[e+-4>>1]|0){case 108:{e=z(e+-6|0,101)|0;break e}case 97:{e=z(e+-6|0,99)|0;break e}default:{e=0;break e}}case 116:{e=E(e+-4|0,104,4)|0;break e}case 117:{e=E(e+-4|0,112,6)|0;break e}default:{e=0;break e}}case 102:{if((s[e+-2>>1]|0)==111?(s[e+-4>>1]|0)==101:0)switch(s[e+-6>>1]|0){case 99:{e=E(e+-8|0,124,6)|0;break e}case 112:{e=E(e+-8|0,136,2)|0;break e}default:{e=0;break e}}else e=0;break}case 107:{e=E(e+-2|0,140,4)|0;break}case 110:{if(z(e+-2|0,105)|0)e=1;else e=E(e+-2|0,148,5)|0;break}case 111:{e=z(e+-2|0,100)|0;break}case 114:{e=E(e+-2|0,158,7)|0;break}case 116:{e=E(e+-2|0,172,4)|0;break}case 119:switch(s[e+-2>>1]|0){case 101:{e=z(e+-4|0,110)|0;break e}case 111:{e=E(e+-4|0,180,3)|0;break e}default:{e=0;break e}}default:e=0}}while(0);return e|0}function d(){var e=0,a=0,r=0;a=f[74]|0;r=f[73]|0;e:while(1){e=r+2|0;if(r>>>0>=a>>>0){a=10;break}switch(s[e>>1]|0){case 96:{a=7;break e}case 36:{if((s[r+4>>1]|0)==123){a=6;break e}break}case 92:{e=r+4|0;break}default:{}}r=e}if((a|0)==6){e=r+4|0;f[73]=e;a=f[71]|0;r=s[402]|0;f[a+((r&65535)<<3)>>2]=4;s[402]=r+1<<16>>16;f[a+((r&65535)<<3)+4>>2]=e}else if((a|0)==7){f[73]=e;a=f[71]|0;r=(s[402]|0)+-1<<16>>16;s[402]=r;if((f[a+((r&65535)<<3)>>2]|0)!=3)ae()}else if((a|0)==10){f[73]=e;ae()}return}function v(e){e=e|0;var a=0,r=0,i=0;r=f[73]|0;e:do{a=s[r>>1]|0;a:do{if(a<<16>>16!=47)if(e)if(L(a)|0)break;else break e;else if(M(a)|0)break;else break e;else switch(s[r+2>>1]|0){case 47:{F();break a}case 42:{x(e);break a}default:{a=47;break e}}}while(0);i=f[73]|0;r=i+2|0;f[73]=r}while(i>>>0<(f[74]|0)>>>0);return a|0}function A(e,a,r,s){e=e|0;a=a|0;r=r|0;s=s|0;var c=0,t=0;t=f[67]|0;f[67]=t+40;c=f[62]|0;f[((c|0)==0?232:c+36|0)>>2]=t;f[63]=c;f[62]=t;f[t+8>>2]=e;if(2==(s|0)){e=3;c=r}else{e=1==(s|0)?1:2;c=1==(s|0)?r+2|0:0}f[t+12>>2]=c;f[t+28>>2]=e;f[t>>2]=a;f[t+4>>2]=r;f[t+16>>2]=0;f[t+20>>2]=s;i[t+24>>0]=1==(s|0)&1;f[t+32>>2]=0;f[t+36>>2]=0;if(1==(s|0)|2==(s|0))i[807]=1;return}function C(e){e=e|0;var a=0,r=0,i=0,c=0;c=f[74]|0;a=f[73]|0;while(1){i=a+2|0;if(a>>>0>=c>>>0){a=9;break}r=s[i>>1]|0;if(r<<16>>16==e<<16>>16){a=10;break}if(r<<16>>16==92){r=a+4|0;if((s[r>>1]|0)==13){a=a+6|0;a=(s[a>>1]|0)==10?a:r}else a=r}else if(be(r)|0){a=9;break}else a=i}if((a|0)==9){f[73]=i;ae()}else if((a|0)==10)f[73]=i;return}function g(e){e=e|0;var a=0,r=0;a=s[e>>1]|0;if(L(a)|0)r=3;else switch(a<<16>>16){case 41:case 125:case 93:{r=3;break}default:e=0}e:do{if((r|0)==3){r=f[3]|0;while(1){if(e>>>0<=r>>>0)break;e=e+-2|0;if(!(L(a)|0))break;a=s[e>>1]|0}switch(a<<16>>16){case 41:case 125:case 93:{e=1;break e}default:{}}e=(O(a)|0)^1}}while(0);return e|0}function p(e,a){e=e|0;a=a|0;var r=0,i=0,c=0,t=0;r=f[73]|0;i=s[r>>1]|0;c=(e|0)==(a|0)?0:e;t=(e|0)==(a|0)?0:a;if(i<<16>>16==97){f[73]=r+4;r=v(1)|0;e=f[73]|0;if(re(r)|0){C(r);a=(f[73]|0)+2|0;f[73]=a}else{H(r)|0;a=f[73]|0}i=v(1)|0;r=f[73]|0}if((r|0)!=(e|0))T(e,a,c,t);return i|0}function y(){var e=0,a=0,r=0,i=0;i=f[73]|0;r=f[74]|0;a=i;e:while(1){e=a+2|0;if(a>>>0>=r>>>0){a=7;break}switch(s[e>>1]|0){case 96:{a=8;break e}case 92:{e=a+4|0;break}case 36:{if((s[a+4>>1]|0)==123){a=7;break e}break}default:{}}a=e}if((a|0)==7){f[73]=i;e=0}else if((a|0)==8){f[73]=e;e=1}return e|0}function m(){var e=0,a=0,r=0;r=f[74]|0;a=f[73]|0;e:while(1){e=a+2|0;if(a>>>0>=r>>>0){a=6;break}switch(s[e>>1]|0){case 13:case 10:{a=6;break e}case 93:{a=7;break e}case 92:{e=a+4|0;break}default:{}}a=e}if((a|0)==6){f[73]=e;ae();e=0}else if((a|0)==7){f[73]=e;e=93}return e|0}function I(){var e=0,a=0;e:while(1){e=f[73]|0;f[73]=e+2;if(e>>>0>=(f[74]|0)>>>0){a=7;break}switch(s[e+2>>1]|0){case 13:case 10:{a=7;break e}case 47:break e;case 91:{m()|0;break}case 92:{f[73]=e+4;break}default:{}}}if((a|0)==7)ae();return}function U(e){e=e|0;switch(s[e>>1]|0){case 62:{e=(s[e+-2>>1]|0)==61;break}case 41:case 59:{e=1;break}case 104:{e=E(e+-2|0,206,4)|0;break}case 121:{e=E(e+-2|0,214,6)|0;break}case 101:{e=E(e+-2|0,226,3)|0;break}default:e=0}return e|0}function x(e){e=e|0;var a=0,r=0,i=0,c=0,t=0;c=(f[73]|0)+2|0;f[73]=c;r=f[74]|0;while(1){a=c+2|0;if(c>>>0>=r>>>0)break;i=s[a>>1]|0;if(!e?be(i)|0:0)break;if(i<<16>>16==42?(s[c+4>>1]|0)==47:0){t=8;break}c=a}if((t|0)==8){f[73]=a;a=c+4|0}f[73]=a;return}function S(e,a,r){e=e|0;a=a|0;r=r|0;var s=0,f=0;e:do{if(!r)e=0;else{while(1){s=i[e>>0]|0;f=i[a>>0]|0;if(s<<24>>24!=f<<24>>24)break;r=r+-1|0;if(!r){e=0;break e}else{e=e+1|0;a=a+1|0}}e=(s&255)-(f&255)|0}}while(0);return e|0}function O(e){e=e|0;e:do{switch(e<<16>>16){case 38:case 37:case 33:{e=1;break}default:if((e&-8)<<16>>16==40|(e+-58&65535)<6)e=1;else{switch(e<<16>>16){case 91:case 93:case 94:{e=1;break e}default:{}}e=(e+-123&65535)<4}}}while(0);return e|0}function $(e){e=e|0;e:do{switch(e<<16>>16){case 38:case 37:case 33:break;default:if(!((e+-58&65535)<6|(e+-40&65535)<7&e<<16>>16!=41)){switch(e<<16>>16){case 91:case 94:break e;default:{}}return e<<16>>16!=125&(e+-123&65535)<4|0}}}while(0);return 1}function T(e,a,r,s){e=e|0;a=a|0;r=r|0;s=s|0;var c=0,t=0;c=f[67]|0;f[67]=c+24;t=f[64]|0;f[((t|0)==0?236:t+20|0)>>2]=c;f[64]=c;f[c>>2]=e;f[c+4>>2]=a;f[c+8>>2]=r;f[c+12>>2]=s;f[c+16>>2]=f[65];f[c+20>>2]=0;i[807]=1;return}function j(e){e=e|0;var a=0;a=s[e>>1]|0;e:do{if((a+-9&65535)>=5){switch(a<<16>>16){case 160:case 32:{a=1;break e}default:{}}if(O(a)|0)return a<<16>>16!=46|(N(e)|0)|0;else a=0}else a=1}while(0);return a|0}function B(e){e=e|0;var a=0,r=0;r=n;n=n+16|0;f[r>>2]=0;f[66]=e;a=f[3]|0;s[a+(e<<1)>>1]=0;f[r>>2]=a+(e<<1)+2;f[67]=a+(e<<1)+2;f[58]=0;f[62]=0;f[60]=0;f[59]=0;f[64]=0;f[61]=0;n=r;return a|0}function E(e,a,r){e=e|0;a=a|0;r=r|0;var i=0,s=0;s=e+(0-r<<1)+2|0;i=f[3]|0;if(s>>>0>=i>>>0?(S(s,a,r<<1)|0)==0:0)if((s|0)==(i|0))i=1;else i=j(e+(0-r<<1)|0)|0;else i=0;return i|0}function P(e){e=e|0;var a=0;switch(e<<16>>16){case 91:case 123:{h();f[73]=(f[73]|0)+2;break}default:{a=f[73]|0;H(e)|0;e=f[73]|0;if(e>>>0>a>>>0)T(a,e,a,e)}}return v(1)|0}function q(e){e=e|0;switch(s[e>>1]|0){case 107:{e=E(e+-2|0,140,4)|0;break}case 101:{if((s[e+-2>>1]|0)==117)e=E(e+-4|0,112,6)|0;else e=0;break}default:e=0}return e|0}function z(e,a){e=e|0;a=a|0;var r=0;r=f[3]|0;if(r>>>0<=e>>>0?(s[e>>1]|0)==a<<16>>16:0)if((r|0)==(e|0))r=1;else r=D(s[e+-2>>1]|0)|0;else r=0;return r|0}function D(e){e=e|0;e:do{if((e+-9&65535)<5)e=1;else{switch(e<<16>>16){case 32:case 160:{e=1;break e}default:{}}e=e<<16>>16!=46&(O(e)|0)}}while(0);return e|0}function F(){var e=0,a=0,r=0;e=f[74]|0;r=f[73]|0;e:while(1){a=r+2|0;if(r>>>0>=e>>>0)break;switch(s[a>>1]|0){case 13:case 10:break e;default:r=a}}f[73]=a;return}function G(e){e=e|0;e:do{if(((e&-33)+-65&65535)<26|(e+-48&65535)<10)e=1;else{switch(e<<16>>16){case 36:case 95:{e=1;break e}default:{}}e=(e&65535)>127}}while(0);return e|0}function H(e){e=e|0;while(1){if(L(e)|0)break;if(O(e)|0)break;e=(f[73]|0)+2|0;f[73]=e;e=s[e>>1]|0;if(!(e<<16>>16)){e=0;break}}return e|0}function J(){var e=0;e=f[(f[60]|0)+20>>2]|0;switch(e|0){case 1:{e=-1;break}case 2:{e=-2;break}default:e=e-(f[3]|0)>>1}return e|0}function K(e){e=e|0;if(!(E(e,186,5)|0)?!(E(e,196,3)|0):0)e=E(e,202,2)|0;else e=1;return e|0}function L(e){e=e|0;switch(e<<16>>16){case 160:case 9:case 10:case 11:case 12:case 13:case 32:{e=1;break}default:e=0}return e|0}function M(e){e=e|0;switch(e<<16>>16){case 160:case 32:case 12:case 11:case 9:{e=1;break}default:e=0}return e|0}function N(e){e=e|0;if((s[e>>1]|0)==46?(s[e+-2>>1]|0)==46:0)e=(s[e+-4>>1]|0)==46;else e=0;return e|0}function Q(){var e=0;e=f[69]|0;e=f[((e|0)==0?(f[60]|0)+32|0:e+16|0)>>2]|0;f[69]=e;return(e|0)!=0|0}function R(e){e=e|0;if((f[3]|0)==(e|0))e=1;else e=j(e+-2|0)|0;return e|0}function V(){var e=0;e=f[(f[61]|0)+12>>2]|0;if(!e)e=-1;else e=e-(f[3]|0)>>1;return e|0}function W(){var e=0;e=f[(f[60]|0)+12>>2]|0;if(!e)e=-1;else e=e-(f[3]|0)>>1;return e|0}function X(){var e=0;e=f[(f[61]|0)+8>>2]|0;if(!e)e=-1;else e=e-(f[3]|0)>>1;return e|0}function Y(){var e=0;e=f[(f[60]|0)+16>>2]|0;if(!e)e=-1;else e=e-(f[3]|0)>>1;return e|0}function Z(){var e=0;e=f[(f[60]|0)+4>>2]|0;if(!e)e=-1;else e=e-(f[3]|0)>>1;return e|0}function _(){var e=0;e=f[60]|0;e=f[((e|0)==0?232:e+36|0)>>2]|0;f[60]=e;return(e|0)!=0|0}function ee(){var e=0;e=f[61]|0;e=f[((e|0)==0?236:e+20|0)>>2]|0;f[61]=e;return(e|0)!=0|0}function ae(){i[806]=1;f[68]=(f[73]|0)-(f[3]|0)>>1;f[73]=(f[74]|0)+2;return}function re(e){e=e|0;return e<<16>>16==39|e<<16>>16==34|0}function ie(){return(f[(f[61]|0)+16>>2]|0)-(f[3]|0)>>1|0}function se(){return(f[(f[69]|0)+12>>2]|0)-(f[3]|0)>>1|0}function fe(){return(f[(f[69]|0)+8>>2]|0)-(f[3]|0)>>1|0}function ce(){return(f[(f[69]|0)+4>>2]|0)-(f[3]|0)>>1|0}function te(){return(f[(f[60]|0)+8>>2]|0)-(f[3]|0)>>1|0}function ne(){return(f[(f[61]|0)+4>>2]|0)-(f[3]|0)>>1|0}function be(e){e=e|0;return e<<16>>16==13|e<<16>>16==10|0}function ke(){return(f[f[69]>>2]|0)-(f[3]|0)>>1|0}function le(){return(f[f[60]>>2]|0)-(f[3]|0)>>1|0}function ue(){return(f[f[61]>>2]|0)-(f[3]|0)>>1|0}function oe(){return c[(f[60]|0)+24>>0]|0|0}function he(e){e=e|0;f[3]=e;return}function we(){return f[(f[60]|0)+28>>2]|0}function de(){return(i[807]|0)!=0|0}function ve(){return(i[808]|0)!=0|0}function Ae(){f[69]=0;return}function Ce(){return f[68]|0}function ge(e,a){e=e|0;a=a|0;n=e+a+15&-16;return a}return{su:ge,ai:Y,ake:ce,aks:ke,ave:se,avs:fe,e:Ce,ee:ne,ele:V,els:X,es:ue,ess:ie,f:ve,id:J,ie:Z,ip:oe,is:le,it:we,ms:de,p:b,ra:Q,re:ee,ri:_,rsa:Ae,sa:B,se:W,ses:he,ss:te}}(\"undefined\"!=typeof globalThis?globalThis:self,{},a),r=e.su(i-(2<<17),1040)}const h=c.length+1;e.ses(r),e.sa(h-1),s(c,new Uint16Array(a,r,h)),e.p()||(n=e.e(),o());const w=[],d=[];for(;e.ri();){const a=e.is(),r=e.ie(),i=e.ai(),s=e.id(),f=e.ss(),t=e.se(),n=e.it();let k;e.ip()&&(k=b(-1===s?a:a+1,c.charCodeAt(-1===s?a-1:a)));let l=null;for(l=[],e.rsa();e.ra();){const a=e.aks(),r=e.ake(),i=e.avs(),s=e.ave();l.push([v(a,r),v(i,s)])}l=l.length>0?l:null,w.push({t:n,n:k,s:a,e:r,ss:f,se:t,d:s,a:i,at:l})}for(;e.re();){const a=e.es(),r=e.ee(),i=e.els(),s=e.ele(),f=i<0?void 0:v(i,s),c=v(a,r);d.push({s:a,e:r,ls:i,le:s,ss:e.ess(),n:c,ln:f})}return[w,d,!!e.f(),!!e.ms()];function v(e,a){const r=c.charCodeAt(e);return 34===r||39===r?b(e+1,r):c.slice(e,a)}}function b(e,a){n=e;let r=\"\",i=n;for(;;){n>=c.length&&o();const e=c.charCodeAt(n);if(e===a)break;92===e?(r+=c.slice(i,n),r+=k(),i=n):(8232===e||8233===e||u(e)&&96!==a&&o(),++n)}return r+=c.slice(i,n++),r}function k(){let e=c.charCodeAt(++n);switch(++n,e){case 110:return\"\\n\";case 114:return\"\\r\";case 120:return String.fromCharCode(l(2));case 117:return function(){const e=c.charCodeAt(n);let a;123===e?(++n,a=l(c.indexOf(\"}\",n)-n),++n,a>1114111&&o()):a=l(4);return a<=65535?String.fromCharCode(a):(a-=65536,String.fromCharCode(55296+(a>>10),56320+(1023&a)))}();case 116:return\"\\t\";case 98:return\"\\b\";case 118:return\"\\v\";case 102:return\"\\f\";case 13:10===c.charCodeAt(n)&&++n;case 10:return\"\";case 56:case 57:o();default:if(e>=48&&e<=55){let a=c.substr(n-1,3).match(/^[0-7]+/)[0],r=parseInt(a,8);return r>255&&(a=a.slice(0,-1),r=parseInt(a,8)),n+=a.length-1,e=c.charCodeAt(n),\"0\"===a&&56!==e&&57!==e||o(),String.fromCharCode(r)}return u(e)?\"\":String.fromCharCode(e)}}function l(e){const a=n;let r=0,i=0;for(let a=0;a<e;++a,++n){let e,s=c.charCodeAt(n);if(95!==s){if(s>=97)e=s-97+10;else if(s>=65)e=s-65+10;else{if(!(s>=48&&s<=57))break;e=s-48}if(e>=16)break;i=s,r=16*r+e}else 95!==i&&0!==a||o(),i=s}return 95!==i&&n-a===e||o(),r}function u(e){return 13===e||10===e}function o(){throw Object.assign(Error(`Parse error ${t}:${c.slice(0,n).split(\"\\n\").length}:${n-c.lastIndexOf(\"\\n\",n-1)}`),{idx:n})}\n", "function e(e,n,r){throw new Error(r?`No known conditions for \"${n}\" specifier in \"${e}\" package`:`Missing \"${n}\" specifier in \"${e}\" package`)}function n(n,i,o,f){let s,u,l=r(n,o),c=function(e){let n=new Set([\"default\",...e.conditions||[]]);return e.unsafe||n.add(e.require?\"require\":\"import\"),e.unsafe||n.add(e.browser?\"browser\":\"node\"),n}(f||{}),a=i[l];if(void 0===a){let e,n,r,t;for(t in i)n&&t.length<n.length||(\"/\"===t[t.length-1]&&l.startsWith(t)?(u=l.substring(t.length),n=t):t.length>1&&(r=t.indexOf(\"*\",1),~r&&(e=RegExp(\"^\"+t.substring(0,r)+\"(.*)\"+t.substring(1+r)+\"$\").exec(l),e&&e[1]&&(u=e[1],n=t))));a=i[n]}return a||e(n,l),s=t(a,c),s||e(n,l,1),u&&function(e,n){let r,t=0,i=e.length,o=/[*]/g,f=/[/]$/;for(;t<i;t++)e[t]=o.test(r=e[t])?r.replace(o,n):f.test(r)?r+n:r}(s,u),s}function r(e,n,r){if(e===n||\".\"===n)return\".\";let t=e+\"/\",i=t.length,o=n.slice(0,i)===t,f=o?n.slice(i):n;return\"#\"===f[0]?f:o||!r?\"./\"===f.slice(0,2)?f:\"./\"+f:f}function t(e,n,r){if(e){if(\"string\"==typeof e)return r&&r.add(e),[e];let i,o;if(Array.isArray(e)){for(o=r||new Set,i=0;i<e.length;i++)t(e[i],n,o);if(!r&&o.size)return[...o]}else for(i in e)if(n.has(i))return t(e[i],n,r)}}function i(e,n={}){let t,i=0,o=n.browser,f=n.fields||[\"module\",\"main\"],s=\"string\"==typeof o;for(o&&!f.includes(\"browser\")&&(f.unshift(\"browser\"),s&&(o=r(e.name,o,!0)));i<f.length;i++)if(t=e[f[i]]){if(\"string\"==typeof t);else{if(\"object\"!=typeof t||\"browser\"!=f[i])continue;if(s&&(t=t[o],null==t))return o}return\"string\"==typeof t?\"./\"+t.replace(/^\\.?\\//,\"\"):t}}function o(e,r,t){let i,o=e.exports;if(o){if(\"string\"==typeof o)o={\".\":o};else for(i in o){\".\"!==i[0]&&(o={\".\":o});break}return n(e.name,o,r||\".\",t)}}function f(e,r,t){if(e.imports)return n(e.name,e.imports,r,t)}function s(e,n,t){return\"#\"===(n=r(e.name,n||\".\"))[0]?f(e,n,t):o(e,n,t)}export{o as exports,f as imports,i as legacy,s as resolve};", "/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n// Hopefully this class will disappear once Temporal lands in JS\n// But for now we have to reinvent the wheel once more!\n\ntype Offset = string | null\n\nlet DATE_TIME_RE = /^(\\d{4}-\\d{2}-\\d{2})?[T ]?(?:(\\d{2}):\\d{2}(?::\\d{2}(?:\\.\\d+)?)?)?(Z|[-+]\\d{2}:\\d{2})?$/i\n\nexport class TomlDate extends Date {\n\t#hasDate = false\n\t#hasTime = false\n\t#offset: Offset = null\n\n\tconstructor(date: string | Date) {\n\t\tlet hasDate = true\n\t\tlet hasTime = true\n\t\tlet offset: Offset = 'Z'\n\n\t\tif (typeof date === 'string') {\n\t\t\tlet match = date.match(DATE_TIME_RE)\n\t\t\tif (match) {\n\t\t\t\tif (!match[1]) {\n\t\t\t\t\thasDate = false\n\t\t\t\t\tdate = `0000-01-01T${date}`\n\t\t\t\t}\n\n\t\t\t\thasTime = !!match[2]\n\t\t\t\t// Make sure to use T instead of a space. Breaks in case of extreme values otherwise.\n\t\t\t\thasTime && date[10] === ' ' && (date = date.replace(' ', 'T'))\n\t\t\t\t// Do not allow rollover hours.\n\t\t\t\tif (match[2] && +match[2] > 23) {\n\t\t\t\t\tdate = ''\n\t\t\t\t} else {\n\t\t\t\t\toffset = match[3] || null\n\t\t\t\t\tdate = date.toUpperCase()\n\t\t\t\t\tif (!offset && hasTime) date += 'Z'\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdate = ''\n\t\t\t}\n\t\t}\n\n\t\tsuper(date)\n\t\tif (!isNaN(this.getTime())) {\n\t\t\tthis.#hasDate = hasDate\n\t\t\tthis.#hasTime = hasTime\n\t\t\tthis.#offset = offset\n\t\t}\n\t}\n\n\tisDateTime() {\n\t\treturn this.#hasDate && this.#hasTime\n\t}\n\n\tisLocal() {\n\t\treturn !this.#hasDate || !this.#hasTime || !this.#offset\n\t}\n\n\tisDate() {\n\t\treturn this.#hasDate && !this.#hasTime\n\t}\n\n\tisTime() {\n\t\treturn this.#hasTime && !this.#hasDate\n\t}\n\n\tisValid() {\n\t\treturn this.#hasDate || this.#hasTime\n\t}\n\n\toverride toISOString() {\n\t\tlet iso = super.toISOString()\n\n\t\t// Local Date\n\t\tif (this.isDate())\n\t\t\treturn iso.slice(0, 10)\n\n\t\t// Local Time\n\t\tif (this.isTime())\n\t\t\treturn iso.slice(11, 23)\n\n\t\t// Local DateTime\n\t\tif (this.#offset === null)\n\t\t\treturn iso.slice(0, -1)\n\n\t\t// Offset DateTime\n\t\tif (this.#offset === 'Z')\n\t\t\treturn iso\n\n\t\t// This part is quite annoying: JS strips the original timezone from the ISO string representation\n\t\t// Instead of using a \"modified\" date and \"Z\", we restore the representation \"as authored\"\n\n\t\tlet offset = (+(this.#offset.slice(1, 3)) * 60) + +(this.#offset.slice(4, 6))\n\t\toffset = this.#offset[0] === '-' ? offset : -offset\n\n\t\tlet offsetDate = new Date(this.getTime() - (offset * 60e3))\n\t\treturn offsetDate.toISOString().slice(0, -1) + this.#offset\n\t}\n\n\tstatic wrapAsOffsetDateTime(jsDate: Date, offset = 'Z') {\n\t\tlet date = new TomlDate(jsDate)\n\t\tdate.#offset = offset\n\t\treturn date\n\t}\n\n\tstatic wrapAsLocalDateTime(jsDate: Date) {\n\t\tlet date = new TomlDate(jsDate)\n\t\tdate.#offset = null\n\t\treturn date\n\t}\n\n\tstatic wrapAsLocalDate(jsDate: Date) {\n\t\tlet date = new TomlDate(jsDate)\n\t\tdate.#hasTime = false\n\t\tdate.#offset = null\n\t\treturn date\n\t}\n\n\tstatic wrapAsLocalTime(jsDate: Date) {\n\t\tlet date = new TomlDate(jsDate)\n\t\tdate.#hasDate = false\n\t\tdate.#offset = null\n\t\treturn date\n\t}\n}\n", "/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\ntype TomlErrorOptions = ErrorOptions & {\n\ttoml: string\n\tptr: number\n}\n\nfunction getLineColFromPtr(string: string, ptr: number): [number, number] {\n\tlet lines = string.slice(0, ptr).split(/\\r\\n|\\n|\\r/g)\n\treturn [lines.length, lines.pop()!.length + 1]\n}\n\nfunction makeCodeBlock(string: string, line: number, column: number) {\n\tlet lines = string.split(/\\r\\n|\\n|\\r/g)\n\tlet codeblock = ''\n\n\tlet numberLen = (Math.log10(line + 1) | 0) + 1\n\n\tfor (let i = line - 1; i <= line + 1; i++) {\n\t\tlet l = lines[i - 1]\n\t\tif (!l) continue\n\n\t\tcodeblock += i.toString().padEnd(numberLen, ' ')\n\t\tcodeblock += ': '\n\t\tcodeblock += l\n\t\tcodeblock += '\\n'\n\n\t\tif (i === line) {\n\t\t\tcodeblock += ' '.repeat(numberLen + column + 2)\n\t\t\tcodeblock += '^\\n'\n\t\t}\n\t}\n\n\treturn codeblock\n}\n\nexport class TomlError extends Error {\n\tline: number\n\tcolumn: number\n\tcodeblock: string\n\n\tconstructor(message: string, options: TomlErrorOptions) {\n\t\tconst [line, column] = getLineColFromPtr(options.toml, options.ptr)\n\t\tconst codeblock = makeCodeBlock(options.toml, line, column)\n\n\t\tsuper(`Invalid TOML document: ${message}\\n\\n${codeblock}`, options)\n\t\tthis.line = line\n\t\tthis.column = column\n\t\tthis.codeblock = codeblock\n\t}\n}\n", "/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { TomlDate } from './date.js'\nimport { TomlError } from './error.js'\n\n// let CTRL_REGEX = /[\\x00-\\x08\\x0f-\\x1f\\x7f]/\nlet INT_REGEX = /^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\\d(_?\\d)*))$/\nlet FLOAT_REGEX = /^[+-]?\\d(_?\\d)*(\\.\\d(_?\\d)*)?([eE][+-]?\\d(_?\\d)*)?$/\nlet LEADING_ZERO = /^[+-]?0[0-9_]/\n\nexport function parseString(str: string, ptr: number): [string, number] {\n\tlet c = str[ptr++]!\n\tlet first = c\n\tlet isLiteral = c === \"'\"\n\tlet isMultiline = c === str[ptr] && c === str[ptr + 1]\n\tif (isMultiline) {\n\t\t// Trim initial newline\n\t\tif (str[ptr += 2] === '\\n') ptr++\n\t\telse if (str[ptr] === '\\r' && str[ptr + 1] === '\\n') ptr += 2\n\t}\n\n\t/*\n\tThe fast path does not seem to bring significant performance gains, so it's commented out.\n\tKept for reference and/or future fafoing.\n\n\tWithout: spec 5.08 \u00B5s/iter 3.88 ipc (99.44% cache) 23.90 branch misses 28.61k cycles 111.01k instructions\n\t 5MB 115.73 ms/iter 2.51 ipc (98.36% cache) 3.12M branch misses 619.30M cycles 1.56G instructions\n\n\tWith: spec 5.09 \u00B5s/iter 3.90 ipc (99.46% cache) 24.42 branch misses 28.57k cycles 111.49k instructions\n\t 5MB 113.89 ms/iter 2.47 ipc (98.38% cache) 3.12M branch misses 611.94M cycles 1.51G instructions\n\n\tif (c === \"'\") {\n\t\t// Literal strings fast path - no transform needs to occur; just grab the str and that's it\n\t\tlet endPtr = str.indexOf(isMultiline ? \"'''\" : \"'\", ptr)\n\t\tif (endPtr < 0) {\n\t\t\tthrow new TomlError(\"unfinished string literal\", { toml: str, ptr })\n\t\t}\n\n\t\tif (isMultiline) {\n\t\t\t// If the string ends with 4-5 quotes, then the first 1-2 are part of the string\n\t\t\tif (str[endPtr + 3] === \"'\") endPtr++\n\t\t\tif (str[endPtr + 3] === \"'\") endPtr++\n\t\t}\n\n\t\tlet string = str.slice(ptr, endPtr)\n\t\tif (CTRL_REGEX.test(string)) {\n\t\t\tlet match = string.match(CTRL_REGEX)!\n\t\t\tthrow new TomlError('control characters are not allowed in strings', { toml: str, ptr: ptr + (match.index ?? 0) })\n\t\t}\n\t\treturn [string, endPtr + (isMultiline ? 3 : 1)]\n\t}\n\t*/\n\n\tlet parsed = ''\n\tlet sliceStart = ptr\n\n\t// states:\n\t// 0 - decoding\n\t// 1 - decoding escape\n\t// 2 - whitespace escape (no newline encountered yet, must fail on non-whitespace)\n\t// 3 - whitespace escape (newline encountered, allowed to transition back to normal decode)\n\tlet state = 0\n\tfor (let i = ptr; i < str.length; i++) {\n\t\tc = str[i]!\n\n\t\t// Deal with newlines first, since that simplifies control character checking and handling across all states\n\t\tif (isMultiline && (c === '\\n' || (c === '\\r' && str[i + 1] === '\\n'))) {\n\t\t\tstate = state && 3\n\t\t}\n\n\t\t// Control characters are banned in TOML, so we throw an error if we encounter them\n\t\telse if ((c < '\\x20' && c !== '\\t') || c === '\\x7f') {\n\t\t\tthrow new TomlError('control characters are not allowed in strings', {\n\t\t\t\ttoml: str,\n\t\t\t\tptr: i,\n\t\t\t})\n\t\t}\n\n\t\t// The string might terminate while we're parsing through a newline escape.\n\t\t// It must have encountered a newline; otherwise, it'll simply fail in another branch.\n\t\telse if ((!state || state === 3) && c === first && (!isMultiline || (str[i + 1] === first && str[i + 2] === first))) {\n\t\t\tif (isMultiline) {\n\t\t\t\t// If the string ends with 4-5 quotes, then the first 1-2 are part of the string\n\t\t\t\tif (str[i + 3] === first) i++\n\t\t\t\tif (str[i + 3] === first) i++\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\t// If we're in a newline escape still, then there's nothing to add.\n\t\t\t\t// Also try to avoid concat if there's nothing to add to parsed, or nothing has been added to parsed.\n\t\t\t\tstate ? parsed : parsed + str.slice(sliceStart, i),\n\t\t\t\ti + (isMultiline ? 3 : 1),\n\t\t\t]\n\t\t}\n\n\t\telse if (!state) {\n\t\t\tif (!isLiteral && c === '\\\\') {\n\t\t\t\tparsed += str.slice(sliceStart, (sliceStart = i))\n\t\t\t\tstate = 1\n\t\t\t}\n\t\t}\n\n\t\telse if (state === 1) {\n\t\t\tif (c === 'x' || c === 'u' || c === 'U') { // Unicode escape\n\t\t\t\tlet value = 0\n\t\t\t\tlet len = c === 'x' ? 2 : c === 'u' ? 4 : 8\n\t\t\t\tfor (let j = 0; j < len; j++, i++) {\n\t\t\t\t\tlet hex = str.charCodeAt(i + 1)\n\t\t\t\t\tlet digit =\n\t\t\t\t\t\t/* 0-9 */ hex >= 0x30 && hex <= 0x39 ? hex - 0x30 :\n\t\t\t\t\t\t/* A-F */ hex >= 0x41 && hex <= 0x46 ? hex - 0x41 + 10 :\n\t\t\t\t\t\t/* a-f */ hex >= 0x61 && hex <= 0x66 ? hex - 0x61 + 10 : -1\n\n\t\t\t\t\tif (digit < 0) throw new TomlError('invalid non-hex character in unicode escape', { toml: str, ptr: i + 1 })\n\t\t\t\t\tvalue = (value << 4) | digit\n\t\t\t\t}\n\n\t\t\t\t// Because JS does bitwise on signed 32bit integers, all 0xfzzzzzzz values are actually seen as negative\n\t\t\t\tif (value < 0 || value > 0x10ffff || (value >= 0xd800 && value <= 0xdfff)) {\n\t\t\t\t\tthrow new TomlError('invalid unicode escape', { toml: str, ptr: i })\n\t\t\t\t}\n\n\t\t\t\tparsed += String.fromCodePoint(value)\n\t\t\t\tsliceStart = i + 1\n\t\t\t\tstate = 0\n\t\t\t}\n\n\t\t\telse if (c === ' ' || c === '\\t') { // If it was a newline, it'd have been handled earlier\n\t\t\t\tstate = 2\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\tif (c === 'b') parsed += '\\b'\n\t\t\t\telse if (c === 't') parsed += '\\t'\n\t\t\t\telse if (c === 'n') parsed += '\\n'\n\t\t\t\telse if (c === 'f') parsed += '\\f'\n\t\t\t\telse if (c === 'r') parsed += '\\r'\n\t\t\t\telse if (c === 'e') parsed += '\\x1b'\n\t\t\t\telse if (c === '\"') parsed += '\"'\n\t\t\t\telse if (c === '\\\\') parsed += '\\\\'\n\t\t\t\telse throw new TomlError('unrecognized escape sequence', { toml: str, ptr: i })\n\t\t\t\tsliceStart = i + 1\n\t\t\t\tstate = 0\n\t\t\t}\n\t\t}\n\n\t\telse if (c !== ' ' && c !== '\\t') {\n\t\t\tif (state === 2) {\n\t\t\t\tthrow new TomlError('invalid escape: only line-ending whitespace may be escaped', {\n\t\t\t\t\ttoml: str,\n\t\t\t\t\tptr: sliceStart,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// State cannot be zero, or we'd have branched earlier already.\n\t\t\t// If it's a backslash, immediately transition to the escape state so it can be processed.\n\t\t\tstate = !isLiteral && c === '\\\\' ? 1 : 0\n\t\t\tsliceStart = i\n\t\t}\n\t}\n\n\tthrow new TomlError('unfinished string', { toml: str, ptr })\n}\n\nexport type IntegersAsBigInt = undefined | boolean | 'asNeeded'\n\nexport function parseValue(value: string, toml: string, ptr: number, integersAsBigInt: IntegersAsBigInt): boolean | number | bigint | TomlDate {\n\t// Constant values\n\tif (value === 'true') return true\n\tif (value === 'false') return false\n\tif (value === '-inf') return -Infinity\n\tif (value === 'inf' || value === '+inf') return Infinity\n\tif (value === 'nan' || value === '+nan' || value === '-nan') return NaN\n\n\t// Avoid FP representation of -0\n\tif (value === '-0') return integersAsBigInt ? 0n : 0\n\n\t// Numbers\n\tlet isInt = INT_REGEX.test(value)\n\tif (isInt || FLOAT_REGEX.test(value)) {\n\t\tif (LEADING_ZERO.test(value)) {\n\t\t\tthrow new TomlError('leading zeroes are not allowed', {\n\t\t\t\ttoml: toml,\n\t\t\t\tptr: ptr,\n\t\t\t})\n\t\t}\n\n\t\tvalue = value.replace(/_/g, '')\n\t\tlet numeric: number | bigint = +value\n\n\t\tif (isNaN(numeric)) {\n\t\t\tthrow new TomlError('invalid number', {\n\t\t\t\ttoml: toml,\n\t\t\t\tptr: ptr,\n\t\t\t})\n\t\t}\n\n\t\tif (isInt) {\n\t\t\tif ((isInt = !Number.isSafeInteger(numeric)) && !integersAsBigInt) {\n\t\t\t\tthrow new TomlError('integer value cannot be represented losslessly', {\n\t\t\t\t\ttoml: toml,\n\t\t\t\t\tptr: ptr,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (isInt || integersAsBigInt === true) numeric = BigInt(value)\n\t\t}\n\n\t\treturn numeric\n\t}\n\n\tconst date = new TomlDate(value)\n\tif (!date.isValid()) {\n\t\tthrow new TomlError('invalid value', {\n\t\t\ttoml: toml,\n\t\t\tptr: ptr,\n\t\t})\n\t}\n\n\treturn date\n}\n", "/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport type { TomlDate } from './date.js'\nimport { TomlError } from './error.js'\n\nexport type TomlPrimitive = string | number | bigint | boolean | TomlDate\nexport type TomlTable = { [key: string]: TomlValue }\nexport type TomlValue = TomlPrimitive | TomlValue[] | TomlTable\n\nexport type TomlTableWithoutBigInt = { [key: string]: TomlValueWithoutBigInt }\nexport type TomlValueWithoutBigInt = Exclude<TomlPrimitive, bigint> | TomlValueWithoutBigInt[] | TomlTableWithoutBigInt\n\nexport function indexOfNewline(str: string, start = 0, end = str.length) {\n\tlet idx = str.indexOf('\\n', start)\n\tif (str[idx - 1] === '\\r') idx--\n\treturn idx <= end ? idx : -1\n}\n\nexport function skipComment(str: string, ptr: number) {\n\tfor (let i = ptr; i < str.length; i++) {\n\t\tlet c = str[i]!\n\t\tif (c === '\\n')\n\t\t\treturn i\n\n\t\tif (c === '\\r' && str[i + 1] === '\\n')\n\t\t\treturn i + 1\n\n\t\tif ((c < '\\x20' && c !== '\\t') || c === '\\x7f') {\n\t\t\tthrow new TomlError('control characters are not allowed in comments', {\n\t\t\t\ttoml: str,\n\t\t\t\tptr: ptr,\n\t\t\t})\n\t\t}\n\t}\n\n\treturn str.length\n}\n\nexport function skipVoid(str: string, ptr: number, banNewLines?: boolean, banComments?: boolean): number {\n\tlet c\n\twhile (1) {\n\t\twhile ((c = str[ptr]) === ' ' || c === '\\t' || (!banNewLines && (c === '\\n' || (c === '\\r' && str[ptr + 1] === '\\n')))) ptr++\n\n\t\t// Tucking the return statement here would save 5 characters >:)\n\t\t// But TypeScript fails to detect there is no way to exit the loop so it complains about the lack of final return\n\t\tif (banComments || c !== '#') break\n\n\t\tptr = skipComment(str, ptr)\n\t}\n\n\treturn ptr\n}\n\nexport function skipUntil(str: string, ptr: number, sep: string, end?: string, banNewLines: boolean = false) {\n\tif (!end) {\n\t\tptr = indexOfNewline(str, ptr)\n\t\treturn ptr < 0 ? str.length : ptr\n\t}\n\n\tfor (let i = ptr; i < str.length; i++) {\n\t\tlet c = str[i]\n\t\tif (c === '#') {\n\t\t\ti = indexOfNewline(str, i)\n\t\t} else if (c === sep) {\n\t\t\treturn i + 1\n\t\t} else if (c === end || (banNewLines && (c === '\\n' || (c === '\\r' && str[i + 1] === '\\n')))) {\n\t\t\treturn i\n\t\t}\n\t}\n\n\tthrow new TomlError('cannot find end of structure', {\n\t\ttoml: str,\n\t\tptr: ptr,\n\t})\n}\n", "/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { type IntegersAsBigInt, parseString, parseValue } from './primitive.js'\nimport { parseArray, parseInlineTable } from './struct.js'\nimport { skipVoid, skipUntil, skipComment, type TomlValue } from './util.js'\nimport { TomlError } from './error.js'\n\nfunction sliceAndTrimEndOf(str: string, startPtr: number, endPtr: number): [string, number] {\n\tlet value = str.slice(startPtr, endPtr)\n\n\tlet commentIdx = value.indexOf('#')\n\tif (commentIdx > -1) {\n\t\t// The call to skipComment allows to \"validate\" the comment\n\t\t// (absence of control characters)\n\t\tskipComment(str, commentIdx)\n\t\tvalue = value.slice(0, commentIdx)\n\t}\n\n\treturn [value.trimEnd(), commentIdx]\n}\n\nexport function extractValue(str: string, ptr: number, end: string | undefined, depth: number, integersAsBigInt: IntegersAsBigInt): [TomlValue, number] {\n\tif (depth === 0) {\n\t\tthrow new TomlError('document contains excessively nested structures. aborting.', {\n\t\t\ttoml: str,\n\t\t\tptr: ptr,\n\t\t})\n\t}\n\n\tlet c = str[ptr]\n\tif (c === '[' || c === '{') {\n\t\tlet [value, endPtr] = c === '['\n\t\t\t? parseArray(str, ptr, depth, integersAsBigInt)\n\t\t\t: parseInlineTable(str, ptr, depth, integersAsBigInt)\n\n\t\tif (end) {\n\t\t\tendPtr = skipVoid(str, endPtr)\n\t\t\tif (str[endPtr] === ',') endPtr++\n\t\t\telse if (str[endPtr] !== end) {\n\t\t\t\tthrow new TomlError('expected comma or end of structure', {\n\t\t\t\t\ttoml: str,\n\t\t\t\t\tptr: endPtr,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn [value, endPtr]\n\t}\n\n\tif (c === '\"' || c === \"'\") {\n\t\tlet [parsed, endPtr] = parseString(str, ptr)\n\t\tif (end) {\n\t\t\tendPtr = skipVoid(str, endPtr)\n\n\t\t\tif (str[endPtr] && str[endPtr] !== ',' && str[endPtr] !== end && str[endPtr] !== '\\n' && str[endPtr] !== '\\r') {\n\t\t\t\tthrow new TomlError('unexpected character encountered', {\n\t\t\t\t\ttoml: str,\n\t\t\t\t\tptr: endPtr,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (str[endPtr] === ',') endPtr++\n\t\t}\n\n\t\treturn [parsed, endPtr]\n\t}\n\n\tlet endPtr = skipUntil(str, ptr, ',', end)\n\tlet slice = sliceAndTrimEndOf(str, ptr, endPtr - (str[endPtr - 1] === ',' ? 1 : 0))\n\tif (!slice[0]) {\n\t\tthrow new TomlError('incomplete key-value declaration: no value specified', {\n\t\t\ttoml: str,\n\t\t\tptr: ptr,\n\t\t})\n\t}\n\n\tif (end && slice[1] > -1) {\n\t\tendPtr = skipVoid(str, ptr + slice[1])\n\t\tif (str[endPtr] === ',') endPtr++\n\t}\n\n\treturn [\n\t\tparseValue(slice[0], str, ptr, integersAsBigInt),\n\t\tendPtr,\n\t]\n}\n", "/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { type IntegersAsBigInt, parseString } from './primitive.js'\nimport { extractValue } from './extract.js'\nimport { indexOfNewline, skipComment, skipVoid, type TomlTable, type TomlValue } from './util.js'\nimport { TomlError } from './error.js'\n\nlet KEY_PART_RE = /^[a-zA-Z0-9-_]+[ \\t]*$/\n\nexport function parseKey(str: string, ptr: number, end = '='): [string[], number] {\n\tlet dot = ptr - 1\n\tlet parsed = []\n\n\tlet endPtr = str.indexOf(end, ptr)\n\tif (endPtr < 0) {\n\t\tthrow new TomlError('incomplete key-value: cannot find end of key', {\n\t\t\ttoml: str,\n\t\t\tptr: ptr,\n\t\t})\n\t}\n\n\tdo {\n\t\tlet c = str[(ptr = ++dot)]\n\n\t\t// If it's whitespace, ignore\n\t\tif (c !== ' ' && c !== '\\t') {\n\t\t\t// If it's a string\n\t\t\tif (c === '\"' || c === \"'\") {\n\t\t\t\tif (c === str[ptr + 1] && c === str[ptr + 2]) {\n\t\t\t\t\tthrow new TomlError('multiline strings are not allowed in keys', {\n\t\t\t\t\t\ttoml: str,\n\t\t\t\t\t\tptr: ptr,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tlet [part, eos] = parseString(str, ptr)\n\t\t\t\tdot = str.indexOf('.', eos)\n\n\t\t\t\tlet strEnd = str.slice(eos, dot < 0 || dot > endPtr ? endPtr : dot)\n\t\t\t\tlet newLine = indexOfNewline(strEnd)\n\t\t\t\tif (newLine > -1) {\n\t\t\t\t\tthrow new TomlError('newlines are not allowed in keys', {\n\t\t\t\t\t\ttoml: str,\n\t\t\t\t\t\tptr: ptr + dot + newLine,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (strEnd.trimStart()) {\n\t\t\t\t\tthrow new TomlError('found extra tokens after the string part', {\n\t\t\t\t\t\ttoml: str,\n\t\t\t\t\t\tptr: eos,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (endPtr < eos) {\n\t\t\t\t\tendPtr = str.indexOf(end, eos)\n\t\t\t\t\tif (endPtr < 0) {\n\t\t\t\t\t\tthrow new TomlError('incomplete key-value: cannot find end of key', {\n\t\t\t\t\t\t\ttoml: str,\n\t\t\t\t\t\t\tptr: ptr,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tparsed.push(part)\n\t\t\t} else {\n\t\t\t\t// Normal raw key part consumption and validation\n\t\t\t\tdot = str.indexOf('.', ptr)\n\t\t\t\tlet part = str.slice(ptr, dot < 0 || dot > endPtr ? endPtr : dot)\n\t\t\t\tif (!KEY_PART_RE.test(part)) {\n\t\t\t\t\tthrow new TomlError('only letter, numbers, dashes and underscores are allowed in keys', {\n\t\t\t\t\t\ttoml: str,\n\t\t\t\t\t\tptr: ptr,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tparsed.push(part.trimEnd())\n\t\t\t}\n\t\t}\n\t\t// Until there's no more dot\n\t} while (dot + 1 && dot < endPtr)\n\n\treturn [parsed, skipVoid(str, endPtr + 1, true, true)]\n}\n\nexport function parseInlineTable(str: string, ptr: number, depth: number, integersAsBigInt: IntegersAsBigInt): [TomlTable, number] {\n\tlet res: TomlTable = {}\n\tlet seen = new Set()\n\tlet c: string\n\n\tptr++\n\twhile ((c = str[ptr++]!) !== '}' && c) {\n\t\tif (c === ',') {\n\t\t\tthrow new TomlError('expected value, found comma', {\n\t\t\t\ttoml: str,\n\t\t\t\tptr: ptr - 1,\n\t\t\t})\n\t\t} else if (c === '#') ptr = skipComment(str, ptr)\n\t\telse if (c !== ' ' && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n\t\t\tlet k: string\n\t\t\tlet t: any = res\n\t\t\tlet hasOwn = false\n\n\t\t\tlet [key, keyEndPtr] = parseKey(str, ptr - 1)\n\t\t\tfor (let i = 0; i < key.length; i++) {\n\t\t\t\tif (i) t = hasOwn! ? t[k!] : (t[k!] = {})\n\n\t\t\t\tk = key[i]!\n\t\t\t\tif ((hasOwn = Object.hasOwn(t, k)) && (typeof t[k] !== 'object' || seen.has(t[k]))) {\n\t\t\t\t\tthrow new TomlError('trying to redefine an already defined value', {\n\t\t\t\t\t\ttoml: str,\n\t\t\t\t\t\tptr: ptr,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (!hasOwn && k === '__proto__') {\n\t\t\t\t\tObject.defineProperty(t, k, { enumerable: true, configurable: true, writable: true })\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hasOwn) {\n\t\t\t\tthrow new TomlError('trying to redefine an already defined value', {\n\t\t\t\t\ttoml: str,\n\t\t\t\t\tptr: ptr,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tlet [value, valueEndPtr] = extractValue(str, keyEndPtr, '}', depth - 1, integersAsBigInt)\n\t\t\tseen.add(value)\n\n\t\t\tt[k!] = value\n\t\t\tptr = valueEndPtr\n\t\t}\n\t}\n\n\tif (!c) {\n\t\tthrow new TomlError('unfinished table encountered', {\n\t\t\ttoml: str,\n\t\t\tptr: ptr,\n\t\t})\n\t}\n\n\treturn [res, ptr]\n}\n\nexport function parseArray(str: string, ptr: number, depth: number, integersAsBigInt: IntegersAsBigInt): [TomlValue[], number] {\n\tlet res: TomlValue[] = []\n\tlet c\n\n\tptr++\n\twhile ((c = str[ptr++]) !== ']' && c) {\n\t\tif (c === ',') {\n\t\t\tthrow new TomlError('expected value, found comma', {\n\t\t\t\ttoml: str,\n\t\t\t\tptr: ptr - 1,\n\t\t\t})\n\t\t} else if (c === '#') ptr = skipComment(str, ptr)\n\t\telse if (c !== ' ' && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n\t\t\tlet e = extractValue(str, ptr - 1, ']', depth - 1, integersAsBigInt)\n\t\t\tres.push(e[0])\n\t\t\tptr = e[1]\n\t\t}\n\t}\n\n\tif (!c) {\n\t\tthrow new TomlError('unfinished array encountered', {\n\t\t\ttoml: str,\n\t\t\tptr: ptr,\n\t\t})\n\t}\n\n\treturn [res, ptr]\n}\n", "/*!\n * Copyright (c) Squirrel Chat et al., All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport type { IntegersAsBigInt } from './primitive.js'\nimport { parseKey } from './struct.js'\nimport { extractValue } from './extract.js'\nimport { skipVoid, type TomlTable, type TomlTableWithoutBigInt } from './util.js'\nimport { TomlError } from './error.js'\n\nconst enum Type { DOTTED, EXPLICIT, ARRAY, ARRAY_DOTTED }\n\ntype MetaState = { t: Type; d: boolean; i: number; c: MetaRecord }\ntype MetaRecord = { [k: string]: MetaState }\ntype PeekResult = [string, TomlTable, MetaRecord] | null\n\nfunction peekTable(key: string[], table: TomlTable, meta: MetaRecord, type: Type): PeekResult {\n\tlet t: any = table\n\tlet m = meta\n\tlet k: string\n\tlet hasOwn = false\n\tlet state: MetaState\n\n\tfor (let i = 0; i < key.length; i++) {\n\t\tif (i) {\n\t\t\tt = hasOwn! ? t[k!] : (t[k!] = {})\n\t\t\tm = (state = m[k!]!).c\n\n\t\t\tif (type === Type.DOTTED && (state.t === Type.EXPLICIT || state.t === Type.ARRAY)) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tif (state.t === Type.ARRAY) {\n\t\t\t\tlet l = t.length - 1\n\t\t\t\tt = t[l]\n\t\t\t\tm = m[l]!.c\n\t\t\t}\n\t\t}\n\n\t\tk = key[i]!\n\t\tif ((hasOwn = Object.hasOwn(t, k)) && m[k]?.t === Type.DOTTED && m[k]?.d) {\n\t\t\treturn null\n\t\t}\n\n\t\tif (!hasOwn) {\n\t\t\tif (k === '__proto__') {\n\t\t\t\tObject.defineProperty(t, k, { enumerable: true, configurable: true, writable: true })\n\t\t\t\tObject.defineProperty(m, k, { enumerable: true, configurable: true, writable: true })\n\t\t\t}\n\n\t\t\tm[k] = {\n\t\t\t\tt: i < key.length - 1 && type === Type.ARRAY\n\t\t\t\t\t? Type.ARRAY_DOTTED\n\t\t\t\t\t: type,\n\t\t\t\td: false,\n\t\t\t\ti: 0,\n\t\t\t\tc: {},\n\t\t\t}\n\t\t}\n\t}\n\n\tstate = m[k!]!\n\tif (state.t !== type && !(type === Type.EXPLICIT && state.t === Type.ARRAY_DOTTED)) {\n\t\t// Bad key type!\n\t\treturn null\n\t}\n\n\tif (type === Type.ARRAY) {\n\t\tif (!state.d) {\n\t\t\tstate.d = true\n\t\t\tt[k!] = []\n\t\t}\n\n\t\tt[k!].push(t = {})\n\t\tstate.c[state.i++] = (state = { t: Type.EXPLICIT, d: false, i: 0, c: {} })\n\t}\n\n\tif (state.d) {\n\t\t// Redefining a table!\n\t\treturn null\n\t}\n\n\tstate.d = true\n\tif (type === Type.EXPLICIT) {\n\t\tt = hasOwn ? t[k!] : (t[k!] = {})\n\t} else if (type === Type.DOTTED && hasOwn) {\n\t\treturn null\n\t}\n\n\treturn [k!, t, state.c]\n}\n\nexport interface ParseOptions {\n\tmaxDepth?: number\n\tintegersAsBigInt?: IntegersAsBigInt\n}\n\nexport function parse(toml: string, options?: ParseOptions & { integersAsBigInt: Exclude<IntegersAsBigInt, undefined | false> }): TomlTable\nexport function parse(toml: string, options?: ParseOptions): TomlTableWithoutBigInt\nexport function parse(toml: string, { maxDepth = 1000, integersAsBigInt }: ParseOptions = {}): TomlTable {\n\tlet res = {}\n\tlet meta = {}\n\n\tlet tbl = res\n\tlet m = meta\n\n\tfor (let ptr = skipVoid(toml, 0); ptr < toml.length;) {\n\t\tif (toml[ptr] === '[') {\n\t\t\tlet isTableArray = toml[++ptr] === '['\n\t\t\tlet k = parseKey(toml, (ptr += +isTableArray), ']')\n\n\t\t\tif (isTableArray) {\n\t\t\t\tif (toml[k[1] - 1] !== ']') {\n\t\t\t\t\tthrow new TomlError('expected end of table declaration', {\n\t\t\t\t\t\ttoml: toml,\n\t\t\t\t\t\tptr: k[1] - 1,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tk[1]++\n\t\t\t}\n\n\t\t\tlet p = peekTable(k[0], res, meta, isTableArray ? Type.ARRAY : Type.EXPLICIT)\n\t\t\tif (!p) {\n\t\t\t\tthrow new TomlError('trying to redefine an already defined table or value', {\n\t\t\t\t\ttoml: toml,\n\t\t\t\t\tptr: ptr,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tm = p[2]\n\t\t\ttbl = p[1]\n\t\t\tptr = k[1]\n\t\t} else {\n\t\t\tlet k = parseKey(toml, ptr)\n\t\t\tlet p = peekTable(k[0], tbl, m, Type.DOTTED)\n\t\t\tif (!p) {\n\t\t\t\tthrow new TomlError('trying to redefine an already defined table or value', {\n\t\t\t\t\ttoml: toml,\n\t\t\t\t\tptr: ptr,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tlet v = extractValue(toml, k[1], void 0, maxDepth, integersAsBigInt)\n\t\t\tp[1][p[0]] = v[0]\n\t\t\tptr = v[1]\n\t\t}\n\n\t\tptr = skipVoid(toml, ptr, true)\n\t\tif (toml[ptr] && toml[ptr] !== '\\n' && toml[ptr] !== '\\r') {\n\t\t\tthrow new TomlError('each key-value declaration must be followed by an end-of-line', {\n\t\t\t\ttoml: toml,\n\t\t\t\tptr: ptr,\n\t\t\t})\n\t\t}\n\t\tptr = skipVoid(toml, ptr)\n\t}\n\n\treturn res\n}\n", "export var ContextualKeyword; (function (ContextualKeyword) {\n const NONE = 0; ContextualKeyword[ContextualKeyword[\"NONE\"] = NONE] = \"NONE\";\n const _abstract = NONE + 1; ContextualKeyword[ContextualKeyword[\"_abstract\"] = _abstract] = \"_abstract\";\n const _accessor = _abstract + 1; ContextualKeyword[ContextualKeyword[\"_accessor\"] = _accessor] = \"_accessor\";\n const _as = _accessor + 1; ContextualKeyword[ContextualKeyword[\"_as\"] = _as] = \"_as\";\n const _assert = _as + 1; ContextualKeyword[ContextualKeyword[\"_assert\"] = _assert] = \"_assert\";\n const _asserts = _assert + 1; ContextualKeyword[ContextualKeyword[\"_asserts\"] = _asserts] = \"_asserts\";\n const _async = _asserts + 1; ContextualKeyword[ContextualKeyword[\"_async\"] = _async] = \"_async\";\n const _await = _async + 1; ContextualKeyword[ContextualKeyword[\"_await\"] = _await] = \"_await\";\n const _checks = _await + 1; ContextualKeyword[ContextualKeyword[\"_checks\"] = _checks] = \"_checks\";\n const _constructor = _checks + 1; ContextualKeyword[ContextualKeyword[\"_constructor\"] = _constructor] = \"_constructor\";\n const _declare = _constructor + 1; ContextualKeyword[ContextualKeyword[\"_declare\"] = _declare] = \"_declare\";\n const _enum = _declare + 1; ContextualKeyword[ContextualKeyword[\"_enum\"] = _enum] = \"_enum\";\n const _exports = _enum + 1; ContextualKeyword[ContextualKeyword[\"_exports\"] = _exports] = \"_exports\";\n const _from = _exports + 1; ContextualKeyword[ContextualKeyword[\"_from\"] = _from] = \"_from\";\n const _get = _from + 1; ContextualKeyword[ContextualKeyword[\"_get\"] = _get] = \"_get\";\n const _global = _get + 1; ContextualKeyword[ContextualKeyword[\"_global\"] = _global] = \"_global\";\n const _implements = _global + 1; ContextualKeyword[ContextualKeyword[\"_implements\"] = _implements] = \"_implements\";\n const _infer = _implements + 1; ContextualKeyword[ContextualKeyword[\"_infer\"] = _infer] = \"_infer\";\n const _interface = _infer + 1; ContextualKeyword[ContextualKeyword[\"_interface\"] = _interface] = \"_interface\";\n const _is = _interface + 1; ContextualKeyword[ContextualKeyword[\"_is\"] = _is] = \"_is\";\n const _keyof = _is + 1; ContextualKeyword[ContextualKeyword[\"_keyof\"] = _keyof] = \"_keyof\";\n const _mixins = _keyof + 1; ContextualKeyword[ContextualKeyword[\"_mixins\"] = _mixins] = \"_mixins\";\n const _module = _mixins + 1; ContextualKeyword[ContextualKeyword[\"_module\"] = _module] = \"_module\";\n const _namespace = _module + 1; ContextualKeyword[ContextualKeyword[\"_namespace\"] = _namespace] = \"_namespace\";\n const _of = _namespace + 1; ContextualKeyword[ContextualKeyword[\"_of\"] = _of] = \"_of\";\n const _opaque = _of + 1; ContextualKeyword[ContextualKeyword[\"_opaque\"] = _opaque] = \"_opaque\";\n const _out = _opaque + 1; ContextualKeyword[ContextualKeyword[\"_out\"] = _out] = \"_out\";\n const _override = _out + 1; ContextualKeyword[ContextualKeyword[\"_override\"] = _override] = \"_override\";\n const _private = _override + 1; ContextualKeyword[ContextualKeyword[\"_private\"] = _private] = \"_private\";\n const _protected = _private + 1; ContextualKeyword[ContextualKeyword[\"_protected\"] = _protected] = \"_protected\";\n const _proto = _protected + 1; ContextualKeyword[ContextualKeyword[\"_proto\"] = _proto] = \"_proto\";\n const _public = _proto + 1; ContextualKeyword[ContextualKeyword[\"_public\"] = _public] = \"_public\";\n const _readonly = _public + 1; ContextualKeyword[ContextualKeyword[\"_readonly\"] = _readonly] = \"_readonly\";\n const _require = _readonly + 1; ContextualKeyword[ContextualKeyword[\"_require\"] = _require] = \"_require\";\n const _satisfies = _require + 1; ContextualKeyword[ContextualKeyword[\"_satisfies\"] = _satisfies] = \"_satisfies\";\n const _set = _satisfies + 1; ContextualKeyword[ContextualKeyword[\"_set\"] = _set] = \"_set\";\n const _static = _set + 1; ContextualKeyword[ContextualKeyword[\"_static\"] = _static] = \"_static\";\n const _symbol = _static + 1; ContextualKeyword[ContextualKeyword[\"_symbol\"] = _symbol] = \"_symbol\";\n const _type = _symbol + 1; ContextualKeyword[ContextualKeyword[\"_type\"] = _type] = \"_type\";\n const _unique = _type + 1; ContextualKeyword[ContextualKeyword[\"_unique\"] = _unique] = \"_unique\";\n const _using = _unique + 1; ContextualKeyword[ContextualKeyword[\"_using\"] = _using] = \"_using\";\n})(ContextualKeyword || (ContextualKeyword = {}));\n", "// Generated file, do not edit! Run \"yarn generate\" to re-generate this file.\n/* istanbul ignore file */\n/**\n * Enum of all token types, with bit fields to signify meaningful properties.\n */\nexport var TokenType; (function (TokenType) {\n // Precedence 0 means not an operator; otherwise it is a positive number up to 12.\n const PRECEDENCE_MASK = 0xf; TokenType[TokenType[\"PRECEDENCE_MASK\"] = PRECEDENCE_MASK] = \"PRECEDENCE_MASK\";\n const IS_KEYWORD = 1 << 4; TokenType[TokenType[\"IS_KEYWORD\"] = IS_KEYWORD] = \"IS_KEYWORD\";\n const IS_ASSIGN = 1 << 5; TokenType[TokenType[\"IS_ASSIGN\"] = IS_ASSIGN] = \"IS_ASSIGN\";\n const IS_RIGHT_ASSOCIATIVE = 1 << 6; TokenType[TokenType[\"IS_RIGHT_ASSOCIATIVE\"] = IS_RIGHT_ASSOCIATIVE] = \"IS_RIGHT_ASSOCIATIVE\";\n const IS_PREFIX = 1 << 7; TokenType[TokenType[\"IS_PREFIX\"] = IS_PREFIX] = \"IS_PREFIX\";\n const IS_POSTFIX = 1 << 8; TokenType[TokenType[\"IS_POSTFIX\"] = IS_POSTFIX] = \"IS_POSTFIX\";\n const IS_EXPRESSION_START = 1 << 9; TokenType[TokenType[\"IS_EXPRESSION_START\"] = IS_EXPRESSION_START] = \"IS_EXPRESSION_START\";\n\n const num = 512; TokenType[TokenType[\"num\"] = num] = \"num\"; // num startsExpr\n const bigint = 1536; TokenType[TokenType[\"bigint\"] = bigint] = \"bigint\"; // bigint startsExpr\n const decimal = 2560; TokenType[TokenType[\"decimal\"] = decimal] = \"decimal\"; // decimal startsExpr\n const regexp = 3584; TokenType[TokenType[\"regexp\"] = regexp] = \"regexp\"; // regexp startsExpr\n const string = 4608; TokenType[TokenType[\"string\"] = string] = \"string\"; // string startsExpr\n const name = 5632; TokenType[TokenType[\"name\"] = name] = \"name\"; // name startsExpr\n const eof = 6144; TokenType[TokenType[\"eof\"] = eof] = \"eof\"; // eof\n const bracketL = 7680; TokenType[TokenType[\"bracketL\"] = bracketL] = \"bracketL\"; // [ startsExpr\n const bracketR = 8192; TokenType[TokenType[\"bracketR\"] = bracketR] = \"bracketR\"; // ]\n const braceL = 9728; TokenType[TokenType[\"braceL\"] = braceL] = \"braceL\"; // { startsExpr\n const braceBarL = 10752; TokenType[TokenType[\"braceBarL\"] = braceBarL] = \"braceBarL\"; // {| startsExpr\n const braceR = 11264; TokenType[TokenType[\"braceR\"] = braceR] = \"braceR\"; // }\n const braceBarR = 12288; TokenType[TokenType[\"braceBarR\"] = braceBarR] = \"braceBarR\"; // |}\n const parenL = 13824; TokenType[TokenType[\"parenL\"] = parenL] = \"parenL\"; // ( startsExpr\n const parenR = 14336; TokenType[TokenType[\"parenR\"] = parenR] = \"parenR\"; // )\n const comma = 15360; TokenType[TokenType[\"comma\"] = comma] = \"comma\"; // ,\n const semi = 16384; TokenType[TokenType[\"semi\"] = semi] = \"semi\"; // ;\n const colon = 17408; TokenType[TokenType[\"colon\"] = colon] = \"colon\"; // :\n const doubleColon = 18432; TokenType[TokenType[\"doubleColon\"] = doubleColon] = \"doubleColon\"; // ::\n const dot = 19456; TokenType[TokenType[\"dot\"] = dot] = \"dot\"; // .\n const question = 20480; TokenType[TokenType[\"question\"] = question] = \"question\"; // ?\n const questionDot = 21504; TokenType[TokenType[\"questionDot\"] = questionDot] = \"questionDot\"; // ?.\n const arrow = 22528; TokenType[TokenType[\"arrow\"] = arrow] = \"arrow\"; // =>\n const template = 23552; TokenType[TokenType[\"template\"] = template] = \"template\"; // template\n const ellipsis = 24576; TokenType[TokenType[\"ellipsis\"] = ellipsis] = \"ellipsis\"; // ...\n const backQuote = 25600; TokenType[TokenType[\"backQuote\"] = backQuote] = \"backQuote\"; // `\n const dollarBraceL = 27136; TokenType[TokenType[\"dollarBraceL\"] = dollarBraceL] = \"dollarBraceL\"; // ${ startsExpr\n const at = 27648; TokenType[TokenType[\"at\"] = at] = \"at\"; // @\n const hash = 29184; TokenType[TokenType[\"hash\"] = hash] = \"hash\"; // # startsExpr\n const eq = 29728; TokenType[TokenType[\"eq\"] = eq] = \"eq\"; // = isAssign\n const assign = 30752; TokenType[TokenType[\"assign\"] = assign] = \"assign\"; // _= isAssign\n const preIncDec = 32640; TokenType[TokenType[\"preIncDec\"] = preIncDec] = \"preIncDec\"; // ++/-- prefix postfix startsExpr\n const postIncDec = 33664; TokenType[TokenType[\"postIncDec\"] = postIncDec] = \"postIncDec\"; // ++/-- prefix postfix startsExpr\n const bang = 34432; TokenType[TokenType[\"bang\"] = bang] = \"bang\"; // ! prefix startsExpr\n const tilde = 35456; TokenType[TokenType[\"tilde\"] = tilde] = \"tilde\"; // ~ prefix startsExpr\n const pipeline = 35841; TokenType[TokenType[\"pipeline\"] = pipeline] = \"pipeline\"; // |> prec:1\n const nullishCoalescing = 36866; TokenType[TokenType[\"nullishCoalescing\"] = nullishCoalescing] = \"nullishCoalescing\"; // ?? prec:2\n const logicalOR = 37890; TokenType[TokenType[\"logicalOR\"] = logicalOR] = \"logicalOR\"; // || prec:2\n const logicalAND = 38915; TokenType[TokenType[\"logicalAND\"] = logicalAND] = \"logicalAND\"; // && prec:3\n const bitwiseOR = 39940; TokenType[TokenType[\"bitwiseOR\"] = bitwiseOR] = \"bitwiseOR\"; // | prec:4\n const bitwiseXOR = 40965; TokenType[TokenType[\"bitwiseXOR\"] = bitwiseXOR] = \"bitwiseXOR\"; // ^ prec:5\n const bitwiseAND = 41990; TokenType[TokenType[\"bitwiseAND\"] = bitwiseAND] = \"bitwiseAND\"; // & prec:6\n const equality = 43015; TokenType[TokenType[\"equality\"] = equality] = \"equality\"; // ==/!= prec:7\n const lessThan = 44040; TokenType[TokenType[\"lessThan\"] = lessThan] = \"lessThan\"; // < prec:8\n const greaterThan = 45064; TokenType[TokenType[\"greaterThan\"] = greaterThan] = \"greaterThan\"; // > prec:8\n const relationalOrEqual = 46088; TokenType[TokenType[\"relationalOrEqual\"] = relationalOrEqual] = \"relationalOrEqual\"; // <=/>= prec:8\n const bitShiftL = 47113; TokenType[TokenType[\"bitShiftL\"] = bitShiftL] = \"bitShiftL\"; // << prec:9\n const bitShiftR = 48137; TokenType[TokenType[\"bitShiftR\"] = bitShiftR] = \"bitShiftR\"; // >>/>>> prec:9\n const plus = 49802; TokenType[TokenType[\"plus\"] = plus] = \"plus\"; // + prec:10 prefix startsExpr\n const minus = 50826; TokenType[TokenType[\"minus\"] = minus] = \"minus\"; // - prec:10 prefix startsExpr\n const modulo = 51723; TokenType[TokenType[\"modulo\"] = modulo] = \"modulo\"; // % prec:11 startsExpr\n const star = 52235; TokenType[TokenType[\"star\"] = star] = \"star\"; // * prec:11\n const slash = 53259; TokenType[TokenType[\"slash\"] = slash] = \"slash\"; // / prec:11\n const exponent = 54348; TokenType[TokenType[\"exponent\"] = exponent] = \"exponent\"; // ** prec:12 rightAssociative\n const jsxName = 55296; TokenType[TokenType[\"jsxName\"] = jsxName] = \"jsxName\"; // jsxName\n const jsxText = 56320; TokenType[TokenType[\"jsxText\"] = jsxText] = \"jsxText\"; // jsxText\n const jsxEmptyText = 57344; TokenType[TokenType[\"jsxEmptyText\"] = jsxEmptyText] = \"jsxEmptyText\"; // jsxEmptyText\n const jsxTagStart = 58880; TokenType[TokenType[\"jsxTagStart\"] = jsxTagStart] = \"jsxTagStart\"; // jsxTagStart startsExpr\n const jsxTagEnd = 59392; TokenType[TokenType[\"jsxTagEnd\"] = jsxTagEnd] = \"jsxTagEnd\"; // jsxTagEnd\n const typeParameterStart = 60928; TokenType[TokenType[\"typeParameterStart\"] = typeParameterStart] = \"typeParameterStart\"; // typeParameterStart startsExpr\n const nonNullAssertion = 61440; TokenType[TokenType[\"nonNullAssertion\"] = nonNullAssertion] = \"nonNullAssertion\"; // nonNullAssertion\n const _break = 62480; TokenType[TokenType[\"_break\"] = _break] = \"_break\"; // break keyword\n const _case = 63504; TokenType[TokenType[\"_case\"] = _case] = \"_case\"; // case keyword\n const _catch = 64528; TokenType[TokenType[\"_catch\"] = _catch] = \"_catch\"; // catch keyword\n const _continue = 65552; TokenType[TokenType[\"_continue\"] = _continue] = \"_continue\"; // continue keyword\n const _debugger = 66576; TokenType[TokenType[\"_debugger\"] = _debugger] = \"_debugger\"; // debugger keyword\n const _default = 67600; TokenType[TokenType[\"_default\"] = _default] = \"_default\"; // default keyword\n const _do = 68624; TokenType[TokenType[\"_do\"] = _do] = \"_do\"; // do keyword\n const _else = 69648; TokenType[TokenType[\"_else\"] = _else] = \"_else\"; // else keyword\n const _finally = 70672; TokenType[TokenType[\"_finally\"] = _finally] = \"_finally\"; // finally keyword\n const _for = 71696; TokenType[TokenType[\"_for\"] = _for] = \"_for\"; // for keyword\n const _function = 73232; TokenType[TokenType[\"_function\"] = _function] = \"_function\"; // function keyword startsExpr\n const _if = 73744; TokenType[TokenType[\"_if\"] = _if] = \"_if\"; // if keyword\n const _return = 74768; TokenType[TokenType[\"_return\"] = _return] = \"_return\"; // return keyword\n const _switch = 75792; TokenType[TokenType[\"_switch\"] = _switch] = \"_switch\"; // switch keyword\n const _throw = 77456; TokenType[TokenType[\"_throw\"] = _throw] = \"_throw\"; // throw keyword prefix startsExpr\n const _try = 77840; TokenType[TokenType[\"_try\"] = _try] = \"_try\"; // try keyword\n const _var = 78864; TokenType[TokenType[\"_var\"] = _var] = \"_var\"; // var keyword\n const _let = 79888; TokenType[TokenType[\"_let\"] = _let] = \"_let\"; // let keyword\n const _const = 80912; TokenType[TokenType[\"_const\"] = _const] = \"_const\"; // const keyword\n const _while = 81936; TokenType[TokenType[\"_while\"] = _while] = \"_while\"; // while keyword\n const _with = 82960; TokenType[TokenType[\"_with\"] = _with] = \"_with\"; // with keyword\n const _new = 84496; TokenType[TokenType[\"_new\"] = _new] = \"_new\"; // new keyword startsExpr\n const _this = 85520; TokenType[TokenType[\"_this\"] = _this] = \"_this\"; // this keyword startsExpr\n const _super = 86544; TokenType[TokenType[\"_super\"] = _super] = \"_super\"; // super keyword startsExpr\n const _class = 87568; TokenType[TokenType[\"_class\"] = _class] = \"_class\"; // class keyword startsExpr\n const _extends = 88080; TokenType[TokenType[\"_extends\"] = _extends] = \"_extends\"; // extends keyword\n const _export = 89104; TokenType[TokenType[\"_export\"] = _export] = \"_export\"; // export keyword\n const _import = 90640; TokenType[TokenType[\"_import\"] = _import] = \"_import\"; // import keyword startsExpr\n const _yield = 91664; TokenType[TokenType[\"_yield\"] = _yield] = \"_yield\"; // yield keyword startsExpr\n const _null = 92688; TokenType[TokenType[\"_null\"] = _null] = \"_null\"; // null keyword startsExpr\n const _true = 93712; TokenType[TokenType[\"_true\"] = _true] = \"_true\"; // true keyword startsExpr\n const _false = 94736; TokenType[TokenType[\"_false\"] = _false] = \"_false\"; // false keyword startsExpr\n const _in = 95256; TokenType[TokenType[\"_in\"] = _in] = \"_in\"; // in prec:8 keyword\n const _instanceof = 96280; TokenType[TokenType[\"_instanceof\"] = _instanceof] = \"_instanceof\"; // instanceof prec:8 keyword\n const _typeof = 97936; TokenType[TokenType[\"_typeof\"] = _typeof] = \"_typeof\"; // typeof keyword prefix startsExpr\n const _void = 98960; TokenType[TokenType[\"_void\"] = _void] = \"_void\"; // void keyword prefix startsExpr\n const _delete = 99984; TokenType[TokenType[\"_delete\"] = _delete] = \"_delete\"; // delete keyword prefix startsExpr\n const _async = 100880; TokenType[TokenType[\"_async\"] = _async] = \"_async\"; // async keyword startsExpr\n const _get = 101904; TokenType[TokenType[\"_get\"] = _get] = \"_get\"; // get keyword startsExpr\n const _set = 102928; TokenType[TokenType[\"_set\"] = _set] = \"_set\"; // set keyword startsExpr\n const _declare = 103952; TokenType[TokenType[\"_declare\"] = _declare] = \"_declare\"; // declare keyword startsExpr\n const _readonly = 104976; TokenType[TokenType[\"_readonly\"] = _readonly] = \"_readonly\"; // readonly keyword startsExpr\n const _abstract = 106000; TokenType[TokenType[\"_abstract\"] = _abstract] = \"_abstract\"; // abstract keyword startsExpr\n const _static = 107024; TokenType[TokenType[\"_static\"] = _static] = \"_static\"; // static keyword startsExpr\n const _public = 107536; TokenType[TokenType[\"_public\"] = _public] = \"_public\"; // public keyword\n const _private = 108560; TokenType[TokenType[\"_private\"] = _private] = \"_private\"; // private keyword\n const _protected = 109584; TokenType[TokenType[\"_protected\"] = _protected] = \"_protected\"; // protected keyword\n const _override = 110608; TokenType[TokenType[\"_override\"] = _override] = \"_override\"; // override keyword\n const _as = 112144; TokenType[TokenType[\"_as\"] = _as] = \"_as\"; // as keyword startsExpr\n const _enum = 113168; TokenType[TokenType[\"_enum\"] = _enum] = \"_enum\"; // enum keyword startsExpr\n const _type = 114192; TokenType[TokenType[\"_type\"] = _type] = \"_type\"; // type keyword startsExpr\n const _implements = 115216; TokenType[TokenType[\"_implements\"] = _implements] = \"_implements\"; // implements keyword startsExpr\n})(TokenType || (TokenType = {}));\nexport function formatTokenType(tokenType) {\n switch (tokenType) {\n case TokenType.num:\n return \"num\";\n case TokenType.bigint:\n return \"bigint\";\n case TokenType.decimal:\n return \"decimal\";\n case TokenType.regexp:\n return \"regexp\";\n case TokenType.string:\n return \"string\";\n case TokenType.name:\n return \"name\";\n case TokenType.eof:\n return \"eof\";\n case TokenType.bracketL:\n return \"[\";\n case TokenType.bracketR:\n return \"]\";\n case TokenType.braceL:\n return \"{\";\n case TokenType.braceBarL:\n return \"{|\";\n case TokenType.braceR:\n return \"}\";\n case TokenType.braceBarR:\n return \"|}\";\n case TokenType.parenL:\n return \"(\";\n case TokenType.parenR:\n return \")\";\n case TokenType.comma:\n return \",\";\n case TokenType.semi:\n return \";\";\n case TokenType.colon:\n return \":\";\n case TokenType.doubleColon:\n return \"::\";\n case TokenType.dot:\n return \".\";\n case TokenType.question:\n return \"?\";\n case TokenType.questionDot:\n return \"?.\";\n case TokenType.arrow:\n return \"=>\";\n case TokenType.template:\n return \"template\";\n case TokenType.ellipsis:\n return \"...\";\n case TokenType.backQuote:\n return \"`\";\n case TokenType.dollarBraceL:\n return \"${\";\n case TokenType.at:\n return \"@\";\n case TokenType.hash:\n return \"#\";\n case TokenType.eq:\n return \"=\";\n case TokenType.assign:\n return \"_=\";\n case TokenType.preIncDec:\n return \"++/--\";\n case TokenType.postIncDec:\n return \"++/--\";\n case TokenType.bang:\n return \"!\";\n case TokenType.tilde:\n return \"~\";\n case TokenType.pipeline:\n return \"|>\";\n case TokenType.nullishCoalescing:\n return \"??\";\n case TokenType.logicalOR:\n return \"||\";\n case TokenType.logicalAND:\n return \"&&\";\n case TokenType.bitwiseOR:\n return \"|\";\n case TokenType.bitwiseXOR:\n return \"^\";\n case TokenType.bitwiseAND:\n return \"&\";\n case TokenType.equality:\n return \"==/!=\";\n case TokenType.lessThan:\n return \"<\";\n case TokenType.greaterThan:\n return \">\";\n case TokenType.relationalOrEqual:\n return \"<=/>=\";\n case TokenType.bitShiftL:\n return \"<<\";\n case TokenType.bitShiftR:\n return \">>/>>>\";\n case TokenType.plus:\n return \"+\";\n case TokenType.minus:\n return \"-\";\n case TokenType.modulo:\n return \"%\";\n case TokenType.star:\n return \"*\";\n case TokenType.slash:\n return \"/\";\n case TokenType.exponent:\n return \"**\";\n case TokenType.jsxName:\n return \"jsxName\";\n case TokenType.jsxText:\n return \"jsxText\";\n case TokenType.jsxEmptyText:\n return \"jsxEmptyText\";\n case TokenType.jsxTagStart:\n return \"jsxTagStart\";\n case TokenType.jsxTagEnd:\n return \"jsxTagEnd\";\n case TokenType.typeParameterStart:\n return \"typeParameterStart\";\n case TokenType.nonNullAssertion:\n return \"nonNullAssertion\";\n case TokenType._break:\n return \"break\";\n case TokenType._case:\n return \"case\";\n case TokenType._catch:\n return \"catch\";\n case TokenType._continue:\n return \"continue\";\n case TokenType._debugger:\n return \"debugger\";\n case TokenType._default:\n return \"default\";\n case TokenType._do:\n return \"do\";\n case TokenType._else:\n return \"else\";\n case TokenType._finally:\n return \"finally\";\n case TokenType._for:\n return \"for\";\n case TokenType._function:\n return \"function\";\n case TokenType._if:\n return \"if\";\n case TokenType._return:\n return \"return\";\n case TokenType._switch:\n return \"switch\";\n case TokenType._throw:\n return \"throw\";\n case TokenType._try:\n return \"try\";\n case TokenType._var:\n return \"var\";\n case TokenType._let:\n return \"let\";\n case TokenType._const:\n return \"const\";\n case TokenType._while:\n return \"while\";\n case TokenType._with:\n return \"with\";\n case TokenType._new:\n return \"new\";\n case TokenType._this:\n return \"this\";\n case TokenType._super:\n return \"super\";\n case TokenType._class:\n return \"class\";\n case TokenType._extends:\n return \"extends\";\n case TokenType._export:\n return \"export\";\n case TokenType._import:\n return \"import\";\n case TokenType._yield:\n return \"yield\";\n case TokenType._null:\n return \"null\";\n case TokenType._true:\n return \"true\";\n case TokenType._false:\n return \"false\";\n case TokenType._in:\n return \"in\";\n case TokenType._instanceof:\n return \"instanceof\";\n case TokenType._typeof:\n return \"typeof\";\n case TokenType._void:\n return \"void\";\n case TokenType._delete:\n return \"delete\";\n case TokenType._async:\n return \"async\";\n case TokenType._get:\n return \"get\";\n case TokenType._set:\n return \"set\";\n case TokenType._declare:\n return \"declare\";\n case TokenType._readonly:\n return \"readonly\";\n case TokenType._abstract:\n return \"abstract\";\n case TokenType._static:\n return \"static\";\n case TokenType._public:\n return \"public\";\n case TokenType._private:\n return \"private\";\n case TokenType._protected:\n return \"protected\";\n case TokenType._override:\n return \"override\";\n case TokenType._as:\n return \"as\";\n case TokenType._enum:\n return \"enum\";\n case TokenType._type:\n return \"type\";\n case TokenType._implements:\n return \"implements\";\n default:\n return \"\";\n }\n}\n", "\nimport {ContextualKeyword} from \"./keywords\";\nimport { TokenType as tt} from \"./types\";\n\nexport class Scope {\n \n \n \n\n constructor(startTokenIndex, endTokenIndex, isFunctionScope) {\n this.startTokenIndex = startTokenIndex;\n this.endTokenIndex = endTokenIndex;\n this.isFunctionScope = isFunctionScope;\n }\n}\n\nexport class StateSnapshot {\n constructor(\n potentialArrowAt,\n noAnonFunctionType,\n inDisallowConditionalTypesContext,\n tokensLength,\n scopesLength,\n pos,\n type,\n contextualKeyword,\n start,\n end,\n isType,\n scopeDepth,\n error,\n ) {;this.potentialArrowAt = potentialArrowAt;this.noAnonFunctionType = noAnonFunctionType;this.inDisallowConditionalTypesContext = inDisallowConditionalTypesContext;this.tokensLength = tokensLength;this.scopesLength = scopesLength;this.pos = pos;this.type = type;this.contextualKeyword = contextualKeyword;this.start = start;this.end = end;this.isType = isType;this.scopeDepth = scopeDepth;this.error = error;}\n}\n\nexport default class State {constructor() { State.prototype.__init.call(this);State.prototype.__init2.call(this);State.prototype.__init3.call(this);State.prototype.__init4.call(this);State.prototype.__init5.call(this);State.prototype.__init6.call(this);State.prototype.__init7.call(this);State.prototype.__init8.call(this);State.prototype.__init9.call(this);State.prototype.__init10.call(this);State.prototype.__init11.call(this);State.prototype.__init12.call(this);State.prototype.__init13.call(this); }\n // Used to signify the start of a potential arrow function\n __init() {this.potentialArrowAt = -1}\n\n // Used by Flow to handle an edge case involving function type parsing.\n __init2() {this.noAnonFunctionType = false}\n\n // Used by TypeScript to handle ambiguities when parsing conditional types.\n __init3() {this.inDisallowConditionalTypesContext = false}\n\n // Token store.\n __init4() {this.tokens = []}\n\n // Array of all observed scopes, ordered by their ending position.\n __init5() {this.scopes = []}\n\n // The current position of the tokenizer in the input.\n __init6() {this.pos = 0}\n\n // Information about the current token.\n __init7() {this.type = tt.eof}\n __init8() {this.contextualKeyword = ContextualKeyword.NONE}\n __init9() {this.start = 0}\n __init10() {this.end = 0}\n\n __init11() {this.isType = false}\n __init12() {this.scopeDepth = 0}\n\n /**\n * If the parser is in an error state, then the token is always tt.eof and all functions can\n * keep executing but should be written so they don't get into an infinite loop in this situation.\n *\n * This approach, combined with the ability to snapshot and restore state, allows us to implement\n * backtracking without exceptions and without needing to explicitly propagate error states\n * everywhere.\n */\n __init13() {this.error = null}\n\n snapshot() {\n return new StateSnapshot(\n this.potentialArrowAt,\n this.noAnonFunctionType,\n this.inDisallowConditionalTypesContext,\n this.tokens.length,\n this.scopes.length,\n this.pos,\n this.type,\n this.contextualKeyword,\n this.start,\n this.end,\n this.isType,\n this.scopeDepth,\n this.error,\n );\n }\n\n restoreFromSnapshot(snapshot) {\n this.potentialArrowAt = snapshot.potentialArrowAt;\n this.noAnonFunctionType = snapshot.noAnonFunctionType;\n this.inDisallowConditionalTypesContext = snapshot.inDisallowConditionalTypesContext;\n this.tokens.length = snapshot.tokensLength;\n this.scopes.length = snapshot.scopesLength;\n this.pos = snapshot.pos;\n this.type = snapshot.type;\n this.contextualKeyword = snapshot.contextualKeyword;\n this.start = snapshot.start;\n this.end = snapshot.end;\n this.isType = snapshot.isType;\n this.scopeDepth = snapshot.scopeDepth;\n this.error = snapshot.error;\n }\n}\n", "export var charCodes; (function (charCodes) {\n const backSpace = 8; charCodes[charCodes[\"backSpace\"] = backSpace] = \"backSpace\";\n const lineFeed = 10; charCodes[charCodes[\"lineFeed\"] = lineFeed] = \"lineFeed\"; // '\\n'\n const tab = 9; charCodes[charCodes[\"tab\"] = tab] = \"tab\"; // '\\t'\n const carriageReturn = 13; charCodes[charCodes[\"carriageReturn\"] = carriageReturn] = \"carriageReturn\"; // '\\r'\n const shiftOut = 14; charCodes[charCodes[\"shiftOut\"] = shiftOut] = \"shiftOut\";\n const space = 32; charCodes[charCodes[\"space\"] = space] = \"space\";\n const exclamationMark = 33; charCodes[charCodes[\"exclamationMark\"] = exclamationMark] = \"exclamationMark\"; // '!'\n const quotationMark = 34; charCodes[charCodes[\"quotationMark\"] = quotationMark] = \"quotationMark\"; // '\"'\n const numberSign = 35; charCodes[charCodes[\"numberSign\"] = numberSign] = \"numberSign\"; // '#'\n const dollarSign = 36; charCodes[charCodes[\"dollarSign\"] = dollarSign] = \"dollarSign\"; // '$'\n const percentSign = 37; charCodes[charCodes[\"percentSign\"] = percentSign] = \"percentSign\"; // '%'\n const ampersand = 38; charCodes[charCodes[\"ampersand\"] = ampersand] = \"ampersand\"; // '&'\n const apostrophe = 39; charCodes[charCodes[\"apostrophe\"] = apostrophe] = \"apostrophe\"; // '''\n const leftParenthesis = 40; charCodes[charCodes[\"leftParenthesis\"] = leftParenthesis] = \"leftParenthesis\"; // '('\n const rightParenthesis = 41; charCodes[charCodes[\"rightParenthesis\"] = rightParenthesis] = \"rightParenthesis\"; // ')'\n const asterisk = 42; charCodes[charCodes[\"asterisk\"] = asterisk] = \"asterisk\"; // '*'\n const plusSign = 43; charCodes[charCodes[\"plusSign\"] = plusSign] = \"plusSign\"; // '+'\n const comma = 44; charCodes[charCodes[\"comma\"] = comma] = \"comma\"; // ','\n const dash = 45; charCodes[charCodes[\"dash\"] = dash] = \"dash\"; // '-'\n const dot = 46; charCodes[charCodes[\"dot\"] = dot] = \"dot\"; // '.'\n const slash = 47; charCodes[charCodes[\"slash\"] = slash] = \"slash\"; // '/'\n const digit0 = 48; charCodes[charCodes[\"digit0\"] = digit0] = \"digit0\"; // '0'\n const digit1 = 49; charCodes[charCodes[\"digit1\"] = digit1] = \"digit1\"; // '1'\n const digit2 = 50; charCodes[charCodes[\"digit2\"] = digit2] = \"digit2\"; // '2'\n const digit3 = 51; charCodes[charCodes[\"digit3\"] = digit3] = \"digit3\"; // '3'\n const digit4 = 52; charCodes[charCodes[\"digit4\"] = digit4] = \"digit4\"; // '4'\n const digit5 = 53; charCodes[charCodes[\"digit5\"] = digit5] = \"digit5\"; // '5'\n const digit6 = 54; charCodes[charCodes[\"digit6\"] = digit6] = \"digit6\"; // '6'\n const digit7 = 55; charCodes[charCodes[\"digit7\"] = digit7] = \"digit7\"; // '7'\n const digit8 = 56; charCodes[charCodes[\"digit8\"] = digit8] = \"digit8\"; // '8'\n const digit9 = 57; charCodes[charCodes[\"digit9\"] = digit9] = \"digit9\"; // '9'\n const colon = 58; charCodes[charCodes[\"colon\"] = colon] = \"colon\"; // ':'\n const semicolon = 59; charCodes[charCodes[\"semicolon\"] = semicolon] = \"semicolon\"; // ';'\n const lessThan = 60; charCodes[charCodes[\"lessThan\"] = lessThan] = \"lessThan\"; // '<'\n const equalsTo = 61; charCodes[charCodes[\"equalsTo\"] = equalsTo] = \"equalsTo\"; // '='\n const greaterThan = 62; charCodes[charCodes[\"greaterThan\"] = greaterThan] = \"greaterThan\"; // '>'\n const questionMark = 63; charCodes[charCodes[\"questionMark\"] = questionMark] = \"questionMark\"; // '?'\n const atSign = 64; charCodes[charCodes[\"atSign\"] = atSign] = \"atSign\"; // '@'\n const uppercaseA = 65; charCodes[charCodes[\"uppercaseA\"] = uppercaseA] = \"uppercaseA\"; // 'A'\n const uppercaseB = 66; charCodes[charCodes[\"uppercaseB\"] = uppercaseB] = \"uppercaseB\"; // 'B'\n const uppercaseC = 67; charCodes[charCodes[\"uppercaseC\"] = uppercaseC] = \"uppercaseC\"; // 'C'\n const uppercaseD = 68; charCodes[charCodes[\"uppercaseD\"] = uppercaseD] = \"uppercaseD\"; // 'D'\n const uppercaseE = 69; charCodes[charCodes[\"uppercaseE\"] = uppercaseE] = \"uppercaseE\"; // 'E'\n const uppercaseF = 70; charCodes[charCodes[\"uppercaseF\"] = uppercaseF] = \"uppercaseF\"; // 'F'\n const uppercaseG = 71; charCodes[charCodes[\"uppercaseG\"] = uppercaseG] = \"uppercaseG\"; // 'G'\n const uppercaseH = 72; charCodes[charCodes[\"uppercaseH\"] = uppercaseH] = \"uppercaseH\"; // 'H'\n const uppercaseI = 73; charCodes[charCodes[\"uppercaseI\"] = uppercaseI] = \"uppercaseI\"; // 'I'\n const uppercaseJ = 74; charCodes[charCodes[\"uppercaseJ\"] = uppercaseJ] = \"uppercaseJ\"; // 'J'\n const uppercaseK = 75; charCodes[charCodes[\"uppercaseK\"] = uppercaseK] = \"uppercaseK\"; // 'K'\n const uppercaseL = 76; charCodes[charCodes[\"uppercaseL\"] = uppercaseL] = \"uppercaseL\"; // 'L'\n const uppercaseM = 77; charCodes[charCodes[\"uppercaseM\"] = uppercaseM] = \"uppercaseM\"; // 'M'\n const uppercaseN = 78; charCodes[charCodes[\"uppercaseN\"] = uppercaseN] = \"uppercaseN\"; // 'N'\n const uppercaseO = 79; charCodes[charCodes[\"uppercaseO\"] = uppercaseO] = \"uppercaseO\"; // 'O'\n const uppercaseP = 80; charCodes[charCodes[\"uppercaseP\"] = uppercaseP] = \"uppercaseP\"; // 'P'\n const uppercaseQ = 81; charCodes[charCodes[\"uppercaseQ\"] = uppercaseQ] = \"uppercaseQ\"; // 'Q'\n const uppercaseR = 82; charCodes[charCodes[\"uppercaseR\"] = uppercaseR] = \"uppercaseR\"; // 'R'\n const uppercaseS = 83; charCodes[charCodes[\"uppercaseS\"] = uppercaseS] = \"uppercaseS\"; // 'S'\n const uppercaseT = 84; charCodes[charCodes[\"uppercaseT\"] = uppercaseT] = \"uppercaseT\"; // 'T'\n const uppercaseU = 85; charCodes[charCodes[\"uppercaseU\"] = uppercaseU] = \"uppercaseU\"; // 'U'\n const uppercaseV = 86; charCodes[charCodes[\"uppercaseV\"] = uppercaseV] = \"uppercaseV\"; // 'V'\n const uppercaseW = 87; charCodes[charCodes[\"uppercaseW\"] = uppercaseW] = \"uppercaseW\"; // 'W'\n const uppercaseX = 88; charCodes[charCodes[\"uppercaseX\"] = uppercaseX] = \"uppercaseX\"; // 'X'\n const uppercaseY = 89; charCodes[charCodes[\"uppercaseY\"] = uppercaseY] = \"uppercaseY\"; // 'Y'\n const uppercaseZ = 90; charCodes[charCodes[\"uppercaseZ\"] = uppercaseZ] = \"uppercaseZ\"; // 'Z'\n const leftSquareBracket = 91; charCodes[charCodes[\"leftSquareBracket\"] = leftSquareBracket] = \"leftSquareBracket\"; // '['\n const backslash = 92; charCodes[charCodes[\"backslash\"] = backslash] = \"backslash\"; // '\\ '\n const rightSquareBracket = 93; charCodes[charCodes[\"rightSquareBracket\"] = rightSquareBracket] = \"rightSquareBracket\"; // ']'\n const caret = 94; charCodes[charCodes[\"caret\"] = caret] = \"caret\"; // '^'\n const underscore = 95; charCodes[charCodes[\"underscore\"] = underscore] = \"underscore\"; // '_'\n const graveAccent = 96; charCodes[charCodes[\"graveAccent\"] = graveAccent] = \"graveAccent\"; // '`'\n const lowercaseA = 97; charCodes[charCodes[\"lowercaseA\"] = lowercaseA] = \"lowercaseA\"; // 'a'\n const lowercaseB = 98; charCodes[charCodes[\"lowercaseB\"] = lowercaseB] = \"lowercaseB\"; // 'b'\n const lowercaseC = 99; charCodes[charCodes[\"lowercaseC\"] = lowercaseC] = \"lowercaseC\"; // 'c'\n const lowercaseD = 100; charCodes[charCodes[\"lowercaseD\"] = lowercaseD] = \"lowercaseD\"; // 'd'\n const lowercaseE = 101; charCodes[charCodes[\"lowercaseE\"] = lowercaseE] = \"lowercaseE\"; // 'e'\n const lowercaseF = 102; charCodes[charCodes[\"lowercaseF\"] = lowercaseF] = \"lowercaseF\"; // 'f'\n const lowercaseG = 103; charCodes[charCodes[\"lowercaseG\"] = lowercaseG] = \"lowercaseG\"; // 'g'\n const lowercaseH = 104; charCodes[charCodes[\"lowercaseH\"] = lowercaseH] = \"lowercaseH\"; // 'h'\n const lowercaseI = 105; charCodes[charCodes[\"lowercaseI\"] = lowercaseI] = \"lowercaseI\"; // 'i'\n const lowercaseJ = 106; charCodes[charCodes[\"lowercaseJ\"] = lowercaseJ] = \"lowercaseJ\"; // 'j'\n const lowercaseK = 107; charCodes[charCodes[\"lowercaseK\"] = lowercaseK] = \"lowercaseK\"; // 'k'\n const lowercaseL = 108; charCodes[charCodes[\"lowercaseL\"] = lowercaseL] = \"lowercaseL\"; // 'l'\n const lowercaseM = 109; charCodes[charCodes[\"lowercaseM\"] = lowercaseM] = \"lowercaseM\"; // 'm'\n const lowercaseN = 110; charCodes[charCodes[\"lowercaseN\"] = lowercaseN] = \"lowercaseN\"; // 'n'\n const lowercaseO = 111; charCodes[charCodes[\"lowercaseO\"] = lowercaseO] = \"lowercaseO\"; // 'o'\n const lowercaseP = 112; charCodes[charCodes[\"lowercaseP\"] = lowercaseP] = \"lowercaseP\"; // 'p'\n const lowercaseQ = 113; charCodes[charCodes[\"lowercaseQ\"] = lowercaseQ] = \"lowercaseQ\"; // 'q'\n const lowercaseR = 114; charCodes[charCodes[\"lowercaseR\"] = lowercaseR] = \"lowercaseR\"; // 'r'\n const lowercaseS = 115; charCodes[charCodes[\"lowercaseS\"] = lowercaseS] = \"lowercaseS\"; // 's'\n const lowercaseT = 116; charCodes[charCodes[\"lowercaseT\"] = lowercaseT] = \"lowercaseT\"; // 't'\n const lowercaseU = 117; charCodes[charCodes[\"lowercaseU\"] = lowercaseU] = \"lowercaseU\"; // 'u'\n const lowercaseV = 118; charCodes[charCodes[\"lowercaseV\"] = lowercaseV] = \"lowercaseV\"; // 'v'\n const lowercaseW = 119; charCodes[charCodes[\"lowercaseW\"] = lowercaseW] = \"lowercaseW\"; // 'w'\n const lowercaseX = 120; charCodes[charCodes[\"lowercaseX\"] = lowercaseX] = \"lowercaseX\"; // 'x'\n const lowercaseY = 121; charCodes[charCodes[\"lowercaseY\"] = lowercaseY] = \"lowercaseY\"; // 'y'\n const lowercaseZ = 122; charCodes[charCodes[\"lowercaseZ\"] = lowercaseZ] = \"lowercaseZ\"; // 'z'\n const leftCurlyBrace = 123; charCodes[charCodes[\"leftCurlyBrace\"] = leftCurlyBrace] = \"leftCurlyBrace\"; // '{'\n const verticalBar = 124; charCodes[charCodes[\"verticalBar\"] = verticalBar] = \"verticalBar\"; // '|'\n const rightCurlyBrace = 125; charCodes[charCodes[\"rightCurlyBrace\"] = rightCurlyBrace] = \"rightCurlyBrace\"; // '}'\n const tilde = 126; charCodes[charCodes[\"tilde\"] = tilde] = \"tilde\"; // '~'\n const nonBreakingSpace = 160; charCodes[charCodes[\"nonBreakingSpace\"] = nonBreakingSpace] = \"nonBreakingSpace\";\n // eslint-disable-next-line no-irregular-whitespace\n const oghamSpaceMark = 5760; charCodes[charCodes[\"oghamSpaceMark\"] = oghamSpaceMark] = \"oghamSpaceMark\"; // '\u1680'\n const lineSeparator = 8232; charCodes[charCodes[\"lineSeparator\"] = lineSeparator] = \"lineSeparator\";\n const paragraphSeparator = 8233; charCodes[charCodes[\"paragraphSeparator\"] = paragraphSeparator] = \"paragraphSeparator\";\n})(charCodes || (charCodes = {}));\n\nexport function isDigit(code) {\n return (\n (code >= charCodes.digit0 && code <= charCodes.digit9) ||\n (code >= charCodes.lowercaseA && code <= charCodes.lowercaseF) ||\n (code >= charCodes.uppercaseA && code <= charCodes.uppercaseF)\n );\n}\n", "import State from \"../tokenizer/state\";\nimport {charCodes} from \"../util/charcodes\";\n\nexport let isJSXEnabled;\nexport let isTypeScriptEnabled;\nexport let isFlowEnabled;\nexport let state;\nexport let input;\nexport let nextContextId;\n\nexport function getNextContextId() {\n return nextContextId++;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function augmentError(error) {\n if (\"pos\" in error) {\n const loc = locationForIndex(error.pos);\n error.message += ` (${loc.line}:${loc.column})`;\n error.loc = loc;\n }\n return error;\n}\n\nexport class Loc {\n \n \n constructor(line, column) {\n this.line = line;\n this.column = column;\n }\n}\n\nexport function locationForIndex(pos) {\n let line = 1;\n let column = 1;\n for (let i = 0; i < pos; i++) {\n if (input.charCodeAt(i) === charCodes.lineFeed) {\n line++;\n column = 1;\n } else {\n column++;\n }\n }\n return new Loc(line, column);\n}\n\nexport function initParser(\n inputCode,\n isJSXEnabledArg,\n isTypeScriptEnabledArg,\n isFlowEnabledArg,\n) {\n input = inputCode;\n state = new State();\n nextContextId = 1;\n isJSXEnabled = isJSXEnabledArg;\n isTypeScriptEnabled = isTypeScriptEnabledArg;\n isFlowEnabled = isFlowEnabledArg;\n}\n", "import {eat, finishToken, lookaheadTypeAndKeyword, match, nextTokenStart} from \"../tokenizer/index\";\n\nimport {formatTokenType, TokenType as tt} from \"../tokenizer/types\";\nimport {charCodes} from \"../util/charcodes\";\nimport {input, state} from \"./base\";\n\n// ## Parser utilities\n\n// Tests whether parsed token is a contextual keyword.\nexport function isContextual(contextualKeyword) {\n return state.contextualKeyword === contextualKeyword;\n}\n\nexport function isLookaheadContextual(contextualKeyword) {\n const l = lookaheadTypeAndKeyword();\n return l.type === tt.name && l.contextualKeyword === contextualKeyword;\n}\n\n// Consumes contextual keyword if possible.\nexport function eatContextual(contextualKeyword) {\n return state.contextualKeyword === contextualKeyword && eat(tt.name);\n}\n\n// Asserts that following token is given contextual keyword.\nexport function expectContextual(contextualKeyword) {\n if (!eatContextual(contextualKeyword)) {\n unexpected();\n }\n}\n\n// Test whether a semicolon can be inserted at the current position.\nexport function canInsertSemicolon() {\n return match(tt.eof) || match(tt.braceR) || hasPrecedingLineBreak();\n}\n\nexport function hasPrecedingLineBreak() {\n const prevToken = state.tokens[state.tokens.length - 1];\n const lastTokEnd = prevToken ? prevToken.end : 0;\n for (let i = lastTokEnd; i < state.start; i++) {\n const code = input.charCodeAt(i);\n if (\n code === charCodes.lineFeed ||\n code === charCodes.carriageReturn ||\n code === 0x2028 ||\n code === 0x2029\n ) {\n return true;\n }\n }\n return false;\n}\n\nexport function hasFollowingLineBreak() {\n const nextStart = nextTokenStart();\n for (let i = state.end; i < nextStart; i++) {\n const code = input.charCodeAt(i);\n if (\n code === charCodes.lineFeed ||\n code === charCodes.carriageReturn ||\n code === 0x2028 ||\n code === 0x2029\n ) {\n return true;\n }\n }\n return false;\n}\n\nexport function isLineTerminator() {\n return eat(tt.semi) || canInsertSemicolon();\n}\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\nexport function semicolon() {\n if (!isLineTerminator()) {\n unexpected('Unexpected token, expected \";\"');\n }\n}\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error at given pos.\nexport function expect(type) {\n const matched = eat(type);\n if (!matched) {\n unexpected(`Unexpected token, expected \"${formatTokenType(type)}\"`);\n }\n}\n\n/**\n * Transition the parser to an error state. All code needs to be written to naturally unwind in this\n * state, which allows us to backtrack without exceptions and without error plumbing everywhere.\n */\nexport function unexpected(message = \"Unexpected token\", pos = state.start) {\n if (state.error) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const err = new SyntaxError(message);\n err.pos = pos;\n state.error = err;\n state.pos = input.length;\n finishToken(tt.eof);\n}\n", "import {charCodes} from \"./charcodes\";\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport const WHITESPACE_CHARS = [\n 0x0009,\n 0x000b,\n 0x000c,\n charCodes.space,\n charCodes.nonBreakingSpace,\n charCodes.oghamSpaceMark,\n 0x2000, // EN QUAD\n 0x2001, // EM QUAD\n 0x2002, // EN SPACE\n 0x2003, // EM SPACE\n 0x2004, // THREE-PER-EM SPACE\n 0x2005, // FOUR-PER-EM SPACE\n 0x2006, // SIX-PER-EM SPACE\n 0x2007, // FIGURE SPACE\n 0x2008, // PUNCTUATION SPACE\n 0x2009, // THIN SPACE\n 0x200a, // HAIR SPACE\n 0x202f, // NARROW NO-BREAK SPACE\n 0x205f, // MEDIUM MATHEMATICAL SPACE\n 0x3000, // IDEOGRAPHIC SPACE\n 0xfeff, // ZERO WIDTH NO-BREAK SPACE\n];\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nexport const IS_WHITESPACE = new Uint8Array(65536);\nfor (const char of WHITESPACE_CHARS) {\n IS_WHITESPACE[char] = 1;\n}\n", "import {charCodes} from \"./charcodes\";\nimport {WHITESPACE_CHARS} from \"./whitespace\";\n\nfunction computeIsIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code < 91) return true;\n if (code < 97) return code === 95;\n if (code < 123) return true;\n if (code < 128) return false;\n throw new Error(\"Should not be called with non-ASCII char code.\");\n}\n\nexport const IS_IDENTIFIER_CHAR = new Uint8Array(65536);\nfor (let i = 0; i < 128; i++) {\n IS_IDENTIFIER_CHAR[i] = computeIsIdentifierChar(i) ? 1 : 0;\n}\nfor (let i = 128; i < 65536; i++) {\n IS_IDENTIFIER_CHAR[i] = 1;\n}\n// Aside from whitespace and newlines, all characters outside the ASCII space are either\n// identifier characters or invalid. Since we're not performing code validation, we can just\n// treat all invalid characters as identifier characters.\nfor (const whitespaceChar of WHITESPACE_CHARS) {\n IS_IDENTIFIER_CHAR[whitespaceChar] = 0;\n}\nIS_IDENTIFIER_CHAR[0x2028] = 0;\nIS_IDENTIFIER_CHAR[0x2029] = 0;\n\nexport const IS_IDENTIFIER_START = IS_IDENTIFIER_CHAR.slice();\nfor (let numChar = charCodes.digit0; numChar <= charCodes.digit9; numChar++) {\n IS_IDENTIFIER_START[numChar] = 0;\n}\n", "// Generated file, do not edit! Run \"yarn generate\" to re-generate this file.\nimport {ContextualKeyword} from \"./keywords\";\nimport {TokenType as tt} from \"./types\";\n\n// prettier-ignore\nexport const READ_WORD_TREE = new Int32Array([\n // \"\"\n -1, 27, 783, 918, 1755, 2376, 2862, 3483, -1, 3699, -1, 4617, 4752, 4833, 5130, 5508, 5940, -1, 6480, 6939, 7749, 8181, 8451, 8613, -1, 8829, -1,\n // \"a\"\n -1, -1, 54, 243, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 432, -1, -1, -1, 675, -1, -1, -1,\n // \"ab\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1,\n // \"abs\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, -1, -1, -1,\n // \"abst\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"abstr\"\n -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"abstra\"\n -1, -1, -1, 189, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"abstrac\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 216, -1, -1, -1, -1, -1, -1,\n // \"abstract\"\n ContextualKeyword._abstract << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ac\"\n -1, -1, -1, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"acc\"\n -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"acce\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 324, -1, -1, -1, -1, -1, -1, -1,\n // \"acces\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, -1, -1, -1, -1,\n // \"access\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"accesso\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 405, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"accessor\"\n ContextualKeyword._accessor << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"as\"\n ContextualKeyword._as << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 459, -1, -1, -1, -1, -1, 594, -1,\n // \"ass\"\n -1, -1, -1, -1, -1, 486, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asse\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 513, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asser\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 540, -1, -1, -1, -1, -1, -1,\n // \"assert\"\n ContextualKeyword._assert << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 567, -1, -1, -1, -1, -1, -1, -1,\n // \"asserts\"\n ContextualKeyword._asserts << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asy\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 621, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asyn\"\n -1, -1, -1, 648, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"async\"\n ContextualKeyword._async << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"aw\"\n -1, 702, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"awa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 729, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"awai\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 756, -1, -1, -1, -1, -1, -1,\n // \"await\"\n ContextualKeyword._await << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"b\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 810, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"br\"\n -1, -1, -1, -1, -1, 837, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"bre\"\n -1, 864, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"brea\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 891, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"break\"\n (tt._break << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"c\"\n -1, 945, -1, -1, -1, -1, -1, -1, 1107, -1, -1, -1, 1242, -1, -1, 1350, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ca\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 972, 1026, -1, -1, -1, -1, -1, -1,\n // \"cas\"\n -1, -1, -1, -1, -1, 999, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"case\"\n (tt._case << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cat\"\n -1, -1, -1, 1053, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"catc\"\n -1, -1, -1, -1, -1, -1, -1, -1, 1080, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"catch\"\n (tt._catch << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ch\"\n -1, -1, -1, -1, -1, 1134, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"che\"\n -1, -1, -1, 1161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"chec\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"check\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1215, -1, -1, -1, -1, -1, -1, -1,\n // \"checks\"\n ContextualKeyword._checks << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cl\"\n -1, 1269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cla\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1296, -1, -1, -1, -1, -1, -1, -1,\n // \"clas\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1323, -1, -1, -1, -1, -1, -1, -1,\n // \"class\"\n (tt._class << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"co\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"con\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1404, 1620, -1, -1, -1, -1, -1, -1,\n // \"cons\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1431, -1, -1, -1, -1, -1, -1,\n // \"const\"\n (tt._const << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1458, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"constr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1485, -1, -1, -1, -1, -1,\n // \"constru\"\n -1, -1, -1, 1512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"construc\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1539, -1, -1, -1, -1, -1, -1,\n // \"construct\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1566, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"constructo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1593, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"constructor\"\n ContextualKeyword._constructor << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cont\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 1647, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"conti\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1674, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"contin\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1701, -1, -1, -1, -1, -1,\n // \"continu\"\n -1, -1, -1, -1, -1, 1728, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"continue\"\n (tt._continue << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"d\"\n -1, -1, -1, -1, -1, 1782, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2349, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"de\"\n -1, -1, 1809, 1971, -1, -1, 2106, -1, -1, -1, -1, -1, 2241, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"deb\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1836, -1, -1, -1, -1, -1,\n // \"debu\"\n -1, -1, -1, -1, -1, -1, -1, 1863, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debug\"\n -1, -1, -1, -1, -1, -1, -1, 1890, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debugg\"\n -1, -1, -1, -1, -1, 1917, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debugge\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1944, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debugger\"\n (tt._debugger << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"dec\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1998, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"decl\"\n -1, 2025, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"decla\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2052, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"declar\"\n -1, -1, -1, -1, -1, 2079, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"declare\"\n ContextualKeyword._declare << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"def\"\n -1, 2133, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"defa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2160, -1, -1, -1, -1, -1,\n // \"defau\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"defaul\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2214, -1, -1, -1, -1, -1, -1,\n // \"default\"\n (tt._default << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"del\"\n -1, -1, -1, -1, -1, 2268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"dele\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2295, -1, -1, -1, -1, -1, -1,\n // \"delet\"\n -1, -1, -1, -1, -1, 2322, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"delete\"\n (tt._delete << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"do\"\n (tt._do << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"e\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2403, -1, 2484, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2565, -1, -1,\n // \"el\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2430, -1, -1, -1, -1, -1, -1, -1,\n // \"els\"\n -1, -1, -1, -1, -1, 2457, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"else\"\n (tt._else << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"en\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2511, -1, -1, -1, -1, -1,\n // \"enu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2538, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"enum\"\n ContextualKeyword._enum << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ex\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2592, -1, -1, -1, 2727, -1, -1, -1, -1, -1, -1,\n // \"exp\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2619, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"expo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2646, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"expor\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2673, -1, -1, -1, -1, -1, -1,\n // \"export\"\n (tt._export << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2700, -1, -1, -1, -1, -1, -1, -1,\n // \"exports\"\n ContextualKeyword._exports << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ext\"\n -1, -1, -1, -1, -1, 2754, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"exte\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2781, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"exten\"\n -1, -1, -1, -1, 2808, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"extend\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2835, -1, -1, -1, -1, -1, -1, -1,\n // \"extends\"\n (tt._extends << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"f\"\n -1, 2889, -1, -1, -1, -1, -1, -1, -1, 2997, -1, -1, -1, -1, -1, 3159, -1, -1, 3213, -1, -1, 3294, -1, -1, -1, -1, -1,\n // \"fa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2916, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fal\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2943, -1, -1, -1, -1, -1, -1, -1,\n // \"fals\"\n -1, -1, -1, -1, -1, 2970, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"false\"\n (tt._false << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3024, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fin\"\n -1, 3051, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fina\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3078, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"final\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"finall\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3132, -1,\n // \"finally\"\n (tt._finally << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3186, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"for\"\n (tt._for << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3240, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fro\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"from\"\n ContextualKeyword._from << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3321, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fun\"\n -1, -1, -1, 3348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"func\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3375, -1, -1, -1, -1, -1, -1,\n // \"funct\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 3402, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"functi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3429, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"functio\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3456, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"function\"\n (tt._function << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"g\"\n -1, -1, -1, -1, -1, 3510, -1, -1, -1, -1, -1, -1, 3564, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ge\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3537, -1, -1, -1, -1, -1, -1,\n // \"get\"\n ContextualKeyword._get << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"gl\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3591, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"glo\"\n -1, -1, 3618, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"glob\"\n -1, 3645, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"globa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3672, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"global\"\n ContextualKeyword._global << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"i\"\n -1, -1, -1, -1, -1, -1, 3726, -1, -1, -1, -1, -1, -1, 3753, 4077, -1, -1, -1, -1, 4590, -1, -1, -1, -1, -1, -1, -1,\n // \"if\"\n (tt._if << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"im\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3780, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"imp\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3807, -1, -1, 3996, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impl\"\n -1, -1, -1, -1, -1, 3834, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"imple\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3861, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"implem\"\n -1, -1, -1, -1, -1, 3888, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impleme\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3915, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"implemen\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3942, -1, -1, -1, -1, -1, -1,\n // \"implement\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3969, -1, -1, -1, -1, -1, -1, -1,\n // \"implements\"\n ContextualKeyword._implements << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4023, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impor\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4050, -1, -1, -1, -1, -1, -1,\n // \"import\"\n (tt._import << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"in\"\n (tt._in << 1) + 1, -1, -1, -1, -1, -1, 4104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4185, 4401, -1, -1, -1, -1, -1, -1,\n // \"inf\"\n -1, -1, -1, -1, -1, 4131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"infe\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4158, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"infer\"\n ContextualKeyword._infer << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ins\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4212, -1, -1, -1, -1, -1, -1,\n // \"inst\"\n -1, 4239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"insta\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instan\"\n -1, -1, -1, 4293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instanc\"\n -1, -1, -1, -1, -1, 4320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instance\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instanceo\"\n -1, -1, -1, -1, -1, -1, 4374, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instanceof\"\n (tt._instanceof << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"int\"\n -1, -1, -1, -1, -1, 4428, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"inte\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4455, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"inter\"\n -1, -1, -1, -1, -1, -1, 4482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interf\"\n -1, 4509, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interfa\"\n -1, -1, -1, 4536, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interfac\"\n -1, -1, -1, -1, -1, 4563, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interface\"\n ContextualKeyword._interface << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"is\"\n ContextualKeyword._is << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"k\"\n -1, -1, -1, -1, -1, 4644, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ke\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4671, -1,\n // \"key\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4698, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"keyo\"\n -1, -1, -1, -1, -1, -1, 4725, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"keyof\"\n ContextualKeyword._keyof << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"l\"\n -1, -1, -1, -1, -1, 4779, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"le\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4806, -1, -1, -1, -1, -1, -1,\n // \"let\"\n (tt._let << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"m\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 4860, -1, -1, -1, -1, -1, 4995, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4887, -1, -1,\n // \"mix\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 4914, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mixi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4941, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mixin\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4968, -1, -1, -1, -1, -1, -1, -1,\n // \"mixins\"\n ContextualKeyword._mixins << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mo\"\n -1, -1, -1, -1, 5022, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mod\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5049, -1, -1, -1, -1, -1,\n // \"modu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5076, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"modul\"\n -1, -1, -1, -1, -1, 5103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"module\"\n ContextualKeyword._module << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"n\"\n -1, 5157, -1, -1, -1, 5373, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5427, -1, -1, -1, -1, -1,\n // \"na\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"nam\"\n -1, -1, -1, -1, -1, 5211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"name\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5238, -1, -1, -1, -1, -1, -1, -1,\n // \"names\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namesp\"\n -1, 5292, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namespa\"\n -1, -1, -1, 5319, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namespac\"\n -1, -1, -1, -1, -1, 5346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namespace\"\n ContextualKeyword._namespace << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ne\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5400, -1, -1, -1,\n // \"new\"\n (tt._new << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"nu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5454, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"nul\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5481, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"null\"\n (tt._null << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"o\"\n -1, -1, -1, -1, -1, -1, 5535, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5562, -1, -1, -1, -1, 5697, 5751, -1, -1, -1, -1,\n // \"of\"\n ContextualKeyword._of << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"op\"\n -1, 5589, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"opa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5616, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"opaq\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5643, -1, -1, -1, -1, -1,\n // \"opaqu\"\n -1, -1, -1, -1, -1, 5670, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"opaque\"\n ContextualKeyword._opaque << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ou\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5724, -1, -1, -1, -1, -1, -1,\n // \"out\"\n ContextualKeyword._out << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ov\"\n -1, -1, -1, -1, -1, 5778, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ove\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5805, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"over\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5832, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"overr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 5859, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"overri\"\n -1, -1, -1, -1, 5886, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"overrid\"\n -1, -1, -1, -1, -1, 5913, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"override\"\n ContextualKeyword._override << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"p\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5967, -1, -1, 6345, -1, -1, -1, -1, -1,\n // \"pr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 5994, -1, -1, -1, -1, -1, 6129, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pri\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6021, -1, -1, -1, -1,\n // \"priv\"\n -1, 6048, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"priva\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6075, -1, -1, -1, -1, -1, -1,\n // \"privat\"\n -1, -1, -1, -1, -1, 6102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"private\"\n ContextualKeyword._private << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pro\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6156, -1, -1, -1, -1, -1, -1,\n // \"prot\"\n -1, -1, -1, -1, -1, 6183, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6318, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"prote\"\n -1, -1, -1, 6210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"protec\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6237, -1, -1, -1, -1, -1, -1,\n // \"protect\"\n -1, -1, -1, -1, -1, 6264, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"protecte\"\n -1, -1, -1, -1, 6291, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"protected\"\n ContextualKeyword._protected << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"proto\"\n ContextualKeyword._proto << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pu\"\n -1, -1, 6372, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pub\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6399, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"publ\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 6426, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"publi\"\n -1, -1, -1, 6453, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"public\"\n ContextualKeyword._public << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"r\"\n -1, -1, -1, -1, -1, 6507, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"re\"\n -1, 6534, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6696, -1, -1, 6831, -1, -1, -1, -1, -1, -1,\n // \"rea\"\n -1, -1, -1, -1, 6561, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"read\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6588, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"reado\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6615, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"readon\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6642, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"readonl\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6669, -1,\n // \"readonly\"\n ContextualKeyword._readonly << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"req\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6723, -1, -1, -1, -1, -1,\n // \"requ\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 6750, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"requi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6777, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"requir\"\n -1, -1, -1, -1, -1, 6804, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"require\"\n ContextualKeyword._require << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ret\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6858, -1, -1, -1, -1, -1,\n // \"retu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6885, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"retur\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6912, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"return\"\n (tt._return << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"s\"\n -1, 6966, -1, -1, -1, 7182, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7236, 7371, -1, 7479, -1, 7614, -1,\n // \"sa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6993, -1, -1, -1, -1, -1, -1,\n // \"sat\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7020, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sati\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7047, -1, -1, -1, -1, -1, -1, -1,\n // \"satis\"\n -1, -1, -1, -1, -1, -1, 7074, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"satisf\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"satisfi\"\n -1, -1, -1, -1, -1, 7128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"satisfie\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7155, -1, -1, -1, -1, -1, -1, -1,\n // \"satisfies\"\n ContextualKeyword._satisfies << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"se\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7209, -1, -1, -1, -1, -1, -1,\n // \"set\"\n ContextualKeyword._set << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"st\"\n -1, 7263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sta\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7290, -1, -1, -1, -1, -1, -1,\n // \"stat\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7317, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"stati\"\n -1, -1, -1, 7344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"static\"\n ContextualKeyword._static << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"su\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7398, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sup\"\n -1, -1, -1, -1, -1, 7425, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"supe\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7452, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"super\"\n (tt._super << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sw\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7506, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"swi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7533, -1, -1, -1, -1, -1, -1,\n // \"swit\"\n -1, -1, -1, 7560, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"switc\"\n -1, -1, -1, -1, -1, -1, -1, -1, 7587, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"switch\"\n (tt._switch << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sy\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7641, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sym\"\n -1, -1, 7668, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"symb\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7695, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"symbo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7722, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"symbol\"\n ContextualKeyword._symbol << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"t\"\n -1, -1, -1, -1, -1, -1, -1, -1, 7776, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7938, -1, -1, -1, -1, -1, -1, 8046, -1,\n // \"th\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7803, -1, -1, -1, -1, -1, -1, -1, -1, 7857, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"thi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7830, -1, -1, -1, -1, -1, -1, -1,\n // \"this\"\n (tt._this << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"thr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7884, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"thro\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7911, -1, -1, -1,\n // \"throw\"\n (tt._throw << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"tr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7965, -1, -1, -1, 8019, -1,\n // \"tru\"\n -1, -1, -1, -1, -1, 7992, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"true\"\n (tt._true << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"try\"\n (tt._try << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ty\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8073, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"typ\"\n -1, -1, -1, -1, -1, 8100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"type\"\n ContextualKeyword._type << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"typeo\"\n -1, -1, -1, -1, -1, -1, 8154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"typeof\"\n (tt._typeof << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"u\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8208, -1, -1, -1, -1, 8343, -1, -1, -1, -1, -1, -1, -1,\n // \"un\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 8235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"uni\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8262, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"uniq\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8289, -1, -1, -1, -1, -1,\n // \"uniqu\"\n -1, -1, -1, -1, -1, 8316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"unique\"\n ContextualKeyword._unique << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"us\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 8370, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"usi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"usin\"\n -1, -1, -1, -1, -1, -1, -1, 8424, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"using\"\n ContextualKeyword._using << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"v\"\n -1, 8478, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8532, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"va\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8505, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"var\"\n (tt._var << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"vo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 8559, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"voi\"\n -1, -1, -1, -1, 8586, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"void\"\n (tt._void << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"w\"\n -1, -1, -1, -1, -1, -1, -1, -1, 8640, 8748, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"wh\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 8667, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"whi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8694, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"whil\"\n -1, -1, -1, -1, -1, 8721, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"while\"\n (tt._while << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"wi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8775, -1, -1, -1, -1, -1, -1,\n // \"wit\"\n -1, -1, -1, -1, -1, -1, -1, -1, 8802, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"with\"\n (tt._with << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"y\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 8856, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yi\"\n -1, -1, -1, -1, -1, 8883, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yie\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8910, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yiel\"\n -1, -1, -1, -1, 8937, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yield\"\n (tt._yield << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n]);\n", "import {input, state} from \"../traverser/base\";\nimport {charCodes} from \"../util/charcodes\";\nimport {IS_IDENTIFIER_CHAR} from \"../util/identifier\";\nimport {finishToken} from \"./index\";\nimport {READ_WORD_TREE} from \"./readWordTree\";\nimport {TokenType as tt} from \"./types\";\n\n/**\n * Read an identifier, producing either a name token or matching on one of the existing keywords.\n * For performance, we pre-generate big decision tree that we traverse. Each node represents a\n * prefix and has 27 values, where the first value is the token or contextual token, if any (-1 if\n * not), and the other 26 values are the transitions to other nodes, or -1 to stop.\n */\nexport default function readWord() {\n let treePos = 0;\n let code = 0;\n let pos = state.pos;\n while (pos < input.length) {\n code = input.charCodeAt(pos);\n if (code < charCodes.lowercaseA || code > charCodes.lowercaseZ) {\n break;\n }\n const next = READ_WORD_TREE[treePos + (code - charCodes.lowercaseA) + 1];\n if (next === -1) {\n break;\n } else {\n treePos = next;\n pos++;\n }\n }\n\n const keywordValue = READ_WORD_TREE[treePos];\n if (keywordValue > -1 && !IS_IDENTIFIER_CHAR[code]) {\n state.pos = pos;\n if (keywordValue & 1) {\n finishToken(keywordValue >>> 1);\n } else {\n finishToken(tt.name, keywordValue >>> 1);\n }\n return;\n }\n\n while (pos < input.length) {\n const ch = input.charCodeAt(pos);\n if (IS_IDENTIFIER_CHAR[ch]) {\n pos++;\n } else if (ch === charCodes.backslash) {\n // \\u\n pos += 2;\n if (input.charCodeAt(pos) === charCodes.leftCurlyBrace) {\n while (pos < input.length && input.charCodeAt(pos) !== charCodes.rightCurlyBrace) {\n pos++;\n }\n pos++;\n }\n } else if (ch === charCodes.atSign && input.charCodeAt(pos + 1) === charCodes.atSign) {\n pos += 2;\n } else {\n break;\n }\n }\n state.pos = pos;\n finishToken(tt.name);\n}\n", "/* eslint max-len: 0 */\n\nimport {input, isFlowEnabled, state} from \"../traverser/base\";\nimport {unexpected} from \"../traverser/util\";\nimport {charCodes} from \"../util/charcodes\";\nimport {IS_IDENTIFIER_CHAR, IS_IDENTIFIER_START} from \"../util/identifier\";\nimport {IS_WHITESPACE, skipWhiteSpace} from \"../util/whitespace\";\nimport {ContextualKeyword} from \"./keywords\";\nimport readWord from \"./readWord\";\nimport { TokenType as tt} from \"./types\";\n\nexport var IdentifierRole; (function (IdentifierRole) {\n const Access = 0; IdentifierRole[IdentifierRole[\"Access\"] = Access] = \"Access\";\n const ExportAccess = Access + 1; IdentifierRole[IdentifierRole[\"ExportAccess\"] = ExportAccess] = \"ExportAccess\";\n const TopLevelDeclaration = ExportAccess + 1; IdentifierRole[IdentifierRole[\"TopLevelDeclaration\"] = TopLevelDeclaration] = \"TopLevelDeclaration\";\n const FunctionScopedDeclaration = TopLevelDeclaration + 1; IdentifierRole[IdentifierRole[\"FunctionScopedDeclaration\"] = FunctionScopedDeclaration] = \"FunctionScopedDeclaration\";\n const BlockScopedDeclaration = FunctionScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"BlockScopedDeclaration\"] = BlockScopedDeclaration] = \"BlockScopedDeclaration\";\n const ObjectShorthandTopLevelDeclaration = BlockScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthandTopLevelDeclaration\"] = ObjectShorthandTopLevelDeclaration] = \"ObjectShorthandTopLevelDeclaration\";\n const ObjectShorthandFunctionScopedDeclaration = ObjectShorthandTopLevelDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthandFunctionScopedDeclaration\"] = ObjectShorthandFunctionScopedDeclaration] = \"ObjectShorthandFunctionScopedDeclaration\";\n const ObjectShorthandBlockScopedDeclaration = ObjectShorthandFunctionScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthandBlockScopedDeclaration\"] = ObjectShorthandBlockScopedDeclaration] = \"ObjectShorthandBlockScopedDeclaration\";\n const ObjectShorthand = ObjectShorthandBlockScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthand\"] = ObjectShorthand] = \"ObjectShorthand\";\n // Any identifier bound in an import statement, e.g. both A and b from\n // `import A, * as b from 'A';`\n const ImportDeclaration = ObjectShorthand + 1; IdentifierRole[IdentifierRole[\"ImportDeclaration\"] = ImportDeclaration] = \"ImportDeclaration\";\n const ObjectKey = ImportDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectKey\"] = ObjectKey] = \"ObjectKey\";\n // The `foo` in `import {foo as bar} from \"./abc\";`.\n const ImportAccess = ObjectKey + 1; IdentifierRole[IdentifierRole[\"ImportAccess\"] = ImportAccess] = \"ImportAccess\";\n})(IdentifierRole || (IdentifierRole = {}));\n\n/**\n * Extra information on jsxTagStart tokens, used to determine which of the three\n * jsx functions are called in the automatic transform.\n */\nexport var JSXRole; (function (JSXRole) {\n // The element is self-closing or has a body that resolves to empty. We\n // shouldn't emit children at all in this case.\n const NoChildren = 0; JSXRole[JSXRole[\"NoChildren\"] = NoChildren] = \"NoChildren\";\n // The element has a single explicit child, which might still be an arbitrary\n // expression like an array. We should emit that expression as the children.\n const OneChild = NoChildren + 1; JSXRole[JSXRole[\"OneChild\"] = OneChild] = \"OneChild\";\n // The element has at least two explicitly-specified children or has spread\n // children, so child positions are assumed to be \"static\". We should wrap\n // these children in an array.\n const StaticChildren = OneChild + 1; JSXRole[JSXRole[\"StaticChildren\"] = StaticChildren] = \"StaticChildren\";\n // The element has a prop named \"key\" after a prop spread, so we should fall\n // back to the createElement function.\n const KeyAfterPropSpread = StaticChildren + 1; JSXRole[JSXRole[\"KeyAfterPropSpread\"] = KeyAfterPropSpread] = \"KeyAfterPropSpread\";\n})(JSXRole || (JSXRole = {}));\n\nexport function isDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.TopLevelDeclaration ||\n role === IdentifierRole.FunctionScopedDeclaration ||\n role === IdentifierRole.BlockScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n role === IdentifierRole.ObjectShorthandFunctionScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandBlockScopedDeclaration\n );\n}\n\nexport function isNonTopLevelDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.FunctionScopedDeclaration ||\n role === IdentifierRole.BlockScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandFunctionScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandBlockScopedDeclaration\n );\n}\n\nexport function isTopLevelDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.TopLevelDeclaration ||\n role === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n role === IdentifierRole.ImportDeclaration\n );\n}\n\nexport function isBlockScopedDeclaration(token) {\n const role = token.identifierRole;\n // Treat top-level declarations as block scope since the distinction doesn't matter here.\n return (\n role === IdentifierRole.TopLevelDeclaration ||\n role === IdentifierRole.BlockScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n role === IdentifierRole.ObjectShorthandBlockScopedDeclaration\n );\n}\n\nexport function isFunctionScopedDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.FunctionScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandFunctionScopedDeclaration\n );\n}\n\nexport function isObjectShorthandDeclaration(token) {\n return (\n token.identifierRole === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n token.identifierRole === IdentifierRole.ObjectShorthandBlockScopedDeclaration ||\n token.identifierRole === IdentifierRole.ObjectShorthandFunctionScopedDeclaration\n );\n}\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\nexport class Token {\n constructor() {\n this.type = state.type;\n this.contextualKeyword = state.contextualKeyword;\n this.start = state.start;\n this.end = state.end;\n this.scopeDepth = state.scopeDepth;\n this.isType = state.isType;\n this.identifierRole = null;\n this.jsxRole = null;\n this.shadowsGlobal = false;\n this.isAsyncOperation = false;\n this.contextId = null;\n this.rhsEndIndex = null;\n this.isExpression = false;\n this.numNullishCoalesceStarts = 0;\n this.numNullishCoalesceEnds = 0;\n this.isOptionalChainStart = false;\n this.isOptionalChainEnd = false;\n this.subscriptStartIndex = null;\n this.nullishStartIndex = null;\n }\n\n \n \n \n \n \n \n \n \n // Initially false for all tokens, then may be computed in a follow-up step that does scope\n // analysis.\n \n // Initially false for all tokens, but may be set during transform to mark it as containing an\n // await operation.\n \n \n // For assignments, the index of the RHS. For export tokens, the end of the export.\n \n // For class tokens, records if the class is a class expression or a class statement.\n \n // Number of times to insert a `nullishCoalesce(` snippet before this token.\n \n // Number of times to insert a `)` snippet after this token.\n \n // If true, insert an `optionalChain([` snippet before this token.\n \n // If true, insert a `])` snippet after this token.\n \n // Tag for `.`, `?.`, `[`, `?.[`, `(`, and `?.(` to denote the \"root\" token for this\n // subscript chain. This can be used to determine if this chain is an optional chain.\n \n // Tag for `??` operators to denote the root token for this nullish coalescing call.\n \n}\n\n// ## Tokenizer\n\n// Move to the next token\nexport function next() {\n state.tokens.push(new Token());\n nextToken();\n}\n\n// Call instead of next when inside a template, since that needs to be handled differently.\nexport function nextTemplateToken() {\n state.tokens.push(new Token());\n state.start = state.pos;\n readTmplToken();\n}\n\n// The tokenizer never parses regexes by default. Instead, the parser is responsible for\n// instructing it to parse a regex when we see a slash at the start of an expression.\nexport function retokenizeSlashAsRegex() {\n if (state.type === tt.assign) {\n --state.pos;\n }\n readRegexp();\n}\n\nexport function pushTypeContext(existingTokensInType) {\n for (let i = state.tokens.length - existingTokensInType; i < state.tokens.length; i++) {\n state.tokens[i].isType = true;\n }\n const oldIsType = state.isType;\n state.isType = true;\n return oldIsType;\n}\n\nexport function popTypeContext(oldIsType) {\n state.isType = oldIsType;\n}\n\nexport function eat(type) {\n if (match(type)) {\n next();\n return true;\n } else {\n return false;\n }\n}\n\nexport function eatTypeToken(tokenType) {\n const oldIsType = state.isType;\n state.isType = true;\n eat(tokenType);\n state.isType = oldIsType;\n}\n\nexport function match(type) {\n return state.type === type;\n}\n\nexport function lookaheadType() {\n const snapshot = state.snapshot();\n next();\n const type = state.type;\n state.restoreFromSnapshot(snapshot);\n return type;\n}\n\nexport class TypeAndKeyword {\n \n \n constructor(type, contextualKeyword) {\n this.type = type;\n this.contextualKeyword = contextualKeyword;\n }\n}\n\nexport function lookaheadTypeAndKeyword() {\n const snapshot = state.snapshot();\n next();\n const type = state.type;\n const contextualKeyword = state.contextualKeyword;\n state.restoreFromSnapshot(snapshot);\n return new TypeAndKeyword(type, contextualKeyword);\n}\n\nexport function nextTokenStart() {\n return nextTokenStartSince(state.pos);\n}\n\nexport function nextTokenStartSince(pos) {\n skipWhiteSpace.lastIndex = pos;\n const skip = skipWhiteSpace.exec(input);\n return pos + skip[0].length;\n}\n\nexport function lookaheadCharCode() {\n return input.charCodeAt(nextTokenStart());\n}\n\n// Read a single token, updating the parser object's token-related\n// properties.\nexport function nextToken() {\n skipSpace();\n state.start = state.pos;\n if (state.pos >= input.length) {\n const tokens = state.tokens;\n // We normally run past the end a bit, but if we're way past the end, avoid an infinite loop.\n // Also check the token positions rather than the types since sometimes we rewrite the token\n // type to something else.\n if (\n tokens.length >= 2 &&\n tokens[tokens.length - 1].start >= input.length &&\n tokens[tokens.length - 2].start >= input.length\n ) {\n unexpected(\"Unexpectedly reached the end of input.\");\n }\n finishToken(tt.eof);\n return;\n }\n readToken(input.charCodeAt(state.pos));\n}\n\nfunction readToken(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (\n IS_IDENTIFIER_START[code] ||\n code === charCodes.backslash ||\n (code === charCodes.atSign && input.charCodeAt(state.pos + 1) === charCodes.atSign)\n ) {\n readWord();\n } else {\n getTokenFromCode(code);\n }\n}\n\nfunction skipBlockComment() {\n while (\n input.charCodeAt(state.pos) !== charCodes.asterisk ||\n input.charCodeAt(state.pos + 1) !== charCodes.slash\n ) {\n state.pos++;\n if (state.pos > input.length) {\n unexpected(\"Unterminated comment\", state.pos - 2);\n return;\n }\n }\n state.pos += 2;\n}\n\nexport function skipLineComment(startSkip) {\n let ch = input.charCodeAt((state.pos += startSkip));\n if (state.pos < input.length) {\n while (\n ch !== charCodes.lineFeed &&\n ch !== charCodes.carriageReturn &&\n ch !== charCodes.lineSeparator &&\n ch !== charCodes.paragraphSeparator &&\n ++state.pos < input.length\n ) {\n ch = input.charCodeAt(state.pos);\n }\n }\n}\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments.\nexport function skipSpace() {\n while (state.pos < input.length) {\n const ch = input.charCodeAt(state.pos);\n switch (ch) {\n case charCodes.carriageReturn:\n if (input.charCodeAt(state.pos + 1) === charCodes.lineFeed) {\n ++state.pos;\n }\n\n case charCodes.lineFeed:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n ++state.pos;\n break;\n\n case charCodes.slash:\n switch (input.charCodeAt(state.pos + 1)) {\n case charCodes.asterisk:\n state.pos += 2;\n skipBlockComment();\n break;\n\n case charCodes.slash:\n skipLineComment(2);\n break;\n\n default:\n return;\n }\n break;\n\n default:\n if (IS_WHITESPACE[ch]) {\n ++state.pos;\n } else {\n return;\n }\n }\n }\n}\n\n// Called at the end of every token. Sets various fields, and skips the space after the token, so\n// that the next one's `start` will point at the right position.\nexport function finishToken(\n type,\n contextualKeyword = ContextualKeyword.NONE,\n) {\n state.end = state.pos;\n state.type = type;\n state.contextualKeyword = contextualKeyword;\n}\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\nfunction readToken_dot() {\n const nextChar = input.charCodeAt(state.pos + 1);\n if (nextChar >= charCodes.digit0 && nextChar <= charCodes.digit9) {\n readNumber(true);\n return;\n }\n\n if (nextChar === charCodes.dot && input.charCodeAt(state.pos + 2) === charCodes.dot) {\n state.pos += 3;\n finishToken(tt.ellipsis);\n } else {\n ++state.pos;\n finishToken(tt.dot);\n }\n}\n\nfunction readToken_slash() {\n const nextChar = input.charCodeAt(state.pos + 1);\n if (nextChar === charCodes.equalsTo) {\n finishOp(tt.assign, 2);\n } else {\n finishOp(tt.slash, 1);\n }\n}\n\nfunction readToken_mult_modulo(code) {\n // '%*'\n let tokenType = code === charCodes.asterisk ? tt.star : tt.modulo;\n let width = 1;\n let nextChar = input.charCodeAt(state.pos + 1);\n\n // Exponentiation operator **\n if (code === charCodes.asterisk && nextChar === charCodes.asterisk) {\n width++;\n nextChar = input.charCodeAt(state.pos + 2);\n tokenType = tt.exponent;\n }\n\n // Match *= or %=, disallowing *=> which can be valid in flow.\n if (\n nextChar === charCodes.equalsTo &&\n input.charCodeAt(state.pos + 2) !== charCodes.greaterThan\n ) {\n width++;\n tokenType = tt.assign;\n }\n\n finishOp(tokenType, width);\n}\n\nfunction readToken_pipe_amp(code) {\n // '|&'\n const nextChar = input.charCodeAt(state.pos + 1);\n\n if (nextChar === code) {\n if (input.charCodeAt(state.pos + 2) === charCodes.equalsTo) {\n // ||= or &&=\n finishOp(tt.assign, 3);\n } else {\n // || or &&\n finishOp(code === charCodes.verticalBar ? tt.logicalOR : tt.logicalAND, 2);\n }\n return;\n }\n\n if (code === charCodes.verticalBar) {\n // '|>'\n if (nextChar === charCodes.greaterThan) {\n finishOp(tt.pipeline, 2);\n return;\n } else if (nextChar === charCodes.rightCurlyBrace && isFlowEnabled) {\n // '|}'\n finishOp(tt.braceBarR, 2);\n return;\n }\n }\n\n if (nextChar === charCodes.equalsTo) {\n finishOp(tt.assign, 2);\n return;\n }\n\n finishOp(code === charCodes.verticalBar ? tt.bitwiseOR : tt.bitwiseAND, 1);\n}\n\nfunction readToken_caret() {\n // '^'\n const nextChar = input.charCodeAt(state.pos + 1);\n if (nextChar === charCodes.equalsTo) {\n finishOp(tt.assign, 2);\n } else {\n finishOp(tt.bitwiseXOR, 1);\n }\n}\n\nfunction readToken_plus_min(code) {\n // '+-'\n const nextChar = input.charCodeAt(state.pos + 1);\n\n if (nextChar === code) {\n // Tentatively call this a prefix operator, but it might be changed to postfix later.\n finishOp(tt.preIncDec, 2);\n return;\n }\n\n if (nextChar === charCodes.equalsTo) {\n finishOp(tt.assign, 2);\n } else if (code === charCodes.plusSign) {\n finishOp(tt.plus, 1);\n } else {\n finishOp(tt.minus, 1);\n }\n}\n\nfunction readToken_lt() {\n const nextChar = input.charCodeAt(state.pos + 1);\n\n if (nextChar === charCodes.lessThan) {\n if (input.charCodeAt(state.pos + 2) === charCodes.equalsTo) {\n finishOp(tt.assign, 3);\n return;\n }\n // We see <<, but need to be really careful about whether to treat it as a\n // true left-shift or as two < tokens.\n if (state.isType) {\n // Within a type, << might come up in a snippet like `Array<<T>() => void>`,\n // so treat it as two < tokens. Importantly, this should only override <<\n // rather than other tokens like <= . If we treated <= as < in a type\n // context, then the snippet `a as T <= 1` would incorrectly start parsing\n // a type argument on T. We don't need to worry about `a as T << 1`\n // because TypeScript disallows that syntax.\n finishOp(tt.lessThan, 1);\n } else {\n // Outside a type, this might be a true left-shift operator, or it might\n // still be two open-type-arg tokens, such as in `f<<T>() => void>()`. We\n // look at the token while considering the `f`, so we don't yet know that\n // we're in a type context. In this case, we initially tokenize as a\n // left-shift and correct after-the-fact as necessary in\n // tsParseTypeArgumentsWithPossibleBitshift .\n finishOp(tt.bitShiftL, 2);\n }\n return;\n }\n\n if (nextChar === charCodes.equalsTo) {\n // <=\n finishOp(tt.relationalOrEqual, 2);\n } else {\n finishOp(tt.lessThan, 1);\n }\n}\n\nfunction readToken_gt() {\n if (state.isType) {\n // Avoid right-shift for things like `Array<Array<string>>` and\n // greater-than-or-equal for things like `const a: Array<number>=[];`.\n finishOp(tt.greaterThan, 1);\n return;\n }\n\n const nextChar = input.charCodeAt(state.pos + 1);\n\n if (nextChar === charCodes.greaterThan) {\n const size = input.charCodeAt(state.pos + 2) === charCodes.greaterThan ? 3 : 2;\n if (input.charCodeAt(state.pos + size) === charCodes.equalsTo) {\n finishOp(tt.assign, size + 1);\n return;\n }\n finishOp(tt.bitShiftR, size);\n return;\n }\n\n if (nextChar === charCodes.equalsTo) {\n // >=\n finishOp(tt.relationalOrEqual, 2);\n } else {\n finishOp(tt.greaterThan, 1);\n }\n}\n\n/**\n * Reinterpret a possible > token when transitioning from a type to a non-type\n * context.\n *\n * This comes up in two situations where >= needs to be treated as one token:\n * - After an `as` expression, like in the code `a as T >= 1`.\n * - In a type argument in an expression context, e.g. `f(a < b, c >= d)`, we\n * need to see the token as >= so that we get an error and backtrack to\n * normal expression parsing.\n *\n * Other situations require >= to be seen as two tokens, e.g.\n * `const x: Array<T>=[];`, so it's important to treat > as its own token in\n * typical type parsing situations.\n */\nexport function rescan_gt() {\n if (state.type === tt.greaterThan) {\n state.pos -= 1;\n readToken_gt();\n }\n}\n\nfunction readToken_eq_excl(code) {\n // '=!'\n const nextChar = input.charCodeAt(state.pos + 1);\n if (nextChar === charCodes.equalsTo) {\n finishOp(tt.equality, input.charCodeAt(state.pos + 2) === charCodes.equalsTo ? 3 : 2);\n return;\n }\n if (code === charCodes.equalsTo && nextChar === charCodes.greaterThan) {\n // '=>'\n state.pos += 2;\n finishToken(tt.arrow);\n return;\n }\n finishOp(code === charCodes.equalsTo ? tt.eq : tt.bang, 1);\n}\n\nfunction readToken_question() {\n // '?'\n const nextChar = input.charCodeAt(state.pos + 1);\n const nextChar2 = input.charCodeAt(state.pos + 2);\n if (\n nextChar === charCodes.questionMark &&\n // In Flow (but not TypeScript), ??string is a valid type that should be\n // tokenized as two individual ? tokens.\n !(isFlowEnabled && state.isType)\n ) {\n if (nextChar2 === charCodes.equalsTo) {\n // '??='\n finishOp(tt.assign, 3);\n } else {\n // '??'\n finishOp(tt.nullishCoalescing, 2);\n }\n } else if (\n nextChar === charCodes.dot &&\n !(nextChar2 >= charCodes.digit0 && nextChar2 <= charCodes.digit9)\n ) {\n // '.' not followed by a number\n state.pos += 2;\n finishToken(tt.questionDot);\n } else {\n ++state.pos;\n finishToken(tt.question);\n }\n}\n\nexport function getTokenFromCode(code) {\n switch (code) {\n case charCodes.numberSign:\n ++state.pos;\n finishToken(tt.hash);\n return;\n\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n\n case charCodes.dot:\n readToken_dot();\n return;\n\n // Punctuation tokens.\n case charCodes.leftParenthesis:\n ++state.pos;\n finishToken(tt.parenL);\n return;\n case charCodes.rightParenthesis:\n ++state.pos;\n finishToken(tt.parenR);\n return;\n case charCodes.semicolon:\n ++state.pos;\n finishToken(tt.semi);\n return;\n case charCodes.comma:\n ++state.pos;\n finishToken(tt.comma);\n return;\n case charCodes.leftSquareBracket:\n ++state.pos;\n finishToken(tt.bracketL);\n return;\n case charCodes.rightSquareBracket:\n ++state.pos;\n finishToken(tt.bracketR);\n return;\n\n case charCodes.leftCurlyBrace:\n if (isFlowEnabled && input.charCodeAt(state.pos + 1) === charCodes.verticalBar) {\n finishOp(tt.braceBarL, 2);\n } else {\n ++state.pos;\n finishToken(tt.braceL);\n }\n return;\n\n case charCodes.rightCurlyBrace:\n ++state.pos;\n finishToken(tt.braceR);\n return;\n\n case charCodes.colon:\n if (input.charCodeAt(state.pos + 1) === charCodes.colon) {\n finishOp(tt.doubleColon, 2);\n } else {\n ++state.pos;\n finishToken(tt.colon);\n }\n return;\n\n case charCodes.questionMark:\n readToken_question();\n return;\n case charCodes.atSign:\n ++state.pos;\n finishToken(tt.at);\n return;\n\n case charCodes.graveAccent:\n ++state.pos;\n finishToken(tt.backQuote);\n return;\n\n case charCodes.digit0: {\n const nextChar = input.charCodeAt(state.pos + 1);\n // '0x', '0X', '0o', '0O', '0b', '0B'\n if (\n nextChar === charCodes.lowercaseX ||\n nextChar === charCodes.uppercaseX ||\n nextChar === charCodes.lowercaseO ||\n nextChar === charCodes.uppercaseO ||\n nextChar === charCodes.lowercaseB ||\n nextChar === charCodes.uppercaseB\n ) {\n readRadixNumber();\n return;\n }\n }\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case charCodes.digit1:\n case charCodes.digit2:\n case charCodes.digit3:\n case charCodes.digit4:\n case charCodes.digit5:\n case charCodes.digit6:\n case charCodes.digit7:\n case charCodes.digit8:\n case charCodes.digit9:\n readNumber(false);\n return;\n\n // Quotes produce strings.\n case charCodes.quotationMark:\n case charCodes.apostrophe:\n readString(code);\n return;\n\n // Operators are parsed inline in tiny state machines. '=' (charCodes.equalsTo) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case charCodes.slash:\n readToken_slash();\n return;\n\n case charCodes.percentSign:\n case charCodes.asterisk:\n readToken_mult_modulo(code);\n return;\n\n case charCodes.verticalBar:\n case charCodes.ampersand:\n readToken_pipe_amp(code);\n return;\n\n case charCodes.caret:\n readToken_caret();\n return;\n\n case charCodes.plusSign:\n case charCodes.dash:\n readToken_plus_min(code);\n return;\n\n case charCodes.lessThan:\n readToken_lt();\n return;\n\n case charCodes.greaterThan:\n readToken_gt();\n return;\n\n case charCodes.equalsTo:\n case charCodes.exclamationMark:\n readToken_eq_excl(code);\n return;\n\n case charCodes.tilde:\n finishOp(tt.tilde, 1);\n return;\n\n default:\n break;\n }\n\n unexpected(`Unexpected character '${String.fromCharCode(code)}'`, state.pos);\n}\n\nfunction finishOp(type, size) {\n state.pos += size;\n finishToken(type);\n}\n\nfunction readRegexp() {\n const start = state.pos;\n let escaped = false;\n let inClass = false;\n for (;;) {\n if (state.pos >= input.length) {\n unexpected(\"Unterminated regular expression\", start);\n return;\n }\n const code = input.charCodeAt(state.pos);\n if (escaped) {\n escaped = false;\n } else {\n if (code === charCodes.leftSquareBracket) {\n inClass = true;\n } else if (code === charCodes.rightSquareBracket && inClass) {\n inClass = false;\n } else if (code === charCodes.slash && !inClass) {\n break;\n }\n escaped = code === charCodes.backslash;\n }\n ++state.pos;\n }\n ++state.pos;\n // Need to use `skipWord` because '\\uXXXX' sequences are allowed here (don't ask).\n skipWord();\n\n finishToken(tt.regexp);\n}\n\n/**\n * Read a decimal integer. Note that this can't be unified with the similar code\n * in readRadixNumber (which also handles hex digits) because \"e\" needs to be\n * the end of the integer so that we can properly handle scientific notation.\n */\nfunction readInt() {\n while (true) {\n const code = input.charCodeAt(state.pos);\n if ((code >= charCodes.digit0 && code <= charCodes.digit9) || code === charCodes.underscore) {\n state.pos++;\n } else {\n break;\n }\n }\n}\n\nfunction readRadixNumber() {\n state.pos += 2; // 0x\n\n // Walk to the end of the number, allowing hex digits.\n while (true) {\n const code = input.charCodeAt(state.pos);\n if (\n (code >= charCodes.digit0 && code <= charCodes.digit9) ||\n (code >= charCodes.lowercaseA && code <= charCodes.lowercaseF) ||\n (code >= charCodes.uppercaseA && code <= charCodes.uppercaseF) ||\n code === charCodes.underscore\n ) {\n state.pos++;\n } else {\n break;\n }\n }\n\n const nextChar = input.charCodeAt(state.pos);\n if (nextChar === charCodes.lowercaseN) {\n ++state.pos;\n finishToken(tt.bigint);\n } else {\n finishToken(tt.num);\n }\n}\n\n// Read an integer, octal integer, or floating-point number.\nfunction readNumber(startsWithDot) {\n let isBigInt = false;\n let isDecimal = false;\n\n if (!startsWithDot) {\n readInt();\n }\n\n let nextChar = input.charCodeAt(state.pos);\n if (nextChar === charCodes.dot) {\n ++state.pos;\n readInt();\n nextChar = input.charCodeAt(state.pos);\n }\n\n if (nextChar === charCodes.uppercaseE || nextChar === charCodes.lowercaseE) {\n nextChar = input.charCodeAt(++state.pos);\n if (nextChar === charCodes.plusSign || nextChar === charCodes.dash) {\n ++state.pos;\n }\n readInt();\n nextChar = input.charCodeAt(state.pos);\n }\n\n if (nextChar === charCodes.lowercaseN) {\n ++state.pos;\n isBigInt = true;\n } else if (nextChar === charCodes.lowercaseM) {\n ++state.pos;\n isDecimal = true;\n }\n\n if (isBigInt) {\n finishToken(tt.bigint);\n return;\n }\n\n if (isDecimal) {\n finishToken(tt.decimal);\n return;\n }\n\n finishToken(tt.num);\n}\n\nfunction readString(quote) {\n state.pos++;\n for (;;) {\n if (state.pos >= input.length) {\n unexpected(\"Unterminated string constant\");\n return;\n }\n const ch = input.charCodeAt(state.pos);\n if (ch === charCodes.backslash) {\n state.pos++;\n } else if (ch === quote) {\n break;\n }\n state.pos++;\n }\n state.pos++;\n finishToken(tt.string);\n}\n\n// Reads template string tokens.\nfunction readTmplToken() {\n for (;;) {\n if (state.pos >= input.length) {\n unexpected(\"Unterminated template\");\n return;\n }\n const ch = input.charCodeAt(state.pos);\n if (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign && input.charCodeAt(state.pos + 1) === charCodes.leftCurlyBrace)\n ) {\n if (state.pos === state.start && match(tt.template)) {\n if (ch === charCodes.dollarSign) {\n state.pos += 2;\n finishToken(tt.dollarBraceL);\n return;\n } else {\n ++state.pos;\n finishToken(tt.backQuote);\n return;\n }\n }\n finishToken(tt.template);\n return;\n }\n if (ch === charCodes.backslash) {\n state.pos++;\n }\n state.pos++;\n }\n}\n\n// Skip to the end of the current word. Note that this is the same as the snippet at the end of\n// readWord, but calling skipWord from readWord seems to slightly hurt performance from some rough\n// measurements.\nexport function skipWord() {\n while (state.pos < input.length) {\n const ch = input.charCodeAt(state.pos);\n if (IS_IDENTIFIER_CHAR[ch]) {\n state.pos++;\n } else if (ch === charCodes.backslash) {\n // \\u\n state.pos += 2;\n if (input.charCodeAt(state.pos) === charCodes.leftCurlyBrace) {\n while (\n state.pos < input.length &&\n input.charCodeAt(state.pos) !== charCodes.rightCurlyBrace\n ) {\n state.pos++;\n }\n state.pos++;\n }\n } else {\n break;\n }\n }\n}\n", "import {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Determine information about this named import or named export specifier.\n *\n * This syntax is the `a` from statements like these:\n * import {A} from \"./foo\";\n * export {A};\n * export {A} from \"./foo\";\n *\n * As it turns out, we can exactly characterize the syntax meaning by simply\n * counting the number of tokens, which can be from 1 to 4:\n * {A}\n * {type A}\n * {A as B}\n * {type A as B}\n *\n * In the type case, we never actually need the names in practice, so don't get\n * them.\n *\n * TODO: There's some redundancy with the type detection here and the isType\n * flag that's already present on tokens in TS mode. This function could\n * potentially be simplified and/or pushed to the call sites to avoid the object\n * allocation.\n */\nexport default function getImportExportSpecifierInfo(\n tokens,\n index = tokens.currentIndex(),\n) {\n let endIndex = index + 1;\n if (isSpecifierEnd(tokens, endIndex)) {\n // import {A}\n const name = tokens.identifierNameAtIndex(index);\n return {\n isType: false,\n leftName: name,\n rightName: name,\n endIndex,\n };\n }\n endIndex++;\n if (isSpecifierEnd(tokens, endIndex)) {\n // import {type A}\n return {\n isType: true,\n leftName: null,\n rightName: null,\n endIndex,\n };\n }\n endIndex++;\n if (isSpecifierEnd(tokens, endIndex)) {\n // import {A as B}\n return {\n isType: false,\n leftName: tokens.identifierNameAtIndex(index),\n rightName: tokens.identifierNameAtIndex(index + 2),\n endIndex,\n };\n }\n endIndex++;\n if (isSpecifierEnd(tokens, endIndex)) {\n // import {type A as B}\n return {\n isType: true,\n leftName: null,\n rightName: null,\n endIndex,\n };\n }\n throw new Error(`Unexpected import/export specifier at ${index}`);\n}\n\nfunction isSpecifierEnd(tokens, index) {\n const token = tokens.tokens[index];\n return token.type === tt.braceR || token.type === tt.comma;\n}\n", "// Use a Map rather than object to avoid unexpected __proto__ access.\nexport default new Map([\n [\"quot\", \"\\u0022\"],\n [\"amp\", \"&\"],\n [\"apos\", \"\\u0027\"],\n [\"lt\", \"<\"],\n [\"gt\", \">\"],\n [\"nbsp\", \"\\u00A0\"],\n [\"iexcl\", \"\\u00A1\"],\n [\"cent\", \"\\u00A2\"],\n [\"pound\", \"\\u00A3\"],\n [\"curren\", \"\\u00A4\"],\n [\"yen\", \"\\u00A5\"],\n [\"brvbar\", \"\\u00A6\"],\n [\"sect\", \"\\u00A7\"],\n [\"uml\", \"\\u00A8\"],\n [\"copy\", \"\\u00A9\"],\n [\"ordf\", \"\\u00AA\"],\n [\"laquo\", \"\\u00AB\"],\n [\"not\", \"\\u00AC\"],\n [\"shy\", \"\\u00AD\"],\n [\"reg\", \"\\u00AE\"],\n [\"macr\", \"\\u00AF\"],\n [\"deg\", \"\\u00B0\"],\n [\"plusmn\", \"\\u00B1\"],\n [\"sup2\", \"\\u00B2\"],\n [\"sup3\", \"\\u00B3\"],\n [\"acute\", \"\\u00B4\"],\n [\"micro\", \"\\u00B5\"],\n [\"para\", \"\\u00B6\"],\n [\"middot\", \"\\u00B7\"],\n [\"cedil\", \"\\u00B8\"],\n [\"sup1\", \"\\u00B9\"],\n [\"ordm\", \"\\u00BA\"],\n [\"raquo\", \"\\u00BB\"],\n [\"frac14\", \"\\u00BC\"],\n [\"frac12\", \"\\u00BD\"],\n [\"frac34\", \"\\u00BE\"],\n [\"iquest\", \"\\u00BF\"],\n [\"Agrave\", \"\\u00C0\"],\n [\"Aacute\", \"\\u00C1\"],\n [\"Acirc\", \"\\u00C2\"],\n [\"Atilde\", \"\\u00C3\"],\n [\"Auml\", \"\\u00C4\"],\n [\"Aring\", \"\\u00C5\"],\n [\"AElig\", \"\\u00C6\"],\n [\"Ccedil\", \"\\u00C7\"],\n [\"Egrave\", \"\\u00C8\"],\n [\"Eacute\", \"\\u00C9\"],\n [\"Ecirc\", \"\\u00CA\"],\n [\"Euml\", \"\\u00CB\"],\n [\"Igrave\", \"\\u00CC\"],\n [\"Iacute\", \"\\u00CD\"],\n [\"Icirc\", \"\\u00CE\"],\n [\"Iuml\", \"\\u00CF\"],\n [\"ETH\", \"\\u00D0\"],\n [\"Ntilde\", \"\\u00D1\"],\n [\"Ograve\", \"\\u00D2\"],\n [\"Oacute\", \"\\u00D3\"],\n [\"Ocirc\", \"\\u00D4\"],\n [\"Otilde\", \"\\u00D5\"],\n [\"Ouml\", \"\\u00D6\"],\n [\"times\", \"\\u00D7\"],\n [\"Oslash\", \"\\u00D8\"],\n [\"Ugrave\", \"\\u00D9\"],\n [\"Uacute\", \"\\u00DA\"],\n [\"Ucirc\", \"\\u00DB\"],\n [\"Uuml\", \"\\u00DC\"],\n [\"Yacute\", \"\\u00DD\"],\n [\"THORN\", \"\\u00DE\"],\n [\"szlig\", \"\\u00DF\"],\n [\"agrave\", \"\\u00E0\"],\n [\"aacute\", \"\\u00E1\"],\n [\"acirc\", \"\\u00E2\"],\n [\"atilde\", \"\\u00E3\"],\n [\"auml\", \"\\u00E4\"],\n [\"aring\", \"\\u00E5\"],\n [\"aelig\", \"\\u00E6\"],\n [\"ccedil\", \"\\u00E7\"],\n [\"egrave\", \"\\u00E8\"],\n [\"eacute\", \"\\u00E9\"],\n [\"ecirc\", \"\\u00EA\"],\n [\"euml\", \"\\u00EB\"],\n [\"igrave\", \"\\u00EC\"],\n [\"iacute\", \"\\u00ED\"],\n [\"icirc\", \"\\u00EE\"],\n [\"iuml\", \"\\u00EF\"],\n [\"eth\", \"\\u00F0\"],\n [\"ntilde\", \"\\u00F1\"],\n [\"ograve\", \"\\u00F2\"],\n [\"oacute\", \"\\u00F3\"],\n [\"ocirc\", \"\\u00F4\"],\n [\"otilde\", \"\\u00F5\"],\n [\"ouml\", \"\\u00F6\"],\n [\"divide\", \"\\u00F7\"],\n [\"oslash\", \"\\u00F8\"],\n [\"ugrave\", \"\\u00F9\"],\n [\"uacute\", \"\\u00FA\"],\n [\"ucirc\", \"\\u00FB\"],\n [\"uuml\", \"\\u00FC\"],\n [\"yacute\", \"\\u00FD\"],\n [\"thorn\", \"\\u00FE\"],\n [\"yuml\", \"\\u00FF\"],\n [\"OElig\", \"\\u0152\"],\n [\"oelig\", \"\\u0153\"],\n [\"Scaron\", \"\\u0160\"],\n [\"scaron\", \"\\u0161\"],\n [\"Yuml\", \"\\u0178\"],\n [\"fnof\", \"\\u0192\"],\n [\"circ\", \"\\u02C6\"],\n [\"tilde\", \"\\u02DC\"],\n [\"Alpha\", \"\\u0391\"],\n [\"Beta\", \"\\u0392\"],\n [\"Gamma\", \"\\u0393\"],\n [\"Delta\", \"\\u0394\"],\n [\"Epsilon\", \"\\u0395\"],\n [\"Zeta\", \"\\u0396\"],\n [\"Eta\", \"\\u0397\"],\n [\"Theta\", \"\\u0398\"],\n [\"Iota\", \"\\u0399\"],\n [\"Kappa\", \"\\u039A\"],\n [\"Lambda\", \"\\u039B\"],\n [\"Mu\", \"\\u039C\"],\n [\"Nu\", \"\\u039D\"],\n [\"Xi\", \"\\u039E\"],\n [\"Omicron\", \"\\u039F\"],\n [\"Pi\", \"\\u03A0\"],\n [\"Rho\", \"\\u03A1\"],\n [\"Sigma\", \"\\u03A3\"],\n [\"Tau\", \"\\u03A4\"],\n [\"Upsilon\", \"\\u03A5\"],\n [\"Phi\", \"\\u03A6\"],\n [\"Chi\", \"\\u03A7\"],\n [\"Psi\", \"\\u03A8\"],\n [\"Omega\", \"\\u03A9\"],\n [\"alpha\", \"\\u03B1\"],\n [\"beta\", \"\\u03B2\"],\n [\"gamma\", \"\\u03B3\"],\n [\"delta\", \"\\u03B4\"],\n [\"epsilon\", \"\\u03B5\"],\n [\"zeta\", \"\\u03B6\"],\n [\"eta\", \"\\u03B7\"],\n [\"theta\", \"\\u03B8\"],\n [\"iota\", \"\\u03B9\"],\n [\"kappa\", \"\\u03BA\"],\n [\"lambda\", \"\\u03BB\"],\n [\"mu\", \"\\u03BC\"],\n [\"nu\", \"\\u03BD\"],\n [\"xi\", \"\\u03BE\"],\n [\"omicron\", \"\\u03BF\"],\n [\"pi\", \"\\u03C0\"],\n [\"rho\", \"\\u03C1\"],\n [\"sigmaf\", \"\\u03C2\"],\n [\"sigma\", \"\\u03C3\"],\n [\"tau\", \"\\u03C4\"],\n [\"upsilon\", \"\\u03C5\"],\n [\"phi\", \"\\u03C6\"],\n [\"chi\", \"\\u03C7\"],\n [\"psi\", \"\\u03C8\"],\n [\"omega\", \"\\u03C9\"],\n [\"thetasym\", \"\\u03D1\"],\n [\"upsih\", \"\\u03D2\"],\n [\"piv\", \"\\u03D6\"],\n [\"ensp\", \"\\u2002\"],\n [\"emsp\", \"\\u2003\"],\n [\"thinsp\", \"\\u2009\"],\n [\"zwnj\", \"\\u200C\"],\n [\"zwj\", \"\\u200D\"],\n [\"lrm\", \"\\u200E\"],\n [\"rlm\", \"\\u200F\"],\n [\"ndash\", \"\\u2013\"],\n [\"mdash\", \"\\u2014\"],\n [\"lsquo\", \"\\u2018\"],\n [\"rsquo\", \"\\u2019\"],\n [\"sbquo\", \"\\u201A\"],\n [\"ldquo\", \"\\u201C\"],\n [\"rdquo\", \"\\u201D\"],\n [\"bdquo\", \"\\u201E\"],\n [\"dagger\", \"\\u2020\"],\n [\"Dagger\", \"\\u2021\"],\n [\"bull\", \"\\u2022\"],\n [\"hellip\", \"\\u2026\"],\n [\"permil\", \"\\u2030\"],\n [\"prime\", \"\\u2032\"],\n [\"Prime\", \"\\u2033\"],\n [\"lsaquo\", \"\\u2039\"],\n [\"rsaquo\", \"\\u203A\"],\n [\"oline\", \"\\u203E\"],\n [\"frasl\", \"\\u2044\"],\n [\"euro\", \"\\u20AC\"],\n [\"image\", \"\\u2111\"],\n [\"weierp\", \"\\u2118\"],\n [\"real\", \"\\u211C\"],\n [\"trade\", \"\\u2122\"],\n [\"alefsym\", \"\\u2135\"],\n [\"larr\", \"\\u2190\"],\n [\"uarr\", \"\\u2191\"],\n [\"rarr\", \"\\u2192\"],\n [\"darr\", \"\\u2193\"],\n [\"harr\", \"\\u2194\"],\n [\"crarr\", \"\\u21B5\"],\n [\"lArr\", \"\\u21D0\"],\n [\"uArr\", \"\\u21D1\"],\n [\"rArr\", \"\\u21D2\"],\n [\"dArr\", \"\\u21D3\"],\n [\"hArr\", \"\\u21D4\"],\n [\"forall\", \"\\u2200\"],\n [\"part\", \"\\u2202\"],\n [\"exist\", \"\\u2203\"],\n [\"empty\", \"\\u2205\"],\n [\"nabla\", \"\\u2207\"],\n [\"isin\", \"\\u2208\"],\n [\"notin\", \"\\u2209\"],\n [\"ni\", \"\\u220B\"],\n [\"prod\", \"\\u220F\"],\n [\"sum\", \"\\u2211\"],\n [\"minus\", \"\\u2212\"],\n [\"lowast\", \"\\u2217\"],\n [\"radic\", \"\\u221A\"],\n [\"prop\", \"\\u221D\"],\n [\"infin\", \"\\u221E\"],\n [\"ang\", \"\\u2220\"],\n [\"and\", \"\\u2227\"],\n [\"or\", \"\\u2228\"],\n [\"cap\", \"\\u2229\"],\n [\"cup\", \"\\u222A\"],\n [\"int\", \"\\u222B\"],\n [\"there4\", \"\\u2234\"],\n [\"sim\", \"\\u223C\"],\n [\"cong\", \"\\u2245\"],\n [\"asymp\", \"\\u2248\"],\n [\"ne\", \"\\u2260\"],\n [\"equiv\", \"\\u2261\"],\n [\"le\", \"\\u2264\"],\n [\"ge\", \"\\u2265\"],\n [\"sub\", \"\\u2282\"],\n [\"sup\", \"\\u2283\"],\n [\"nsub\", \"\\u2284\"],\n [\"sube\", \"\\u2286\"],\n [\"supe\", \"\\u2287\"],\n [\"oplus\", \"\\u2295\"],\n [\"otimes\", \"\\u2297\"],\n [\"perp\", \"\\u22A5\"],\n [\"sdot\", \"\\u22C5\"],\n [\"lceil\", \"\\u2308\"],\n [\"rceil\", \"\\u2309\"],\n [\"lfloor\", \"\\u230A\"],\n [\"rfloor\", \"\\u230B\"],\n [\"lang\", \"\\u2329\"],\n [\"rang\", \"\\u232A\"],\n [\"loz\", \"\\u25CA\"],\n [\"spades\", \"\\u2660\"],\n [\"clubs\", \"\\u2663\"],\n [\"hearts\", \"\\u2665\"],\n [\"diams\", \"\\u2666\"],\n]);\n", "\n\n\n\n\n\n\n\n\nexport default function getJSXPragmaInfo(options) {\n const [base, suffix] = splitPragma(options.jsxPragma || \"React.createElement\");\n const [fragmentBase, fragmentSuffix] = splitPragma(options.jsxFragmentPragma || \"React.Fragment\");\n return {base, suffix, fragmentBase, fragmentSuffix};\n}\n\nfunction splitPragma(pragma) {\n let dotIndex = pragma.indexOf(\".\");\n if (dotIndex === -1) {\n dotIndex = pragma.length;\n }\n return [pragma.slice(0, dotIndex), pragma.slice(dotIndex)];\n}\n", "export default class Transformer {\n // Return true if anything was processed, false otherwise.\n \n\n getPrefixCode() {\n return \"\";\n }\n\n getHoistedCode() {\n return \"\";\n }\n\n getSuffixCode() {\n return \"\";\n }\n}\n", "\n\n\nimport XHTMLEntities from \"../parser/plugins/jsx/xhtml\";\nimport {JSXRole} from \"../parser/tokenizer\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\nimport {charCodes} from \"../parser/util/charcodes\";\n\nimport getJSXPragmaInfo, {} from \"../util/getJSXPragmaInfo\";\n\nimport Transformer from \"./Transformer\";\n\nexport default class JSXTransformer extends Transformer {\n \n \n \n\n // State for calculating the line number of each JSX tag in development.\n __init() {this.lastLineNumber = 1}\n __init2() {this.lastIndex = 0}\n\n // In development, variable name holding the name of the current file.\n __init3() {this.filenameVarName = null}\n // Mapping of claimed names for imports in the automatic transform, e,g.\n // {jsx: \"_jsx\"}. This determines which imports to generate in the prefix.\n __init4() {this.esmAutomaticImportNameResolutions = {}}\n // When automatically adding imports in CJS mode, we store the variable name\n // holding the imported CJS module so we can require it in the prefix.\n __init5() {this.cjsAutomaticModuleNameResolutions = {}}\n\n constructor(\n rootTransformer,\n tokens,\n importProcessor,\n nameManager,\n options,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.importProcessor = importProcessor;this.nameManager = nameManager;this.options = options;JSXTransformer.prototype.__init.call(this);JSXTransformer.prototype.__init2.call(this);JSXTransformer.prototype.__init3.call(this);JSXTransformer.prototype.__init4.call(this);JSXTransformer.prototype.__init5.call(this);;\n this.jsxPragmaInfo = getJSXPragmaInfo(options);\n this.isAutomaticRuntime = options.jsxRuntime === \"automatic\";\n this.jsxImportSource = options.jsxImportSource || \"react\";\n }\n\n process() {\n if (this.tokens.matches1(tt.jsxTagStart)) {\n this.processJSXTag();\n return true;\n }\n return false;\n }\n\n getPrefixCode() {\n let prefix = \"\";\n if (this.filenameVarName) {\n prefix += `const ${this.filenameVarName} = ${JSON.stringify(this.options.filePath || \"\")};`;\n }\n if (this.isAutomaticRuntime) {\n if (this.importProcessor) {\n // CJS mode: emit require statements for all modules that were referenced.\n for (const [path, resolvedName] of Object.entries(this.cjsAutomaticModuleNameResolutions)) {\n prefix += `var ${resolvedName} = require(\"${path}\");`;\n }\n } else {\n // ESM mode: consolidate and emit import statements for referenced names.\n const {createElement: createElementResolution, ...otherResolutions} =\n this.esmAutomaticImportNameResolutions;\n if (createElementResolution) {\n prefix += `import {createElement as ${createElementResolution}} from \"${this.jsxImportSource}\";`;\n }\n const importSpecifiers = Object.entries(otherResolutions)\n .map(([name, resolvedName]) => `${name} as ${resolvedName}`)\n .join(\", \");\n if (importSpecifiers) {\n const importPath =\n this.jsxImportSource + (this.options.production ? \"/jsx-runtime\" : \"/jsx-dev-runtime\");\n prefix += `import {${importSpecifiers}} from \"${importPath}\";`;\n }\n }\n }\n return prefix;\n }\n\n processJSXTag() {\n const {jsxRole, start} = this.tokens.currentToken();\n // Calculate line number information at the very start (if in development\n // mode) so that the information is guaranteed to be queried in token order.\n const elementLocationCode = this.options.production ? null : this.getElementLocationCode(start);\n if (this.isAutomaticRuntime && jsxRole !== JSXRole.KeyAfterPropSpread) {\n this.transformTagToJSXFunc(elementLocationCode, jsxRole);\n } else {\n this.transformTagToCreateElement(elementLocationCode);\n }\n }\n\n getElementLocationCode(firstTokenStart) {\n const lineNumber = this.getLineNumberForIndex(firstTokenStart);\n return `lineNumber: ${lineNumber}`;\n }\n\n /**\n * Get the line number for this source position. This is calculated lazily and\n * must be called in increasing order by index.\n */\n getLineNumberForIndex(index) {\n const code = this.tokens.code;\n while (this.lastIndex < index && this.lastIndex < code.length) {\n if (code[this.lastIndex] === \"\\n\") {\n this.lastLineNumber++;\n }\n this.lastIndex++;\n }\n return this.lastLineNumber;\n }\n\n /**\n * Convert the current JSX element to a call to jsx, jsxs, or jsxDEV. This is\n * the primary transformation for the automatic transform.\n *\n * Example:\n * <div a={1} key={2}>Hello{x}</div>\n * becomes\n * jsxs('div', {a: 1, children: [\"Hello\", x]}, 2)\n */\n transformTagToJSXFunc(elementLocationCode, jsxRole) {\n const isStatic = jsxRole === JSXRole.StaticChildren;\n // First tag is always jsxTagStart.\n this.tokens.replaceToken(this.getJSXFuncInvocationCode(isStatic));\n\n let keyCode = null;\n if (this.tokens.matches1(tt.jsxTagEnd)) {\n // Fragment syntax.\n this.tokens.replaceToken(`${this.getFragmentCode()}, {`);\n this.processAutomaticChildrenAndEndProps(jsxRole);\n } else {\n // Normal open tag or self-closing tag.\n this.processTagIntro();\n this.tokens.appendCode(\", {\");\n keyCode = this.processProps(true);\n\n if (this.tokens.matches2(tt.slash, tt.jsxTagEnd)) {\n // Self-closing tag, no children to add, so close the props.\n this.tokens.appendCode(\"}\");\n } else if (this.tokens.matches1(tt.jsxTagEnd)) {\n // Tag with children.\n this.tokens.removeToken();\n this.processAutomaticChildrenAndEndProps(jsxRole);\n } else {\n throw new Error(\"Expected either /> or > at the end of the tag.\");\n }\n // If a key was present, move it to its own arg. Note that moving code\n // like this will cause line numbers to get out of sync within the JSX\n // element if the key expression has a newline in it. This is unfortunate,\n // but hopefully should be rare.\n if (keyCode) {\n this.tokens.appendCode(`, ${keyCode}`);\n }\n }\n if (!this.options.production) {\n // If the key wasn't already added, add it now so we can correctly set\n // positional args for jsxDEV.\n if (keyCode === null) {\n this.tokens.appendCode(\", void 0\");\n }\n this.tokens.appendCode(`, ${isStatic}, ${this.getDevSource(elementLocationCode)}, this`);\n }\n // We're at the close-tag or the end of a self-closing tag, so remove\n // everything else and close the function call.\n this.tokens.removeInitialToken();\n while (!this.tokens.matches1(tt.jsxTagEnd)) {\n this.tokens.removeToken();\n }\n this.tokens.replaceToken(\")\");\n }\n\n /**\n * Convert the current JSX element to a createElement call. In the classic\n * runtime, this is the only case. In the automatic runtime, this is called\n * as a fallback in some situations.\n *\n * Example:\n * <div a={1} key={2}>Hello{x}</div>\n * becomes\n * React.createElement('div', {a: 1, key: 2}, \"Hello\", x)\n */\n transformTagToCreateElement(elementLocationCode) {\n // First tag is always jsxTagStart.\n this.tokens.replaceToken(this.getCreateElementInvocationCode());\n\n if (this.tokens.matches1(tt.jsxTagEnd)) {\n // Fragment syntax.\n this.tokens.replaceToken(`${this.getFragmentCode()}, null`);\n this.processChildren(true);\n } else {\n // Normal open tag or self-closing tag.\n this.processTagIntro();\n this.processPropsObjectWithDevInfo(elementLocationCode);\n\n if (this.tokens.matches2(tt.slash, tt.jsxTagEnd)) {\n // Self-closing tag; no children to process.\n } else if (this.tokens.matches1(tt.jsxTagEnd)) {\n // Tag with children and a close-tag; process the children as args.\n this.tokens.removeToken();\n this.processChildren(true);\n } else {\n throw new Error(\"Expected either /> or > at the end of the tag.\");\n }\n }\n // We're at the close-tag or the end of a self-closing tag, so remove\n // everything else and close the function call.\n this.tokens.removeInitialToken();\n while (!this.tokens.matches1(tt.jsxTagEnd)) {\n this.tokens.removeToken();\n }\n this.tokens.replaceToken(\")\");\n }\n\n /**\n * Get the code for the relevant function for this context: jsx, jsxs,\n * or jsxDEV. The following open-paren is included as well.\n *\n * These functions are only used for the automatic runtime, so they are always\n * auto-imported, but the auto-import will be either CJS or ESM based on the\n * target module format.\n */\n getJSXFuncInvocationCode(isStatic) {\n if (this.options.production) {\n if (isStatic) {\n return this.claimAutoImportedFuncInvocation(\"jsxs\", \"/jsx-runtime\");\n } else {\n return this.claimAutoImportedFuncInvocation(\"jsx\", \"/jsx-runtime\");\n }\n } else {\n return this.claimAutoImportedFuncInvocation(\"jsxDEV\", \"/jsx-dev-runtime\");\n }\n }\n\n /**\n * Return the code to use for the createElement function, e.g.\n * `React.createElement`, including the following open-paren.\n *\n * This is the main function to use for the classic runtime. For the\n * automatic runtime, this function is used as a fallback function to\n * preserve behavior when there is a prop spread followed by an explicit\n * key. In that automatic runtime case, the function should be automatically\n * imported.\n */\n getCreateElementInvocationCode() {\n if (this.isAutomaticRuntime) {\n return this.claimAutoImportedFuncInvocation(\"createElement\", \"\");\n } else {\n const {jsxPragmaInfo} = this;\n const resolvedPragmaBaseName = this.importProcessor\n ? this.importProcessor.getIdentifierReplacement(jsxPragmaInfo.base) || jsxPragmaInfo.base\n : jsxPragmaInfo.base;\n return `${resolvedPragmaBaseName}${jsxPragmaInfo.suffix}(`;\n }\n }\n\n /**\n * Return the code to use as the component when compiling a shorthand\n * fragment, e.g. `React.Fragment`.\n *\n * This may be called from either the classic or automatic runtime, and\n * the value should be auto-imported for the automatic runtime.\n */\n getFragmentCode() {\n if (this.isAutomaticRuntime) {\n return this.claimAutoImportedName(\n \"Fragment\",\n this.options.production ? \"/jsx-runtime\" : \"/jsx-dev-runtime\",\n );\n } else {\n const {jsxPragmaInfo} = this;\n const resolvedFragmentPragmaBaseName = this.importProcessor\n ? this.importProcessor.getIdentifierReplacement(jsxPragmaInfo.fragmentBase) ||\n jsxPragmaInfo.fragmentBase\n : jsxPragmaInfo.fragmentBase;\n return resolvedFragmentPragmaBaseName + jsxPragmaInfo.fragmentSuffix;\n }\n }\n\n /**\n * Return code that invokes the given function.\n *\n * When the imports transform is enabled, use the CJSImportTransformer\n * strategy of using `.call(void 0, ...` to avoid passing a `this` value in a\n * situation that would otherwise look like a method call.\n */\n claimAutoImportedFuncInvocation(funcName, importPathSuffix) {\n const funcCode = this.claimAutoImportedName(funcName, importPathSuffix);\n if (this.importProcessor) {\n return `${funcCode}.call(void 0, `;\n } else {\n return `${funcCode}(`;\n }\n }\n\n claimAutoImportedName(funcName, importPathSuffix) {\n if (this.importProcessor) {\n // CJS mode: claim a name for the module and mark it for import.\n const path = this.jsxImportSource + importPathSuffix;\n if (!this.cjsAutomaticModuleNameResolutions[path]) {\n this.cjsAutomaticModuleNameResolutions[path] =\n this.importProcessor.getFreeIdentifierForPath(path);\n }\n return `${this.cjsAutomaticModuleNameResolutions[path]}.${funcName}`;\n } else {\n // ESM mode: claim a name for this function and add it to the names that\n // should be auto-imported when the prefix is generated.\n if (!this.esmAutomaticImportNameResolutions[funcName]) {\n this.esmAutomaticImportNameResolutions[funcName] = this.nameManager.claimFreeName(\n `_${funcName}`,\n );\n }\n return this.esmAutomaticImportNameResolutions[funcName];\n }\n }\n\n /**\n * Process the first part of a tag, before any props.\n */\n processTagIntro() {\n // Walk forward until we see one of these patterns:\n // jsxName to start the first prop, preceded by another jsxName to end the tag name.\n // jsxName to start the first prop, preceded by greaterThan to end the type argument.\n // [open brace] to start the first prop.\n // [jsxTagEnd] to end the open-tag.\n // [slash, jsxTagEnd] to end the self-closing tag.\n let introEnd = this.tokens.currentIndex() + 1;\n while (\n this.tokens.tokens[introEnd].isType ||\n (!this.tokens.matches2AtIndex(introEnd - 1, tt.jsxName, tt.jsxName) &&\n !this.tokens.matches2AtIndex(introEnd - 1, tt.greaterThan, tt.jsxName) &&\n !this.tokens.matches1AtIndex(introEnd, tt.braceL) &&\n !this.tokens.matches1AtIndex(introEnd, tt.jsxTagEnd) &&\n !this.tokens.matches2AtIndex(introEnd, tt.slash, tt.jsxTagEnd))\n ) {\n introEnd++;\n }\n if (introEnd === this.tokens.currentIndex() + 1) {\n const tagName = this.tokens.identifierName();\n if (startsWithLowerCase(tagName)) {\n this.tokens.replaceToken(`'${tagName}'`);\n }\n }\n while (this.tokens.currentIndex() < introEnd) {\n this.rootTransformer.processToken();\n }\n }\n\n /**\n * Starting at the beginning of the props, add the props argument to\n * React.createElement, including the comma before it.\n */\n processPropsObjectWithDevInfo(elementLocationCode) {\n const devProps = this.options.production\n ? \"\"\n : `__self: this, __source: ${this.getDevSource(elementLocationCode)}`;\n if (!this.tokens.matches1(tt.jsxName) && !this.tokens.matches1(tt.braceL)) {\n if (devProps) {\n this.tokens.appendCode(`, {${devProps}}`);\n } else {\n this.tokens.appendCode(`, null`);\n }\n return;\n }\n this.tokens.appendCode(`, {`);\n this.processProps(false);\n if (devProps) {\n this.tokens.appendCode(` ${devProps}}`);\n } else {\n this.tokens.appendCode(\"}\");\n }\n }\n\n /**\n * Transform the core part of the props, assuming that a { has already been\n * inserted before us and that a } will be inserted after us.\n *\n * If extractKeyCode is true (i.e. when using any jsx... function), any prop\n * named \"key\" has its code captured and returned rather than being emitted to\n * the output code. This shifts line numbers, and emitting the code later will\n * correct line numbers again. If no key is found or if extractKeyCode is\n * false, this function returns null.\n */\n processProps(extractKeyCode) {\n let keyCode = null;\n while (true) {\n if (this.tokens.matches2(tt.jsxName, tt.eq)) {\n // This is a regular key={value} or key=\"value\" prop.\n const propName = this.tokens.identifierName();\n if (extractKeyCode && propName === \"key\") {\n if (keyCode !== null) {\n // The props list has multiple keys. Different implementations are\n // inconsistent about what to do here: as of this writing, Babel and\n // swc keep the *last* key and completely remove the rest, while\n // TypeScript uses the *first* key and leaves the others as regular\n // props. The React team collaborated with Babel on the\n // implementation of this behavior, so presumably the Babel behavior\n // is the one to use.\n // Since we won't ever be emitting the previous key code, we need to\n // at least emit its newlines here so that the line numbers match up\n // in the long run.\n this.tokens.appendCode(keyCode.replace(/[^\\n]/g, \"\"));\n }\n // key\n this.tokens.removeToken();\n // =\n this.tokens.removeToken();\n const snapshot = this.tokens.snapshot();\n this.processPropValue();\n keyCode = this.tokens.dangerouslyGetAndRemoveCodeSinceSnapshot(snapshot);\n // Don't add a comma\n continue;\n } else {\n this.processPropName(propName);\n this.tokens.replaceToken(\": \");\n this.processPropValue();\n }\n } else if (this.tokens.matches1(tt.jsxName)) {\n // This is a shorthand prop like <input disabled />.\n const propName = this.tokens.identifierName();\n this.processPropName(propName);\n this.tokens.appendCode(\": true\");\n } else if (this.tokens.matches1(tt.braceL)) {\n // This is prop spread, like <div {...getProps()}>, which we can pass\n // through fairly directly as an object spread.\n this.tokens.replaceToken(\"\");\n this.rootTransformer.processBalancedCode();\n this.tokens.replaceToken(\"\");\n } else {\n break;\n }\n this.tokens.appendCode(\",\");\n }\n return keyCode;\n }\n\n processPropName(propName) {\n if (propName.includes(\"-\")) {\n this.tokens.replaceToken(`'${propName}'`);\n } else {\n this.tokens.copyToken();\n }\n }\n\n processPropValue() {\n if (this.tokens.matches1(tt.braceL)) {\n this.tokens.replaceToken(\"\");\n this.rootTransformer.processBalancedCode();\n this.tokens.replaceToken(\"\");\n } else if (this.tokens.matches1(tt.jsxTagStart)) {\n this.processJSXTag();\n } else {\n this.processStringPropValue();\n }\n }\n\n processStringPropValue() {\n const token = this.tokens.currentToken();\n const valueCode = this.tokens.code.slice(token.start + 1, token.end - 1);\n const replacementCode = formatJSXTextReplacement(valueCode);\n const literalCode = formatJSXStringValueLiteral(valueCode);\n this.tokens.replaceToken(literalCode + replacementCode);\n }\n\n /**\n * Starting in the middle of the props object literal, produce an additional\n * prop for the children and close the object literal.\n */\n processAutomaticChildrenAndEndProps(jsxRole) {\n if (jsxRole === JSXRole.StaticChildren) {\n this.tokens.appendCode(\" children: [\");\n this.processChildren(false);\n this.tokens.appendCode(\"]}\");\n } else {\n // The parser information tells us whether we will see a real child or if\n // all remaining children (if any) will resolve to empty. If there are no\n // non-empty children, don't emit a children prop at all, but still\n // process children so that we properly transform the code into nothing.\n if (jsxRole === JSXRole.OneChild) {\n this.tokens.appendCode(\" children: \");\n }\n this.processChildren(false);\n this.tokens.appendCode(\"}\");\n }\n }\n\n /**\n * Transform children into a comma-separated list, which will be either\n * arguments to createElement or array elements of a children prop.\n */\n processChildren(needsInitialComma) {\n let needsComma = needsInitialComma;\n while (true) {\n if (this.tokens.matches2(tt.jsxTagStart, tt.slash)) {\n // Closing tag, so no more children.\n return;\n }\n let didEmitElement = false;\n if (this.tokens.matches1(tt.braceL)) {\n if (this.tokens.matches2(tt.braceL, tt.braceR)) {\n // Empty interpolations and comment-only interpolations are allowed\n // and don't create an extra child arg.\n this.tokens.replaceToken(\"\");\n this.tokens.replaceToken(\"\");\n } else {\n // Interpolated expression.\n this.tokens.replaceToken(needsComma ? \", \" : \"\");\n this.rootTransformer.processBalancedCode();\n this.tokens.replaceToken(\"\");\n didEmitElement = true;\n }\n } else if (this.tokens.matches1(tt.jsxTagStart)) {\n // Child JSX element\n this.tokens.appendCode(needsComma ? \", \" : \"\");\n this.processJSXTag();\n didEmitElement = true;\n } else if (this.tokens.matches1(tt.jsxText) || this.tokens.matches1(tt.jsxEmptyText)) {\n didEmitElement = this.processChildTextElement(needsComma);\n } else {\n throw new Error(\"Unexpected token when processing JSX children.\");\n }\n if (didEmitElement) {\n needsComma = true;\n }\n }\n }\n\n /**\n * Turn a JSX text element into a string literal, or nothing at all if the JSX\n * text resolves to the empty string.\n *\n * Returns true if a string literal is emitted, false otherwise.\n */\n processChildTextElement(needsComma) {\n const token = this.tokens.currentToken();\n const valueCode = this.tokens.code.slice(token.start, token.end);\n const replacementCode = formatJSXTextReplacement(valueCode);\n const literalCode = formatJSXTextLiteral(valueCode);\n if (literalCode === '\"\"') {\n this.tokens.replaceToken(replacementCode);\n return false;\n } else {\n this.tokens.replaceToken(`${needsComma ? \", \" : \"\"}${literalCode}${replacementCode}`);\n return true;\n }\n }\n\n getDevSource(elementLocationCode) {\n return `{fileName: ${this.getFilenameVarName()}, ${elementLocationCode}}`;\n }\n\n getFilenameVarName() {\n if (!this.filenameVarName) {\n this.filenameVarName = this.nameManager.claimFreeName(\"_jsxFileName\");\n }\n return this.filenameVarName;\n }\n}\n\n/**\n * Spec for identifiers: https://tc39.github.io/ecma262/#prod-IdentifierStart.\n *\n * Really only treat anything starting with a-z as tag names. `_`, `$`, `\u00E9`\n * should be treated as component names\n */\nexport function startsWithLowerCase(s) {\n const firstChar = s.charCodeAt(0);\n return firstChar >= charCodes.lowercaseA && firstChar <= charCodes.lowercaseZ;\n}\n\n/**\n * Turn the given jsxText string into a JS string literal. Leading and trailing\n * whitespace on lines is removed, except immediately after the open-tag and\n * before the close-tag. Empty lines are completely removed, and spaces are\n * added between lines after that.\n *\n * We use JSON.stringify to introduce escape characters as necessary, and trim\n * the start and end of each line and remove blank lines.\n */\nfunction formatJSXTextLiteral(text) {\n let result = \"\";\n let whitespace = \"\";\n\n let isInInitialLineWhitespace = false;\n let seenNonWhitespace = false;\n for (let i = 0; i < text.length; i++) {\n const c = text[i];\n if (c === \" \" || c === \"\\t\" || c === \"\\r\") {\n if (!isInInitialLineWhitespace) {\n whitespace += c;\n }\n } else if (c === \"\\n\") {\n whitespace = \"\";\n isInInitialLineWhitespace = true;\n } else {\n if (seenNonWhitespace && isInInitialLineWhitespace) {\n result += \" \";\n }\n result += whitespace;\n whitespace = \"\";\n if (c === \"&\") {\n const {entity, newI} = processEntity(text, i + 1);\n i = newI - 1;\n result += entity;\n } else {\n result += c;\n }\n seenNonWhitespace = true;\n isInInitialLineWhitespace = false;\n }\n }\n if (!isInInitialLineWhitespace) {\n result += whitespace;\n }\n return JSON.stringify(result);\n}\n\n/**\n * Produce the code that should be printed after the JSX text string literal,\n * with most content removed, but all newlines preserved and all spacing at the\n * end preserved.\n */\nfunction formatJSXTextReplacement(text) {\n let numNewlines = 0;\n let numSpaces = 0;\n for (const c of text) {\n if (c === \"\\n\") {\n numNewlines++;\n numSpaces = 0;\n } else if (c === \" \") {\n numSpaces++;\n }\n }\n return \"\\n\".repeat(numNewlines) + \" \".repeat(numSpaces);\n}\n\n/**\n * Format a string in the value position of a JSX prop.\n *\n * Use the same implementation as convertAttribute from\n * babel-helper-builder-react-jsx.\n */\nfunction formatJSXStringValueLiteral(text) {\n let result = \"\";\n for (let i = 0; i < text.length; i++) {\n const c = text[i];\n if (c === \"\\n\") {\n if (/\\s/.test(text[i + 1])) {\n result += \" \";\n while (i < text.length && /\\s/.test(text[i + 1])) {\n i++;\n }\n } else {\n result += \"\\n\";\n }\n } else if (c === \"&\") {\n const {entity, newI} = processEntity(text, i + 1);\n result += entity;\n i = newI - 1;\n } else {\n result += c;\n }\n }\n return JSON.stringify(result);\n}\n\n/**\n * Starting at a &, see if there's an HTML entity (specified by name, decimal\n * char code, or hex char code) and return it if so.\n *\n * Modified from jsxReadString in babel-parser.\n */\nfunction processEntity(text, indexAfterAmpersand) {\n let str = \"\";\n let count = 0;\n let entity;\n let i = indexAfterAmpersand;\n\n if (text[i] === \"#\") {\n let radix = 10;\n i++;\n let numStart;\n if (text[i] === \"x\") {\n radix = 16;\n i++;\n numStart = i;\n while (i < text.length && isHexDigit(text.charCodeAt(i))) {\n i++;\n }\n } else {\n numStart = i;\n while (i < text.length && isDecimalDigit(text.charCodeAt(i))) {\n i++;\n }\n }\n if (text[i] === \";\") {\n const numStr = text.slice(numStart, i);\n if (numStr) {\n i++;\n entity = String.fromCodePoint(parseInt(numStr, radix));\n }\n }\n } else {\n while (i < text.length && count++ < 10) {\n const ch = text[i];\n i++;\n if (ch === \";\") {\n entity = XHTMLEntities.get(str);\n break;\n }\n str += ch;\n }\n }\n\n if (!entity) {\n return {entity: \"&\", newI: indexAfterAmpersand};\n }\n return {entity, newI: i};\n}\n\nfunction isDecimalDigit(code) {\n return code >= charCodes.digit0 && code <= charCodes.digit9;\n}\n\nfunction isHexDigit(code) {\n return (\n (code >= charCodes.digit0 && code <= charCodes.digit9) ||\n (code >= charCodes.lowercaseA && code <= charCodes.lowercaseF) ||\n (code >= charCodes.uppercaseA && code <= charCodes.uppercaseF)\n );\n}\n", "\nimport {IdentifierRole} from \"../parser/tokenizer\";\nimport {TokenType, TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport {startsWithLowerCase} from \"../transformers/JSXTransformer\";\nimport getJSXPragmaInfo from \"./getJSXPragmaInfo\";\n\nexport function getNonTypeIdentifiers(tokens, options) {\n const jsxPragmaInfo = getJSXPragmaInfo(options);\n const nonTypeIdentifiers = new Set();\n for (let i = 0; i < tokens.tokens.length; i++) {\n const token = tokens.tokens[i];\n if (\n token.type === tt.name &&\n !token.isType &&\n (token.identifierRole === IdentifierRole.Access ||\n token.identifierRole === IdentifierRole.ObjectShorthand ||\n token.identifierRole === IdentifierRole.ExportAccess) &&\n !token.shadowsGlobal\n ) {\n nonTypeIdentifiers.add(tokens.identifierNameForToken(token));\n }\n if (token.type === tt.jsxTagStart) {\n nonTypeIdentifiers.add(jsxPragmaInfo.base);\n }\n if (\n token.type === tt.jsxTagStart &&\n i + 1 < tokens.tokens.length &&\n tokens.tokens[i + 1].type === tt.jsxTagEnd\n ) {\n nonTypeIdentifiers.add(jsxPragmaInfo.base);\n nonTypeIdentifiers.add(jsxPragmaInfo.fragmentBase);\n }\n if (token.type === tt.jsxName && token.identifierRole === IdentifierRole.Access) {\n const identifierName = tokens.identifierNameForToken(token);\n // Lower-case single-component tag names like \"div\" don't count.\n if (!startsWithLowerCase(identifierName) || tokens.tokens[i + 1].type === TokenType.dot) {\n nonTypeIdentifiers.add(tokens.identifierNameForToken(token));\n }\n }\n }\n return nonTypeIdentifiers;\n}\n", "\n\n\nimport {isDeclaration} from \"./parser/tokenizer\";\nimport {ContextualKeyword} from \"./parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"./parser/tokenizer/types\";\n\nimport getImportExportSpecifierInfo from \"./util/getImportExportSpecifierInfo\";\nimport {getNonTypeIdentifiers} from \"./util/getNonTypeIdentifiers\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Class responsible for preprocessing and bookkeeping import and export declarations within the\n * file.\n *\n * TypeScript uses a simpler mechanism that does not use functions like interopRequireDefault and\n * interopRequireWildcard, so we also allow that mode for compatibility.\n */\nexport default class CJSImportProcessor {\n __init() {this.nonTypeIdentifiers = new Set()}\n __init2() {this.importInfoByPath = new Map()}\n __init3() {this.importsToReplace = new Map()}\n __init4() {this.identifierReplacements = new Map()}\n __init5() {this.exportBindingsByLocalName = new Map()}\n\n constructor(\n nameManager,\n tokens,\n enableLegacyTypeScriptModuleInterop,\n options,\n isTypeScriptTransformEnabled,\n keepUnusedImports,\n helperManager,\n ) {;this.nameManager = nameManager;this.tokens = tokens;this.enableLegacyTypeScriptModuleInterop = enableLegacyTypeScriptModuleInterop;this.options = options;this.isTypeScriptTransformEnabled = isTypeScriptTransformEnabled;this.keepUnusedImports = keepUnusedImports;this.helperManager = helperManager;CJSImportProcessor.prototype.__init.call(this);CJSImportProcessor.prototype.__init2.call(this);CJSImportProcessor.prototype.__init3.call(this);CJSImportProcessor.prototype.__init4.call(this);CJSImportProcessor.prototype.__init5.call(this);}\n\n preprocessTokens() {\n for (let i = 0; i < this.tokens.tokens.length; i++) {\n if (\n this.tokens.matches1AtIndex(i, tt._import) &&\n !this.tokens.matches3AtIndex(i, tt._import, tt.name, tt.eq)\n ) {\n this.preprocessImportAtIndex(i);\n }\n if (\n this.tokens.matches1AtIndex(i, tt._export) &&\n !this.tokens.matches2AtIndex(i, tt._export, tt.eq)\n ) {\n this.preprocessExportAtIndex(i);\n }\n }\n this.generateImportReplacements();\n }\n\n /**\n * In TypeScript, import statements that only import types should be removed.\n * This includes `import {} from 'foo';`, but not `import 'foo';`.\n */\n pruneTypeOnlyImports() {\n this.nonTypeIdentifiers = getNonTypeIdentifiers(this.tokens, this.options);\n for (const [path, importInfo] of this.importInfoByPath.entries()) {\n if (\n importInfo.hasBareImport ||\n importInfo.hasStarExport ||\n importInfo.exportStarNames.length > 0 ||\n importInfo.namedExports.length > 0\n ) {\n continue;\n }\n const names = [\n ...importInfo.defaultNames,\n ...importInfo.wildcardNames,\n ...importInfo.namedImports.map(({localName}) => localName),\n ];\n if (names.every((name) => this.shouldAutomaticallyElideImportedName(name))) {\n this.importsToReplace.set(path, \"\");\n }\n }\n }\n\n shouldAutomaticallyElideImportedName(name) {\n return (\n this.isTypeScriptTransformEnabled &&\n !this.keepUnusedImports &&\n !this.nonTypeIdentifiers.has(name)\n );\n }\n\n generateImportReplacements() {\n for (const [path, importInfo] of this.importInfoByPath.entries()) {\n const {\n defaultNames,\n wildcardNames,\n namedImports,\n namedExports,\n exportStarNames,\n hasStarExport,\n } = importInfo;\n\n if (\n defaultNames.length === 0 &&\n wildcardNames.length === 0 &&\n namedImports.length === 0 &&\n namedExports.length === 0 &&\n exportStarNames.length === 0 &&\n !hasStarExport\n ) {\n // Import is never used, so don't even assign a name.\n this.importsToReplace.set(path, `require('${path}');`);\n continue;\n }\n\n const primaryImportName = this.getFreeIdentifierForPath(path);\n let secondaryImportName;\n if (this.enableLegacyTypeScriptModuleInterop) {\n secondaryImportName = primaryImportName;\n } else {\n secondaryImportName =\n wildcardNames.length > 0 ? wildcardNames[0] : this.getFreeIdentifierForPath(path);\n }\n let requireCode = `var ${primaryImportName} = require('${path}');`;\n if (wildcardNames.length > 0) {\n for (const wildcardName of wildcardNames) {\n const moduleExpr = this.enableLegacyTypeScriptModuleInterop\n ? primaryImportName\n : `${this.helperManager.getHelperName(\"interopRequireWildcard\")}(${primaryImportName})`;\n requireCode += ` var ${wildcardName} = ${moduleExpr};`;\n }\n } else if (exportStarNames.length > 0 && secondaryImportName !== primaryImportName) {\n requireCode += ` var ${secondaryImportName} = ${this.helperManager.getHelperName(\n \"interopRequireWildcard\",\n )}(${primaryImportName});`;\n } else if (defaultNames.length > 0 && secondaryImportName !== primaryImportName) {\n requireCode += ` var ${secondaryImportName} = ${this.helperManager.getHelperName(\n \"interopRequireDefault\",\n )}(${primaryImportName});`;\n }\n\n for (const {importedName, localName} of namedExports) {\n requireCode += ` ${this.helperManager.getHelperName(\n \"createNamedExportFrom\",\n )}(${primaryImportName}, '${localName}', '${importedName}');`;\n }\n for (const exportStarName of exportStarNames) {\n requireCode += ` exports.${exportStarName} = ${secondaryImportName};`;\n }\n if (hasStarExport) {\n requireCode += ` ${this.helperManager.getHelperName(\n \"createStarExport\",\n )}(${primaryImportName});`;\n }\n\n this.importsToReplace.set(path, requireCode);\n\n for (const defaultName of defaultNames) {\n this.identifierReplacements.set(defaultName, `${secondaryImportName}.default`);\n }\n for (const {importedName, localName} of namedImports) {\n this.identifierReplacements.set(localName, `${primaryImportName}.${importedName}`);\n }\n }\n }\n\n getFreeIdentifierForPath(path) {\n const components = path.split(\"/\");\n const lastComponent = components[components.length - 1];\n const baseName = lastComponent.replace(/\\W/g, \"\");\n return this.nameManager.claimFreeName(`_${baseName}`);\n }\n\n preprocessImportAtIndex(index) {\n const defaultNames = [];\n const wildcardNames = [];\n const namedImports = [];\n\n index++;\n if (\n (this.tokens.matchesContextualAtIndex(index, ContextualKeyword._type) ||\n this.tokens.matches1AtIndex(index, tt._typeof)) &&\n !this.tokens.matches1AtIndex(index + 1, tt.comma) &&\n !this.tokens.matchesContextualAtIndex(index + 1, ContextualKeyword._from)\n ) {\n // import type declaration, so no need to process anything.\n return;\n }\n\n if (this.tokens.matches1AtIndex(index, tt.parenL)) {\n // Dynamic import, so nothing to do\n return;\n }\n\n if (this.tokens.matches1AtIndex(index, tt.name)) {\n defaultNames.push(this.tokens.identifierNameAtIndex(index));\n index++;\n if (this.tokens.matches1AtIndex(index, tt.comma)) {\n index++;\n }\n }\n\n if (this.tokens.matches1AtIndex(index, tt.star)) {\n // * as\n index += 2;\n wildcardNames.push(this.tokens.identifierNameAtIndex(index));\n index++;\n }\n\n if (this.tokens.matches1AtIndex(index, tt.braceL)) {\n const result = this.getNamedImports(index + 1);\n index = result.newIndex;\n\n for (const namedImport of result.namedImports) {\n // Treat {default as X} as a default import to ensure usage of require interop helper\n if (namedImport.importedName === \"default\") {\n defaultNames.push(namedImport.localName);\n } else {\n namedImports.push(namedImport);\n }\n }\n }\n\n if (this.tokens.matchesContextualAtIndex(index, ContextualKeyword._from)) {\n index++;\n }\n\n if (!this.tokens.matches1AtIndex(index, tt.string)) {\n throw new Error(\"Expected string token at the end of import statement.\");\n }\n const path = this.tokens.stringValueAtIndex(index);\n const importInfo = this.getImportInfo(path);\n importInfo.defaultNames.push(...defaultNames);\n importInfo.wildcardNames.push(...wildcardNames);\n importInfo.namedImports.push(...namedImports);\n if (defaultNames.length === 0 && wildcardNames.length === 0 && namedImports.length === 0) {\n importInfo.hasBareImport = true;\n }\n }\n\n preprocessExportAtIndex(index) {\n if (\n this.tokens.matches2AtIndex(index, tt._export, tt._var) ||\n this.tokens.matches2AtIndex(index, tt._export, tt._let) ||\n this.tokens.matches2AtIndex(index, tt._export, tt._const)\n ) {\n this.preprocessVarExportAtIndex(index);\n } else if (\n this.tokens.matches2AtIndex(index, tt._export, tt._function) ||\n this.tokens.matches2AtIndex(index, tt._export, tt._class)\n ) {\n const exportName = this.tokens.identifierNameAtIndex(index + 2);\n this.addExportBinding(exportName, exportName);\n } else if (this.tokens.matches3AtIndex(index, tt._export, tt.name, tt._function)) {\n const exportName = this.tokens.identifierNameAtIndex(index + 3);\n this.addExportBinding(exportName, exportName);\n } else if (this.tokens.matches2AtIndex(index, tt._export, tt.braceL)) {\n this.preprocessNamedExportAtIndex(index);\n } else if (this.tokens.matches2AtIndex(index, tt._export, tt.star)) {\n this.preprocessExportStarAtIndex(index);\n }\n }\n\n preprocessVarExportAtIndex(index) {\n let depth = 0;\n // Handle cases like `export let {x} = y;`, starting at the open-brace in that case.\n for (let i = index + 2; ; i++) {\n if (\n this.tokens.matches1AtIndex(i, tt.braceL) ||\n this.tokens.matches1AtIndex(i, tt.dollarBraceL) ||\n this.tokens.matches1AtIndex(i, tt.bracketL)\n ) {\n depth++;\n } else if (\n this.tokens.matches1AtIndex(i, tt.braceR) ||\n this.tokens.matches1AtIndex(i, tt.bracketR)\n ) {\n depth--;\n } else if (depth === 0 && !this.tokens.matches1AtIndex(i, tt.name)) {\n break;\n } else if (this.tokens.matches1AtIndex(1, tt.eq)) {\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n i = endIndex - 1;\n } else {\n const token = this.tokens.tokens[i];\n if (isDeclaration(token)) {\n const exportName = this.tokens.identifierNameAtIndex(i);\n this.identifierReplacements.set(exportName, `exports.${exportName}`);\n }\n }\n }\n }\n\n /**\n * Walk this export statement just in case it's an export...from statement.\n * If it is, combine it into the import info for that path. Otherwise, just\n * bail out; it'll be handled later.\n */\n preprocessNamedExportAtIndex(index) {\n // export {\n index += 2;\n const {newIndex, namedImports} = this.getNamedImports(index);\n index = newIndex;\n\n if (this.tokens.matchesContextualAtIndex(index, ContextualKeyword._from)) {\n index++;\n } else {\n // Reinterpret \"a as b\" to be local/exported rather than imported/local.\n for (const {importedName: localName, localName: exportedName} of namedImports) {\n this.addExportBinding(localName, exportedName);\n }\n return;\n }\n\n if (!this.tokens.matches1AtIndex(index, tt.string)) {\n throw new Error(\"Expected string token at the end of import statement.\");\n }\n const path = this.tokens.stringValueAtIndex(index);\n const importInfo = this.getImportInfo(path);\n importInfo.namedExports.push(...namedImports);\n }\n\n preprocessExportStarAtIndex(index) {\n let exportedName = null;\n if (this.tokens.matches3AtIndex(index, tt._export, tt.star, tt._as)) {\n // export * as\n index += 3;\n exportedName = this.tokens.identifierNameAtIndex(index);\n // foo from\n index += 2;\n } else {\n // export * from\n index += 3;\n }\n if (!this.tokens.matches1AtIndex(index, tt.string)) {\n throw new Error(\"Expected string token at the end of star export statement.\");\n }\n const path = this.tokens.stringValueAtIndex(index);\n const importInfo = this.getImportInfo(path);\n if (exportedName !== null) {\n importInfo.exportStarNames.push(exportedName);\n } else {\n importInfo.hasStarExport = true;\n }\n }\n\n getNamedImports(index) {\n const namedImports = [];\n while (true) {\n if (this.tokens.matches1AtIndex(index, tt.braceR)) {\n index++;\n break;\n }\n\n const specifierInfo = getImportExportSpecifierInfo(this.tokens, index);\n index = specifierInfo.endIndex;\n if (!specifierInfo.isType) {\n namedImports.push({\n importedName: specifierInfo.leftName,\n localName: specifierInfo.rightName,\n });\n }\n\n if (this.tokens.matches2AtIndex(index, tt.comma, tt.braceR)) {\n index += 2;\n break;\n } else if (this.tokens.matches1AtIndex(index, tt.braceR)) {\n index++;\n break;\n } else if (this.tokens.matches1AtIndex(index, tt.comma)) {\n index++;\n } else {\n throw new Error(`Unexpected token: ${JSON.stringify(this.tokens.tokens[index])}`);\n }\n }\n return {newIndex: index, namedImports};\n }\n\n /**\n * Get a mutable import info object for this path, creating one if it doesn't\n * exist yet.\n */\n getImportInfo(path) {\n const existingInfo = this.importInfoByPath.get(path);\n if (existingInfo) {\n return existingInfo;\n }\n const newInfo = {\n defaultNames: [],\n wildcardNames: [],\n namedImports: [],\n namedExports: [],\n hasBareImport: false,\n exportStarNames: [],\n hasStarExport: false,\n };\n this.importInfoByPath.set(path, newInfo);\n return newInfo;\n }\n\n addExportBinding(localName, exportedName) {\n if (!this.exportBindingsByLocalName.has(localName)) {\n this.exportBindingsByLocalName.set(localName, []);\n }\n this.exportBindingsByLocalName.get(localName).push(exportedName);\n }\n\n /**\n * Return the code to use for the import for this path, or the empty string if\n * the code has already been \"claimed\" by a previous import.\n */\n claimImportCode(importPath) {\n const result = this.importsToReplace.get(importPath);\n this.importsToReplace.set(importPath, \"\");\n return result || \"\";\n }\n\n getIdentifierReplacement(identifierName) {\n return this.identifierReplacements.get(identifierName) || null;\n }\n\n /**\n * Return a string like `exports.foo = exports.bar`.\n */\n resolveExportBinding(assignedName) {\n const exportedNames = this.exportBindingsByLocalName.get(assignedName);\n if (!exportedNames || exportedNames.length === 0) {\n return null;\n }\n return exportedNames.map((exportedName) => `exports.${exportedName}`).join(\" = \");\n }\n\n /**\n * Return all imported/exported names where we might be interested in whether usages of those\n * names are shadowed.\n */\n getGlobalNames() {\n return new Set([\n ...this.identifierReplacements.keys(),\n ...this.exportBindingsByLocalName.keys(),\n ]);\n }\n}\n", "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 declare private 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, B, O> = (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<SourceMapMappings>): string;\nexport function encode(decoded: Readonly<SourceMapMappings>): 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", "import { encode, decode } from '@jridgewell/sourcemap-codec';\n\nimport resolver from './resolve';\nimport maybeSort from './sort';\nimport buildBySources from './by-source';\nimport {\n memoizedState,\n memoizedBinarySearch,\n upperBound,\n lowerBound,\n found as bsFound,\n} from './binary-search';\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n REV_GENERATED_LINE,\n REV_GENERATED_COLUMN,\n} from './sourcemap-segment';\nimport { parse } from './types';\n\nimport type { SourceMapSegment, ReverseSegment } from './sourcemap-segment';\nimport type {\n SourceMapV3,\n DecodedSourceMap,\n EncodedSourceMap,\n InvalidOriginalMapping,\n OriginalMapping,\n InvalidGeneratedMapping,\n GeneratedMapping,\n SourceMapInput,\n Needle,\n SourceNeedle,\n SourceMap,\n EachMapping,\n Bias,\n XInput,\n SectionedSourceMap,\n Ro,\n} from './types';\nimport type { Source } from './by-source';\nimport type { MemoState } from './binary-search';\n\nexport type { SourceMapSegment } from './sourcemap-segment';\nexport type {\n SourceMap,\n DecodedSourceMap,\n EncodedSourceMap,\n Section,\n SectionedSourceMap,\n SourceMapV3,\n Bias,\n EachMapping,\n GeneratedMapping,\n InvalidGeneratedMapping,\n InvalidOriginalMapping,\n Needle,\n OriginalMapping,\n OriginalMapping as Mapping,\n SectionedSourceMapInput,\n SourceMapInput,\n SourceNeedle,\n XInput,\n EncodedSourceMapXInput,\n DecodedSourceMapXInput,\n SectionedSourceMapXInput,\n SectionXInput,\n} from './types';\n\ninterface PublicMap {\n _encoded: TraceMap['_encoded'];\n _decoded: TraceMap['_decoded'];\n _decodedMemo: TraceMap['_decodedMemo'];\n _bySources: TraceMap['_bySources'];\n _bySourceMemos: TraceMap['_bySourceMemos'];\n}\n\nconst LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';\nconst COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';\n\nexport const LEAST_UPPER_BOUND = -1;\nexport const GREATEST_LOWER_BOUND = 1;\n\nexport { FlattenMap, FlattenMap as AnyMap } from './flatten-map';\n\nexport class TraceMap implements SourceMap {\n declare version: SourceMapV3['version'];\n declare file: SourceMapV3['file'];\n declare names: SourceMapV3['names'];\n declare sourceRoot: SourceMapV3['sourceRoot'];\n declare sources: SourceMapV3['sources'];\n declare sourcesContent: SourceMapV3['sourcesContent'];\n declare ignoreList: SourceMapV3['ignoreList'];\n\n declare resolvedSources: string[];\n declare private _encoded: string | undefined;\n\n declare private _decoded: SourceMapSegment[][] | undefined;\n declare private _decodedMemo: MemoState;\n\n declare private _bySources: Source[] | undefined;\n declare private _bySourceMemos: MemoState[] | undefined;\n\n constructor(map: Ro<SourceMapInput>, mapUrl?: string | null) {\n const isString = typeof map === 'string';\n if (!isString && (map as unknown as { _decodedMemo: any })._decodedMemo) return map as TraceMap;\n\n const parsed = parse(map as Exclude<SourceMapInput, TraceMap>);\n\n const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;\n this.version = version;\n this.file = file;\n this.names = names || [];\n this.sourceRoot = sourceRoot;\n this.sources = sources;\n this.sourcesContent = sourcesContent;\n this.ignoreList = parsed.ignoreList || (parsed as XInput).x_google_ignoreList || undefined;\n\n const resolve = resolver(mapUrl, sourceRoot);\n this.resolvedSources = sources.map(resolve);\n\n const { mappings } = parsed;\n if (typeof mappings === 'string') {\n this._encoded = mappings;\n this._decoded = undefined;\n } else if (Array.isArray(mappings)) {\n this._encoded = undefined;\n this._decoded = maybeSort(mappings, isString);\n } else if ((parsed as unknown as SectionedSourceMap).sections) {\n throw new Error(`TraceMap passed sectioned source map, please use FlattenMap export instead`);\n } else {\n throw new Error(`invalid source map: ${JSON.stringify(parsed)}`);\n }\n\n this._decodedMemo = memoizedState();\n this._bySources = undefined;\n this._bySourceMemos = undefined;\n }\n}\n\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the map into a type\n * with public access modifiers.\n */\nfunction cast(map: unknown): PublicMap {\n return map as any;\n}\n\n/**\n * Returns the encoded (VLQ string) form of the SourceMap's mappings field.\n */\nexport function encodedMappings(map: TraceMap): EncodedSourceMap['mappings'] {\n return (cast(map)._encoded ??= encode(cast(map)._decoded!));\n}\n\n/**\n * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.\n */\nexport function decodedMappings(map: TraceMap): Readonly<DecodedSourceMap['mappings']> {\n return (cast(map)._decoded ||= decode(cast(map)._encoded!));\n}\n\n/**\n * A low-level API to find the segment associated with a generated line/column (think, from a\n * stack trace). Line and column here are 0-based, unlike `originalPositionFor`.\n */\nexport function traceSegment(\n map: TraceMap,\n line: number,\n column: number,\n): Readonly<SourceMapSegment> | null {\n const decoded = decodedMappings(map);\n\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length) return null;\n\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n cast(map)._decodedMemo,\n line,\n column,\n GREATEST_LOWER_BOUND,\n );\n\n return index === -1 ? null : segments[index];\n}\n\n/**\n * A higher-level API to find the source/line/column associated with a generated line/column\n * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in\n * `source-map` library.\n */\nexport function originalPositionFor(\n map: TraceMap,\n needle: Needle,\n): OriginalMapping | InvalidOriginalMapping {\n let { line, column, bias } = needle;\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n\n const decoded = decodedMappings(map);\n\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length) return OMapping(null, null, null, null);\n\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n cast(map)._decodedMemo,\n line,\n column,\n bias || GREATEST_LOWER_BOUND,\n );\n\n if (index === -1) return OMapping(null, null, null, null);\n\n const segment = segments[index];\n if (segment.length === 1) return OMapping(null, null, null, null);\n\n const { names, resolvedSources } = map;\n return OMapping(\n resolvedSources[segment[SOURCES_INDEX]],\n segment[SOURCE_LINE] + 1,\n segment[SOURCE_COLUMN],\n segment.length === 5 ? names[segment[NAMES_INDEX]] : null,\n );\n}\n\n/**\n * Finds the generated line/column position of the provided source/line/column source position.\n */\nexport function generatedPositionFor(\n map: TraceMap,\n needle: SourceNeedle,\n): GeneratedMapping | InvalidGeneratedMapping {\n const { source, line, column, bias } = needle;\n return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);\n}\n\n/**\n * Finds all generated line/column positions of the provided source/line/column source position.\n */\nexport function allGeneratedPositionsFor(map: TraceMap, needle: SourceNeedle): GeneratedMapping[] {\n const { source, line, column, bias } = needle;\n // SourceMapConsumer uses LEAST_UPPER_BOUND for some reason, so we follow suit.\n return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true);\n}\n\n/**\n * Iterates each mapping in generated position order.\n */\nexport function eachMapping(map: TraceMap, cb: (mapping: EachMapping) => void): void {\n const decoded = decodedMappings(map);\n const { names, resolvedSources } = map;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n\n const generatedLine = i + 1;\n const generatedColumn = seg[0];\n let source = null;\n let originalLine = null;\n let originalColumn = null;\n let name = null;\n if (seg.length !== 1) {\n source = resolvedSources[seg[1]];\n originalLine = seg[2] + 1;\n originalColumn = seg[3];\n }\n if (seg.length === 5) name = names[seg[4]];\n\n cb({\n generatedLine,\n generatedColumn,\n source,\n originalLine,\n originalColumn,\n name,\n } as EachMapping);\n }\n }\n}\n\nfunction sourceIndex(map: TraceMap, source: string): number {\n const { sources, resolvedSources } = map;\n let index = sources.indexOf(source);\n if (index === -1) index = resolvedSources.indexOf(source);\n return index;\n}\n\n/**\n * Retrieves the source content for a particular source, if its found. Returns null if not.\n */\nexport function sourceContentFor(map: TraceMap, source: string): string | null {\n const { sourcesContent } = map;\n if (sourcesContent == null) return null;\n const index = sourceIndex(map, source);\n return index === -1 ? null : sourcesContent[index];\n}\n\n/**\n * Determines if the source is marked to ignore by the source map.\n */\nexport function isIgnored(map: TraceMap, source: string): boolean {\n const { ignoreList } = map;\n if (ignoreList == null) return false;\n const index = sourceIndex(map, source);\n return index === -1 ? false : ignoreList.includes(index);\n}\n\n/**\n * A helper that skips sorting of the input map's mappings array, which can be expensive for larger\n * maps.\n */\nexport function presortedDecodedMap(map: DecodedSourceMap, mapUrl?: string): TraceMap {\n const tracer = new TraceMap(clone(map, []), mapUrl);\n cast(tracer)._decoded = map.mappings;\n return tracer;\n}\n\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function decodedMap(\n map: TraceMap,\n): Omit<DecodedSourceMap, 'mappings'> & { mappings: readonly SourceMapSegment[][] } {\n return clone(map, decodedMappings(map));\n}\n\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function encodedMap(map: TraceMap): EncodedSourceMap {\n return clone(map, encodedMappings(map));\n}\n\nfunction clone<T extends string | readonly SourceMapSegment[][]>(\n map: TraceMap | DecodedSourceMap,\n mappings: T,\n): T extends string ? EncodedSourceMap : DecodedSourceMap {\n return {\n version: map.version,\n file: map.file,\n names: map.names,\n sourceRoot: map.sourceRoot,\n sources: map.sources,\n sourcesContent: map.sourcesContent,\n mappings,\n ignoreList: map.ignoreList || (map as XInput).x_google_ignoreList,\n } as any;\n}\n\nfunction OMapping(source: null, line: null, column: null, name: null): InvalidOriginalMapping;\nfunction OMapping(\n source: string,\n line: number,\n column: number,\n name: string | null,\n): OriginalMapping;\nfunction OMapping(\n source: string | null,\n line: number | null,\n column: number | null,\n name: string | null,\n): OriginalMapping | InvalidOriginalMapping {\n return { source, line, column, name } as any;\n}\n\nfunction GMapping(line: null, column: null): InvalidGeneratedMapping;\nfunction GMapping(line: number, column: number): GeneratedMapping;\nfunction GMapping(\n line: number | null,\n column: number | null,\n): GeneratedMapping | InvalidGeneratedMapping {\n return { line, column } as any;\n}\n\nfunction traceSegmentInternal(\n segments: SourceMapSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number;\nfunction traceSegmentInternal(\n segments: ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number;\nfunction traceSegmentInternal(\n segments: SourceMapSegment[] | ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number {\n let index = memoizedBinarySearch(segments, column, memo, line);\n if (bsFound) {\n index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n } else if (bias === LEAST_UPPER_BOUND) index++;\n\n if (index === -1 || index === segments.length) return -1;\n return index;\n}\n\nfunction sliceGeneratedPositions(\n segments: ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): GeneratedMapping[] {\n let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);\n\n // We ignored the bias when tracing the segment so that we're guarnateed to find the first (in\n // insertion order) segment that matched. Even if we did respect the bias when tracing, we would\n // still need to call `lowerBound()` to find the first segment, which is slower than just looking\n // for the GREATEST_LOWER_BOUND to begin with. The only difference that matters for us is when the\n // binary search didn't match, in which case GREATEST_LOWER_BOUND just needs to increment to\n // match LEAST_UPPER_BOUND.\n if (!bsFound && bias === LEAST_UPPER_BOUND) min++;\n\n if (min === -1 || min === segments.length) return [];\n\n // We may have found the segment that started at an earlier column. If this is the case, then we\n // need to slice all generated segments that match _that_ column, because all such segments span\n // to our desired column.\n const matchedColumn = bsFound ? column : segments[min][COLUMN];\n\n // The binary search is not guaranteed to find the lower bound when a match wasn't found.\n if (!bsFound) min = lowerBound(segments, matchedColumn, min);\n const max = upperBound(segments, matchedColumn, min);\n\n const result = [];\n for (; min <= max; min++) {\n const segment = segments[min];\n result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));\n }\n return result;\n}\n\nfunction generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: false,\n): GeneratedMapping | InvalidGeneratedMapping;\nfunction generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: true,\n): GeneratedMapping[];\nfunction generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: boolean,\n): GeneratedMapping | InvalidGeneratedMapping | GeneratedMapping[] {\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n\n const { sources, resolvedSources } = map;\n let sourceIndex = sources.indexOf(source);\n if (sourceIndex === -1) sourceIndex = resolvedSources.indexOf(source);\n if (sourceIndex === -1) return all ? [] : GMapping(null, null);\n\n const bySourceMemos = (cast(map)._bySourceMemos ||= sources.map(memoizedState));\n const generated = (cast(map)._bySources ||= buildBySources(decodedMappings(map), bySourceMemos));\n\n const segments = generated[sourceIndex][line];\n if (segments == null) return all ? [] : GMapping(null, null);\n\n const memo = bySourceMemos[sourceIndex];\n\n if (all) return sliceGeneratedPositions(segments, memo, line, column, bias);\n\n const index = traceSegmentInternal(segments, memo, line, column, bias);\n if (index === -1) return GMapping(null, null);\n\n const segment = segments[index];\n return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);\n}\n", "import resolveUri from '@jridgewell/resolve-uri';\nimport stripFilename from './strip-filename';\n\ntype Resolve = (source: string | null) => string;\nexport default function resolver(\n mapUrl: string | null | undefined,\n sourceRoot: string | undefined,\n): Resolve {\n const from = stripFilename(mapUrl);\n // The sourceRoot is always treated as a directory, if it's not empty.\n // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327\n // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401\n const prefix = sourceRoot ? sourceRoot + '/' : '';\n\n return (source) => resolveUri(prefix + (source || ''), from);\n}\n", "/**\n * Removes everything after the last \"/\", but leaves the slash.\n */\nexport default function stripFilename(path: string | undefined | null): string {\n if (!path) return '';\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n", "type GeneratedColumn = number;\ntype SourcesIndex = number;\ntype SourceLine = number;\ntype SourceColumn = number;\ntype NamesIndex = number;\n\ntype GeneratedLine = number;\n\nexport type SourceMapSegment =\n | [GeneratedColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];\n\nexport type ReverseSegment = [SourceColumn, GeneratedLine, GeneratedColumn];\n\nexport const COLUMN = 0;\nexport const SOURCES_INDEX = 1;\nexport const SOURCE_LINE = 2;\nexport const SOURCE_COLUMN = 3;\nexport const NAMES_INDEX = 4;\n\nexport const REV_GENERATED_LINE = 1;\nexport const REV_GENERATED_COLUMN = 2;\n", "import { COLUMN } from './sourcemap-segment';\n\nimport type { ReverseSegment, SourceMapSegment } from './sourcemap-segment';\n\nexport default function maybeSort(\n mappings: SourceMapSegment[][],\n owned: boolean,\n): SourceMapSegment[][] {\n const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);\n if (unsortedIndex === mappings.length) return mappings;\n\n // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If\n // not, we do not want to modify the consumer's input array.\n if (!owned) mappings = mappings.slice();\n\n for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {\n mappings[i] = sortSegments(mappings[i], owned);\n }\n return mappings;\n}\n\nfunction nextUnsortedSegmentLine(mappings: SourceMapSegment[][], start: number): number {\n for (let i = start; i < mappings.length; i++) {\n if (!isSorted(mappings[i])) return i;\n }\n return mappings.length;\n}\n\nfunction isSorted(line: SourceMapSegment[]): boolean {\n for (let j = 1; j < line.length; j++) {\n if (line[j][COLUMN] < line[j - 1][COLUMN]) {\n return false;\n }\n }\n return true;\n}\n\nfunction sortSegments(line: SourceMapSegment[], owned: boolean): SourceMapSegment[] {\n if (!owned) line = line.slice();\n return line.sort(sortComparator);\n}\n\nexport function sortComparator<T extends SourceMapSegment | ReverseSegment>(a: T, b: T): number {\n return a[COLUMN] - b[COLUMN];\n}\n", "import { COLUMN, SOURCES_INDEX, SOURCE_LINE, SOURCE_COLUMN } from './sourcemap-segment';\nimport { sortComparator } from './sort';\n\nimport type { ReverseSegment, SourceMapSegment } from './sourcemap-segment';\n\nexport type Source = ReverseSegment[][];\n\n// Rebuilds the original source files, with mappings that are ordered by source line/column instead\n// of generated line/column.\nexport default function buildBySources(\n decoded: readonly SourceMapSegment[][],\n memos: unknown[],\n): Source[] {\n const sources: Source[] = memos.map(() => []);\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n if (seg.length === 1) continue;\n\n const sourceIndex = seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n\n const source = sources[sourceIndex];\n const segs = (source[sourceLine] ||= []);\n segs.push([sourceColumn, i, seg[COLUMN]]);\n }\n }\n\n for (let i = 0; i < sources.length; i++) {\n const source = sources[i];\n for (let j = 0; j < source.length; j++) {\n const line = source[j];\n if (line) line.sort(sortComparator);\n }\n }\n\n return sources;\n}\n", "import type { SourceMapSegment, ReverseSegment } from './sourcemap-segment';\nimport { COLUMN } from './sourcemap-segment';\n\nexport type MemoState = {\n lastKey: number;\n lastNeedle: number;\n lastIndex: number;\n};\n\nexport let found = false;\n\n/**\n * A binary search implementation that returns the index if a match is found.\n * If no match is found, then the left-index (the index associated with the item that comes just\n * before the desired index) is returned. To maintain proper sort order, a splice would happen at\n * the next index:\n *\n * ```js\n * const array = [1, 3];\n * const needle = 2;\n * const index = binarySearch(array, needle, (item, needle) => item - needle);\n *\n * assert.equal(index, 0);\n * array.splice(index + 1, 0, needle);\n * assert.deepEqual(array, [1, 2, 3]);\n * ```\n */\nexport function binarySearch(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n low: number,\n high: number,\n): number {\n while (low <= high) {\n const mid = low + ((high - low) >> 1);\n const cmp = haystack[mid][COLUMN] - needle;\n\n if (cmp === 0) {\n found = true;\n return mid;\n }\n\n if (cmp < 0) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n found = false;\n return low - 1;\n}\n\nexport function upperBound(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n index: number,\n): number {\n for (let i = index + 1; i < haystack.length; index = i++) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\n\nexport function lowerBound(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n index: number,\n): number {\n for (let i = index - 1; i >= 0; index = i--) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\n\nexport function memoizedState(): MemoState {\n return {\n lastKey: -1,\n lastNeedle: -1,\n lastIndex: -1,\n };\n}\n\n/**\n * This overly complicated beast is just to record the last tested line/column and the resulting\n * index, allowing us to skip a few tests if mappings are monotonically increasing.\n */\nexport function memoizedBinarySearch(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n state: MemoState,\n key: number,\n): number {\n const { lastKey, lastNeedle, lastIndex } = state;\n\n let low = 0;\n let high = haystack.length - 1;\n if (key === lastKey) {\n if (needle === lastNeedle) {\n found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n return lastIndex;\n }\n\n if (needle >= lastNeedle) {\n // lastIndex may be -1 if the previous needle was not found.\n low = lastIndex === -1 ? 0 : lastIndex;\n } else {\n high = lastIndex;\n }\n }\n state.lastKey = key;\n state.lastNeedle = needle;\n\n return (state.lastIndex = binarySearch(haystack, needle, low, high));\n}\n", "import type { SourceMapSegment } from './sourcemap-segment';\nimport type { GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND, TraceMap } from './trace-mapping';\n\nexport interface SourceMapV3 {\n file?: string | null;\n names: string[];\n sourceRoot?: string;\n sources: (string | null)[];\n sourcesContent?: (string | null)[];\n version: 3;\n ignoreList?: number[];\n}\n\nexport interface EncodedSourceMap extends SourceMapV3 {\n mappings: string;\n}\n\nexport interface DecodedSourceMap extends SourceMapV3 {\n mappings: SourceMapSegment[][];\n}\n\nexport interface Section {\n offset: { line: number; column: number };\n map: EncodedSourceMap | DecodedSourceMap | SectionedSourceMap;\n}\n\nexport interface SectionedSourceMap {\n file?: string | null;\n sections: Section[];\n version: 3;\n}\n\nexport type OriginalMapping = {\n source: string | null;\n line: number;\n column: number;\n name: string | null;\n};\n\nexport type InvalidOriginalMapping = {\n source: null;\n line: null;\n column: null;\n name: null;\n};\n\nexport type GeneratedMapping = {\n line: number;\n column: number;\n};\nexport type InvalidGeneratedMapping = {\n line: null;\n column: null;\n};\n\nexport type Bias = typeof GREATEST_LOWER_BOUND | typeof LEAST_UPPER_BOUND;\n\nexport type XInput = { x_google_ignoreList?: SourceMapV3['ignoreList'] };\nexport type EncodedSourceMapXInput = EncodedSourceMap & XInput;\nexport type DecodedSourceMapXInput = DecodedSourceMap & XInput;\nexport type SectionedSourceMapXInput = Omit<SectionedSourceMap, 'sections'> & {\n sections: SectionXInput[];\n};\nexport type SectionXInput = Omit<Section, 'map'> & {\n map: SectionedSourceMapInput;\n};\n\nexport type SourceMapInput = string | EncodedSourceMapXInput | DecodedSourceMapXInput | TraceMap;\nexport type SectionedSourceMapInput = SourceMapInput | SectionedSourceMapXInput;\n\nexport type Needle = { line: number; column: number; bias?: Bias };\nexport type SourceNeedle = { source: string; line: number; column: number; bias?: Bias };\n\nexport type EachMapping =\n | {\n generatedLine: number;\n generatedColumn: number;\n source: null;\n originalLine: null;\n originalColumn: null;\n name: null;\n }\n | {\n generatedLine: number;\n generatedColumn: number;\n source: string | null;\n originalLine: number;\n originalColumn: number;\n name: string | null;\n };\n\nexport abstract class SourceMap {\n declare version: SourceMapV3['version'];\n declare file: SourceMapV3['file'];\n declare names: SourceMapV3['names'];\n declare sourceRoot: SourceMapV3['sourceRoot'];\n declare sources: SourceMapV3['sources'];\n declare sourcesContent: SourceMapV3['sourcesContent'];\n declare resolvedSources: SourceMapV3['sources'];\n declare ignoreList: SourceMapV3['ignoreList'];\n}\n\nexport type Ro<T> =\n T extends Array<infer V>\n ? V[] | Readonly<V[]> | RoArray<V> | Readonly<RoArray<V>>\n : T extends object\n ? T | Readonly<T> | RoObject<T> | Readonly<RoObject<T>>\n : T;\ntype RoArray<T> = Ro<T>[];\ntype RoObject<T> = { [K in keyof T]: T[K] | Ro<T[K]> };\n\nexport function parse<T>(map: T): Exclude<T, string> {\n return typeof map === 'string' ? JSON.parse(map) : (map as Exclude<T, string>);\n}\n", "import { TraceMap, presortedDecodedMap, decodedMappings } from './trace-mapping';\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n} from './sourcemap-segment';\nimport { parse } from './types';\n\nimport type {\n DecodedSourceMap,\n DecodedSourceMapXInput,\n EncodedSourceMapXInput,\n SectionedSourceMapXInput,\n SectionedSourceMapInput,\n SectionXInput,\n Ro,\n} from './types';\nimport type { SourceMapSegment } from './sourcemap-segment';\n\ntype FlattenMap = {\n new (map: Ro<SectionedSourceMapInput>, mapUrl?: string | null): TraceMap;\n (map: Ro<SectionedSourceMapInput>, mapUrl?: string | null): TraceMap;\n};\n\nexport const FlattenMap: FlattenMap = function (map, mapUrl) {\n const parsed = parse(map as SectionedSourceMapInput);\n\n if (!('sections' in parsed)) {\n return new TraceMap(parsed as DecodedSourceMapXInput | EncodedSourceMapXInput, mapUrl);\n }\n\n const mappings: SourceMapSegment[][] = [];\n const sources: string[] = [];\n const sourcesContent: (string | null)[] = [];\n const names: string[] = [];\n const ignoreList: number[] = [];\n\n recurse(\n parsed,\n mapUrl,\n mappings,\n sources,\n sourcesContent,\n names,\n ignoreList,\n 0,\n 0,\n Infinity,\n Infinity,\n );\n\n const joined: DecodedSourceMap = {\n version: 3,\n file: parsed.file,\n names,\n sources,\n sourcesContent,\n mappings,\n ignoreList,\n };\n\n return presortedDecodedMap(joined);\n} as FlattenMap;\n\nfunction recurse(\n input: SectionedSourceMapXInput,\n mapUrl: string | null | undefined,\n mappings: SourceMapSegment[][],\n sources: string[],\n sourcesContent: (string | null)[],\n names: string[],\n ignoreList: number[],\n lineOffset: number,\n columnOffset: number,\n stopLine: number,\n stopColumn: number,\n) {\n const { sections } = input;\n for (let i = 0; i < sections.length; i++) {\n const { map, offset } = sections[i];\n\n let sl = stopLine;\n let sc = stopColumn;\n if (i + 1 < sections.length) {\n const nextOffset = sections[i + 1].offset;\n sl = Math.min(stopLine, lineOffset + nextOffset.line);\n\n if (sl === stopLine) {\n sc = Math.min(stopColumn, columnOffset + nextOffset.column);\n } else if (sl < stopLine) {\n sc = columnOffset + nextOffset.column;\n }\n }\n\n addSection(\n map,\n mapUrl,\n mappings,\n sources,\n sourcesContent,\n names,\n ignoreList,\n lineOffset + offset.line,\n columnOffset + offset.column,\n sl,\n sc,\n );\n }\n}\n\nfunction addSection(\n input: SectionXInput['map'],\n mapUrl: string | null | undefined,\n mappings: SourceMapSegment[][],\n sources: string[],\n sourcesContent: (string | null)[],\n names: string[],\n ignoreList: number[],\n lineOffset: number,\n columnOffset: number,\n stopLine: number,\n stopColumn: number,\n) {\n const parsed = parse(input);\n if ('sections' in parsed) return recurse(...(arguments as unknown as Parameters<typeof recurse>));\n\n const map = new TraceMap(parsed, mapUrl);\n const sourcesOffset = sources.length;\n const namesOffset = names.length;\n const decoded = decodedMappings(map);\n const { resolvedSources, sourcesContent: contents, ignoreList: ignores } = map;\n\n append(sources, resolvedSources);\n append(names, map.names);\n\n if (contents) append(sourcesContent, contents);\n else for (let i = 0; i < resolvedSources.length; i++) sourcesContent.push(null);\n\n if (ignores) for (let i = 0; i < ignores.length; i++) ignoreList.push(ignores[i] + sourcesOffset);\n\n for (let i = 0; i < decoded.length; i++) {\n const lineI = lineOffset + i;\n\n // We can only add so many lines before we step into the range that the next section's map\n // controls. When we get to the last line, then we'll start checking the segments to see if\n // they've crossed into the column range. But it may not have any columns that overstep, so we\n // still need to check that we don't overstep lines, too.\n if (lineI > stopLine) return;\n\n // The out line may already exist in mappings (if we're continuing the line started by a\n // previous section). Or, we may have jumped ahead several lines to start this section.\n const out = getLine(mappings, lineI);\n // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the\n // map can be multiple lines), it doesn't.\n const cOffset = i === 0 ? columnOffset : 0;\n\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const column = cOffset + seg[COLUMN];\n\n // If this segment steps into the column range that the next section's map controls, we need\n // to stop early.\n if (lineI === stopLine && column >= stopColumn) return;\n\n if (seg.length === 1) {\n out.push([column]);\n continue;\n }\n\n const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n out.push(\n seg.length === 4\n ? [column, sourcesIndex, sourceLine, sourceColumn]\n : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]],\n );\n }\n }\n}\n\nfunction append<T>(arr: T[], other: T[]) {\n for (let i = 0; i < other.length; i++) arr.push(other[i]);\n}\n\nfunction getLine<T>(arr: T[][], index: number): T[] {\n for (let i = arr.length; i <= index; i++) arr[i] = [];\n return arr[index];\n}\n", "type Key = string | number | symbol;\n\n/**\n * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the\n * index of the `key` in the backing array.\n *\n * This is designed to allow synchronizing a second array with the contents of the backing array,\n * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,\n * and there are never duplicates.\n */\nexport class SetArray<T extends Key = Key> {\n declare private _indexes: Record<T, number | undefined>;\n declare array: readonly T[];\n\n constructor() {\n this._indexes = { __proto__: null } as any;\n this.array = [];\n }\n}\n\ninterface PublicSet<T extends Key> {\n array: T[];\n _indexes: SetArray<T>['_indexes'];\n}\n\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the set into a type\n * with public access modifiers.\n */\nfunction cast<T extends Key>(set: SetArray<T>): PublicSet<T> {\n return set as any;\n}\n\n/**\n * Gets the index associated with `key` in the backing array, if it is already present.\n */\nexport function get<T extends Key>(setarr: SetArray<T>, key: T): number | undefined {\n return cast(setarr)._indexes[key];\n}\n\n/**\n * Puts `key` into the backing array, if it is not already present. Returns\n * the index of the `key` in the backing array.\n */\nexport function put<T extends Key>(setarr: SetArray<T>, key: T): number {\n // The key may or may not be present. If it is present, it's a number.\n const index = get(setarr, key);\n if (index !== undefined) return index;\n\n const { array, _indexes: indexes } = cast(setarr);\n\n const length = array.push(key);\n return (indexes[key] = length - 1);\n}\n\n/**\n * Pops the last added item out of the SetArray.\n */\nexport function pop<T extends Key>(setarr: SetArray<T>): void {\n const { array, _indexes: indexes } = cast(setarr);\n if (array.length === 0) return;\n\n const last = array.pop()!;\n indexes[last] = undefined;\n}\n\n/**\n * Removes the key, if it exists in the set.\n */\nexport function remove<T extends Key>(setarr: SetArray<T>, key: T): void {\n const index = get(setarr, key);\n if (index === undefined) return;\n\n const { array, _indexes: indexes } = cast(setarr);\n for (let i = index + 1; i < array.length; i++) {\n const k = array[i];\n array[i - 1] = k;\n indexes[k]!--;\n }\n indexes[key] = undefined;\n array.pop();\n}\n", "import { SetArray, put, remove } from './set-array';\nimport {\n encode,\n // encodeGeneratedRanges,\n // encodeOriginalScopes\n} from '@jridgewell/sourcemap-codec';\nimport { TraceMap, decodedMappings } from '@jridgewell/trace-mapping';\n\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n} from './sourcemap-segment';\n\nimport type { SourceMapInput } from '@jridgewell/trace-mapping';\n// import type { OriginalScope, GeneratedRange } from '@jridgewell/sourcemap-codec';\nimport type { SourceMapSegment } from './sourcemap-segment';\nimport type {\n DecodedSourceMap,\n EncodedSourceMap,\n Pos,\n Mapping,\n // BindingExpressionRange,\n // OriginalPos,\n // OriginalScopeInfo,\n // GeneratedRangeInfo,\n} from './types';\n\nexport type { DecodedSourceMap, EncodedSourceMap, Mapping };\n\nexport type Options = {\n file?: string | null;\n sourceRoot?: string | null;\n};\n\nconst NO_NAME = -1;\n\n/**\n * Provides the state to generate a sourcemap.\n */\nexport class GenMapping {\n declare private _names: SetArray<string>;\n declare private _sources: SetArray<string>;\n declare private _sourcesContent: (string | null)[];\n declare private _mappings: SourceMapSegment[][];\n // private declare _originalScopes: OriginalScope[][];\n // private declare _generatedRanges: GeneratedRange[];\n declare private _ignoreList: SetArray<number>;\n declare file: string | null | undefined;\n declare sourceRoot: string | null | undefined;\n\n constructor({ file, sourceRoot }: Options = {}) {\n this._names = new SetArray();\n this._sources = new SetArray();\n this._sourcesContent = [];\n this._mappings = [];\n // this._originalScopes = [];\n // this._generatedRanges = [];\n this.file = file;\n this.sourceRoot = sourceRoot;\n this._ignoreList = new SetArray();\n }\n}\n\ninterface PublicMap {\n _names: GenMapping['_names'];\n _sources: GenMapping['_sources'];\n _sourcesContent: GenMapping['_sourcesContent'];\n _mappings: GenMapping['_mappings'];\n // _originalScopes: GenMapping['_originalScopes'];\n // _generatedRanges: GenMapping['_generatedRanges'];\n _ignoreList: GenMapping['_ignoreList'];\n}\n\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the map into a type\n * with public access modifiers.\n */\nfunction cast(map: unknown): PublicMap {\n return map as any;\n}\n\n/**\n * A low-level API to associate a generated position with an original source position. Line and\n * column here are 0-based, unlike `addMapping`.\n */\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source?: null,\n sourceLine?: null,\n sourceColumn?: null,\n name?: null,\n content?: null,\n): void;\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: string,\n sourceLine: number,\n sourceColumn: number,\n name?: null,\n content?: string | null,\n): void;\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: string,\n sourceLine: number,\n sourceColumn: number,\n name: string,\n content?: string | null,\n): void;\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source?: string | null,\n sourceLine?: number | null,\n sourceColumn?: number | null,\n name?: string | null,\n content?: string | null,\n): void {\n return addSegmentInternal(\n false,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n );\n}\n\n/**\n * A high-level API to associate a generated position with an original source position. Line is\n * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.\n */\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source?: null;\n original?: null;\n name?: null;\n content?: null;\n },\n): void;\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: string;\n original: Pos;\n name?: null;\n content?: string | null;\n },\n): void;\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: string;\n original: Pos;\n name: string;\n content?: string | null;\n },\n): void;\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source?: string | null;\n original?: Pos | null;\n name?: string | null;\n content?: string | null;\n },\n): void {\n return addMappingInternal(false, map, mapping as Parameters<typeof addMappingInternal>[2]);\n}\n\n/**\n * Same as `addSegment`, but will only add the segment if it generates useful information in the\n * resulting map. This only works correctly if segments are added **in order**, meaning you should\n * not add a segment with a lower generated line/column than one that came before.\n */\nexport const maybeAddSegment: typeof addSegment = (\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n) => {\n return addSegmentInternal(\n true,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n );\n};\n\n/**\n * Same as `addMapping`, but will only add the mapping if it generates useful information in the\n * resulting map. This only works correctly if mappings are added **in order**, meaning you should\n * not add a mapping with a lower generated line/column than one that came before.\n */\nexport const maybeAddMapping: typeof addMapping = (map, mapping) => {\n return addMappingInternal(true, map, mapping as Parameters<typeof addMappingInternal>[2]);\n};\n\n/**\n * Adds/removes the content of the source file to the source map.\n */\nexport function setSourceContent(map: GenMapping, source: string, content: string | null): void {\n const {\n _sources: sources,\n _sourcesContent: sourcesContent,\n // _originalScopes: originalScopes,\n } = cast(map);\n const index = put(sources, source);\n sourcesContent[index] = content;\n // if (index === originalScopes.length) originalScopes[index] = [];\n}\n\nexport function setIgnore(map: GenMapping, source: string, ignore = true) {\n const {\n _sources: sources,\n _sourcesContent: sourcesContent,\n _ignoreList: ignoreList,\n // _originalScopes: originalScopes,\n } = cast(map);\n const index = put(sources, source);\n if (index === sourcesContent.length) sourcesContent[index] = null;\n // if (index === originalScopes.length) originalScopes[index] = [];\n if (ignore) put(ignoreList, index);\n else remove(ignoreList, index);\n}\n\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function toDecodedMap(map: GenMapping): DecodedSourceMap {\n const {\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names,\n _ignoreList: ignoreList,\n // _originalScopes: originalScopes,\n // _generatedRanges: generatedRanges,\n } = cast(map);\n removeEmptyFinalLines(mappings);\n\n return {\n version: 3,\n file: map.file || undefined,\n names: names.array,\n sourceRoot: map.sourceRoot || undefined,\n sources: sources.array,\n sourcesContent,\n mappings,\n // originalScopes,\n // generatedRanges,\n ignoreList: ignoreList.array,\n };\n}\n\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function toEncodedMap(map: GenMapping): EncodedSourceMap {\n const decoded = toDecodedMap(map);\n return Object.assign({}, decoded, {\n // originalScopes: decoded.originalScopes.map((os) => encodeOriginalScopes(os)),\n // generatedRanges: encodeGeneratedRanges(decoded.generatedRanges as GeneratedRange[]),\n mappings: encode(decoded.mappings as SourceMapSegment[][]),\n });\n}\n\n/**\n * Constructs a new GenMapping, using the already present mappings of the input.\n */\nexport function fromMap(input: SourceMapInput): GenMapping {\n const map = new TraceMap(input);\n const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });\n\n putAll(cast(gen)._names, map.names);\n putAll(cast(gen)._sources, map.sources as string[]);\n cast(gen)._sourcesContent = map.sourcesContent || map.sources.map(() => null);\n cast(gen)._mappings = decodedMappings(map) as GenMapping['_mappings'];\n // TODO: implement originalScopes/generatedRanges\n if (map.ignoreList) putAll(cast(gen)._ignoreList, map.ignoreList);\n\n return gen;\n}\n\n/**\n * Returns an array of high-level mapping objects for every recorded segment, which could then be\n * passed to the `source-map` library.\n */\nexport function allMappings(map: GenMapping): Mapping[] {\n const out: Mapping[] = [];\n const { _mappings: mappings, _sources: sources, _names: names } = cast(map);\n\n for (let i = 0; i < mappings.length; i++) {\n const line = mappings[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n\n const generated = { line: i + 1, column: seg[COLUMN] };\n let source: string | undefined = undefined;\n let original: Pos | undefined = undefined;\n let name: string | undefined = undefined;\n\n if (seg.length !== 1) {\n source = sources.array[seg[SOURCES_INDEX]];\n original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };\n\n if (seg.length === 5) name = names.array[seg[NAMES_INDEX]];\n }\n\n out.push({ generated, source, original, name } as Mapping);\n }\n }\n\n return out;\n}\n\n// This split declaration is only so that terser can elminiate the static initialization block.\nfunction addSegmentInternal<S extends string | null | undefined>(\n skipable: boolean,\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: S,\n sourceLine: S extends string ? number : null | undefined,\n sourceColumn: S extends string ? number : null | undefined,\n name: S extends string ? string | null | undefined : null | undefined,\n content: S extends string ? string | null | undefined : null | undefined,\n): void {\n const {\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names,\n // _originalScopes: originalScopes,\n } = cast(map);\n const line = getIndex(mappings, genLine);\n const index = getColumnIndex(line, genColumn);\n\n if (!source) {\n if (skipable && skipSourceless(line, index)) return;\n return insert(line, index, [genColumn]);\n }\n\n // Sigh, TypeScript can't figure out sourceLine and sourceColumn aren't nullish if source\n // isn't nullish.\n assert<number>(sourceLine);\n assert<number>(sourceColumn);\n\n const sourcesIndex = put(sources, source);\n const namesIndex = name ? put(names, name) : NO_NAME;\n if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content ?? null;\n // if (sourcesIndex === originalScopes.length) originalScopes[sourcesIndex] = [];\n\n if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {\n return;\n }\n\n return insert(\n line,\n index,\n name\n ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]\n : [genColumn, sourcesIndex, sourceLine, sourceColumn],\n );\n}\n\nfunction assert<T>(_val: unknown): asserts _val is T {\n // noop.\n}\n\nfunction getIndex<T>(arr: T[][], index: number): T[] {\n for (let i = arr.length; i <= index; i++) {\n arr[i] = [];\n }\n return arr[index];\n}\n\nfunction getColumnIndex(line: SourceMapSegment[], genColumn: number): number {\n let index = line.length;\n for (let i = index - 1; i >= 0; index = i--) {\n const current = line[i];\n if (genColumn >= current[COLUMN]) break;\n }\n return index;\n}\n\nfunction insert<T>(array: T[], index: number, value: T) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\n\nfunction removeEmptyFinalLines(mappings: SourceMapSegment[][]) {\n const { length } = mappings;\n let len = length;\n for (let i = len - 1; i >= 0; len = i, i--) {\n if (mappings[i].length > 0) break;\n }\n if (len < length) mappings.length = len;\n}\n\nfunction putAll<T extends string | number>(setarr: SetArray<T>, array: T[]) {\n for (let i = 0; i < array.length; i++) put(setarr, array[i]);\n}\n\nfunction skipSourceless(line: SourceMapSegment[], index: number): boolean {\n // The start of a line is already sourceless, so adding a sourceless segment to the beginning\n // doesn't generate any useful information.\n if (index === 0) return true;\n\n const prev = line[index - 1];\n // If the previous segment is also sourceless, then adding another sourceless segment doesn't\n // genrate any new information. Else, this segment will end the source/named segment and point to\n // a sourceless position, which is useful.\n return prev.length === 1;\n}\n\nfunction skipSource(\n line: SourceMapSegment[],\n index: number,\n sourcesIndex: number,\n sourceLine: number,\n sourceColumn: number,\n namesIndex: number,\n): boolean {\n // A source/named segment at the start of a line gives position at that genColumn\n if (index === 0) return false;\n\n const prev = line[index - 1];\n\n // If the previous segment is sourceless, then we're transitioning to a source.\n if (prev.length === 1) return false;\n\n // If the previous segment maps to the exact same source position, then this segment doesn't\n // provide any new position information.\n return (\n sourcesIndex === prev[SOURCES_INDEX] &&\n sourceLine === prev[SOURCE_LINE] &&\n sourceColumn === prev[SOURCE_COLUMN] &&\n namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME)\n );\n}\n\nfunction addMappingInternal<S extends string | null | undefined>(\n skipable: boolean,\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: S;\n original: S extends string ? Pos : null | undefined;\n name: S extends string ? string | null | undefined : null | undefined;\n content: S extends string ? string | null | undefined : null | undefined;\n },\n) {\n const { generated, source, original, name, content } = mapping;\n if (!source) {\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n null,\n null,\n null,\n null,\n null,\n );\n }\n assert<Pos>(original);\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n source as string,\n original.line - 1,\n original.column,\n name,\n content,\n );\n}\n\n/*\nexport function addOriginalScope(\n map: GenMapping,\n data: {\n start: Pos;\n end: Pos;\n source: string;\n kind: string;\n name?: string;\n variables?: string[];\n },\n): OriginalScopeInfo {\n const { start, end, source, kind, name, variables } = data;\n const {\n _sources: sources,\n _sourcesContent: sourcesContent,\n _originalScopes: originalScopes,\n _names: names,\n } = cast(map);\n const index = put(sources, source);\n if (index === sourcesContent.length) sourcesContent[index] = null;\n if (index === originalScopes.length) originalScopes[index] = [];\n\n const kindIndex = put(names, kind);\n const scope: OriginalScope = name\n ? [start.line - 1, start.column, end.line - 1, end.column, kindIndex, put(names, name)]\n : [start.line - 1, start.column, end.line - 1, end.column, kindIndex];\n if (variables) {\n scope.vars = variables.map((v) => put(names, v));\n }\n const len = originalScopes[index].push(scope);\n return [index, len - 1, variables];\n}\n*/\n\n// Generated Ranges\n/*\nexport function addGeneratedRange(\n map: GenMapping,\n data: {\n start: Pos;\n isScope: boolean;\n originalScope?: OriginalScopeInfo;\n callsite?: OriginalPos;\n },\n): GeneratedRangeInfo {\n const { start, isScope, originalScope, callsite } = data;\n const {\n _originalScopes: originalScopes,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _generatedRanges: generatedRanges,\n } = cast(map);\n\n const range: GeneratedRange = [\n start.line - 1,\n start.column,\n 0,\n 0,\n originalScope ? originalScope[0] : -1,\n originalScope ? originalScope[1] : -1,\n ];\n if (originalScope?.[2]) {\n range.bindings = originalScope[2].map(() => [[-1]]);\n }\n if (callsite) {\n const index = put(sources, callsite.source);\n if (index === sourcesContent.length) sourcesContent[index] = null;\n if (index === originalScopes.length) originalScopes[index] = [];\n range.callsite = [index, callsite.line - 1, callsite.column];\n }\n if (isScope) range.isScope = true;\n generatedRanges.push(range);\n\n return [range, originalScope?.[2]];\n}\n\nexport function setEndPosition(range: GeneratedRangeInfo, pos: Pos) {\n range[0][2] = pos.line - 1;\n range[0][3] = pos.column;\n}\n\nexport function addBinding(\n map: GenMapping,\n range: GeneratedRangeInfo,\n variable: string,\n expression: string | BindingExpressionRange,\n) {\n const { _names: names } = cast(map);\n const bindings = (range[0].bindings ||= []);\n const vars = range[1];\n\n const index = vars!.indexOf(variable);\n const binding = getIndex(bindings, index);\n\n if (typeof expression === 'string') binding[0] = [put(names, expression)];\n else {\n const { start } = expression;\n binding.push([put(names, expression.expression), start.line - 1, start.column]);\n }\n}\n*/\n", "type GeneratedColumn = number;\ntype SourcesIndex = number;\ntype SourceLine = number;\ntype SourceColumn = number;\ntype NamesIndex = number;\n\nexport type SourceMapSegment =\n | [GeneratedColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];\n\nexport const COLUMN = 0;\nexport const SOURCES_INDEX = 1;\nexport const SOURCE_LINE = 2;\nexport const SOURCE_COLUMN = 3;\nexport const NAMES_INDEX = 4;\n", "import {GenMapping, maybeAddSegment, toEncodedMap} from \"@jridgewell/gen-mapping\";\n\n\n\nimport {charCodes} from \"./parser/util/charcodes\";\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Generate a source map indicating that each line maps directly to the original line,\n * with the tokens in their new positions.\n */\nexport default function computeSourceMap(\n {code: generatedCode, mappings: rawMappings},\n filePath,\n options,\n source,\n tokens,\n) {\n const sourceColumns = computeSourceColumns(source, tokens);\n const map = new GenMapping({file: options.compiledFilename});\n let tokenIndex = 0;\n // currentMapping is the output source index for the current input token being\n // considered.\n let currentMapping = rawMappings[0];\n while (currentMapping === undefined && tokenIndex < rawMappings.length - 1) {\n tokenIndex++;\n currentMapping = rawMappings[tokenIndex];\n }\n let line = 0;\n let lineStart = 0;\n if (currentMapping !== lineStart) {\n maybeAddSegment(map, line, 0, filePath, line, 0);\n }\n for (let i = 0; i < generatedCode.length; i++) {\n if (i === currentMapping) {\n const genColumn = currentMapping - lineStart;\n const sourceColumn = sourceColumns[tokenIndex];\n maybeAddSegment(map, line, genColumn, filePath, line, sourceColumn);\n while (\n (currentMapping === i || currentMapping === undefined) &&\n tokenIndex < rawMappings.length - 1\n ) {\n tokenIndex++;\n currentMapping = rawMappings[tokenIndex];\n }\n }\n if (generatedCode.charCodeAt(i) === charCodes.lineFeed) {\n line++;\n lineStart = i + 1;\n if (currentMapping !== lineStart) {\n maybeAddSegment(map, line, 0, filePath, line, 0);\n }\n }\n }\n const {sourceRoot, sourcesContent, ...sourceMap} = toEncodedMap(map);\n return sourceMap ;\n}\n\n/**\n * Create an array mapping each token index to the 0-based column of the start\n * position of the token.\n */\nfunction computeSourceColumns(code, tokens) {\n const sourceColumns = new Array(tokens.length);\n let tokenIndex = 0;\n let currentMapping = tokens[tokenIndex].start;\n let lineStart = 0;\n for (let i = 0; i < code.length; i++) {\n if (i === currentMapping) {\n sourceColumns[tokenIndex] = currentMapping - lineStart;\n tokenIndex++;\n currentMapping = tokens[tokenIndex].start;\n }\n if (code.charCodeAt(i) === charCodes.lineFeed) {\n lineStart = i + 1;\n }\n }\n return sourceColumns;\n}\n", "\n\nconst HELPERS = {\n require: `\n import {createRequire as CREATE_REQUIRE_NAME} from \"module\";\n const require = CREATE_REQUIRE_NAME(import.meta.url);\n `,\n interopRequireWildcard: `\n function interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n }\n `,\n interopRequireDefault: `\n function interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n `,\n createNamedExportFrom: `\n function createNamedExportFrom(obj, localName, importedName) {\n Object.defineProperty(exports, localName, {enumerable: true, configurable: true, get: () => obj[importedName]});\n }\n `,\n // Note that TypeScript and Babel do this differently; TypeScript does a simple existence\n // check in the exports object and does a plain assignment, whereas Babel uses\n // defineProperty and builds an object of explicitly-exported names so that star exports can\n // always take lower precedence. For now, we do the easier TypeScript thing.\n createStarExport: `\n function createStarExport(obj) {\n Object.keys(obj)\n .filter((key) => key !== \"default\" && key !== \"__esModule\")\n .forEach((key) => {\n if (exports.hasOwnProperty(key)) {\n return;\n }\n Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]});\n });\n }\n `,\n nullishCoalesce: `\n function nullishCoalesce(lhs, rhsFn) {\n if (lhs != null) {\n return lhs;\n } else {\n return rhsFn();\n }\n }\n `,\n asyncNullishCoalesce: `\n async function asyncNullishCoalesce(lhs, rhsFn) {\n if (lhs != null) {\n return lhs;\n } else {\n return await rhsFn();\n }\n }\n `,\n optionalChain: `\n function optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i];\n const fn = ops[i + 1];\n i += 2;\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n return undefined;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => value.call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n }\n `,\n asyncOptionalChain: `\n async function asyncOptionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i];\n const fn = ops[i + 1];\n i += 2;\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n return undefined;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = await fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = await fn((...args) => value.call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n }\n `,\n optionalChainDelete: `\n function optionalChainDelete(ops) {\n const result = OPTIONAL_CHAIN_NAME(ops);\n return result == null ? true : result;\n }\n `,\n asyncOptionalChainDelete: `\n async function asyncOptionalChainDelete(ops) {\n const result = await ASYNC_OPTIONAL_CHAIN_NAME(ops);\n return result == null ? true : result;\n }\n `,\n};\n\nexport class HelperManager {\n __init() {this.helperNames = {}}\n __init2() {this.createRequireName = null}\n constructor( nameManager) {;this.nameManager = nameManager;HelperManager.prototype.__init.call(this);HelperManager.prototype.__init2.call(this);}\n\n getHelperName(baseName) {\n let helperName = this.helperNames[baseName];\n if (helperName) {\n return helperName;\n }\n helperName = this.nameManager.claimFreeName(`_${baseName}`);\n this.helperNames[baseName] = helperName;\n return helperName;\n }\n\n emitHelpers() {\n let resultCode = \"\";\n if (this.helperNames.optionalChainDelete) {\n this.getHelperName(\"optionalChain\");\n }\n if (this.helperNames.asyncOptionalChainDelete) {\n this.getHelperName(\"asyncOptionalChain\");\n }\n for (const [baseName, helperCodeTemplate] of Object.entries(HELPERS)) {\n const helperName = this.helperNames[baseName];\n let helperCode = helperCodeTemplate;\n if (baseName === \"optionalChainDelete\") {\n helperCode = helperCode.replace(\"OPTIONAL_CHAIN_NAME\", this.helperNames.optionalChain);\n } else if (baseName === \"asyncOptionalChainDelete\") {\n helperCode = helperCode.replace(\n \"ASYNC_OPTIONAL_CHAIN_NAME\",\n this.helperNames.asyncOptionalChain,\n );\n } else if (baseName === \"require\") {\n if (this.createRequireName === null) {\n this.createRequireName = this.nameManager.claimFreeName(\"_createRequire\");\n }\n helperCode = helperCode.replace(/CREATE_REQUIRE_NAME/g, this.createRequireName);\n }\n if (helperName) {\n resultCode += \" \";\n resultCode += helperCode.replace(baseName, helperName).replace(/\\s+/g, \" \").trim();\n }\n }\n return resultCode;\n }\n}\n", "import {\n isBlockScopedDeclaration,\n isFunctionScopedDeclaration,\n isNonTopLevelDeclaration,\n} from \"./parser/tokenizer\";\n\nimport {TokenType as tt} from \"./parser/tokenizer/types\";\n\n\n/**\n * Traverse the given tokens and modify them if necessary to indicate that some names shadow global\n * variables.\n */\nexport default function identifyShadowedGlobals(\n tokens,\n scopes,\n globalNames,\n) {\n if (!hasShadowedGlobals(tokens, globalNames)) {\n return;\n }\n markShadowedGlobals(tokens, scopes, globalNames);\n}\n\n/**\n * We can do a fast up-front check to see if there are any declarations to global names. If not,\n * then there's no point in computing scope assignments.\n */\n// Exported for testing.\nexport function hasShadowedGlobals(tokens, globalNames) {\n for (const token of tokens.tokens) {\n if (\n token.type === tt.name &&\n !token.isType &&\n isNonTopLevelDeclaration(token) &&\n globalNames.has(tokens.identifierNameForToken(token))\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction markShadowedGlobals(\n tokens,\n scopes,\n globalNames,\n) {\n const scopeStack = [];\n let scopeIndex = scopes.length - 1;\n // Scopes were generated at completion time, so they're sorted by end index, so we can maintain a\n // good stack by going backwards through them.\n for (let i = tokens.tokens.length - 1; ; i--) {\n while (scopeStack.length > 0 && scopeStack[scopeStack.length - 1].startTokenIndex === i + 1) {\n scopeStack.pop();\n }\n while (scopeIndex >= 0 && scopes[scopeIndex].endTokenIndex === i + 1) {\n scopeStack.push(scopes[scopeIndex]);\n scopeIndex--;\n }\n // Process scopes after the last iteration so we can make sure we pop all of them.\n if (i < 0) {\n break;\n }\n\n const token = tokens.tokens[i];\n const name = tokens.identifierNameForToken(token);\n if (scopeStack.length > 1 && !token.isType && token.type === tt.name && globalNames.has(name)) {\n if (isBlockScopedDeclaration(token)) {\n markShadowedForScope(scopeStack[scopeStack.length - 1], tokens, name);\n } else if (isFunctionScopedDeclaration(token)) {\n let stackIndex = scopeStack.length - 1;\n while (stackIndex > 0 && !scopeStack[stackIndex].isFunctionScope) {\n stackIndex--;\n }\n if (stackIndex < 0) {\n throw new Error(\"Did not find parent function scope.\");\n }\n markShadowedForScope(scopeStack[stackIndex], tokens, name);\n }\n }\n }\n if (scopeStack.length > 0) {\n throw new Error(\"Expected empty scope stack after processing file.\");\n }\n}\n\nfunction markShadowedForScope(scope, tokens, name) {\n for (let i = scope.startTokenIndex; i < scope.endTokenIndex; i++) {\n const token = tokens.tokens[i];\n if (\n (token.type === tt.name || token.type === tt.jsxName) &&\n tokens.identifierNameForToken(token) === name\n ) {\n token.shadowsGlobal = true;\n }\n }\n}\n", "\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n/**\n * Get all identifier names in the code, in order, including duplicates.\n */\nexport default function getIdentifierNames(code, tokens) {\n const names = [];\n for (const token of tokens) {\n if (token.type === tt.name) {\n names.push(code.slice(token.start, token.end));\n }\n }\n return names;\n}\n", "\nimport getIdentifierNames from \"./util/getIdentifierNames\";\n\nexport default class NameManager {\n __init() {this.usedNames = new Set()}\n\n constructor(code, tokens) {;NameManager.prototype.__init.call(this);\n this.usedNames = new Set(getIdentifierNames(code, tokens));\n }\n\n claimFreeName(name) {\n const newName = this.findFreeName(name);\n this.usedNames.add(newName);\n return newName;\n }\n\n findFreeName(name) {\n if (!this.usedNames.has(name)) {\n return name;\n }\n let suffixNum = 2;\n while (this.usedNames.has(name + String(suffixNum))) {\n suffixNum++;\n }\n return name + String(suffixNum);\n }\n}\n", "import {createCheckers} from \"ts-interface-checker\";\n\nimport OptionsGenTypes from \"./Options-gen-types\";\n\nconst {Options: OptionsChecker} = createCheckers(OptionsGenTypes);\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexport function validateOptions(options) {\n OptionsChecker.strictCheck(options);\n}\n", "/**\n * This module was automatically generated by `ts-interface-builder`\n */\nimport * as t from \"ts-interface-checker\";\n// tslint:disable:object-literal-key-quotes\n\nexport const Transform = t.union(\n t.lit(\"jsx\"),\n t.lit(\"typescript\"),\n t.lit(\"flow\"),\n t.lit(\"imports\"),\n t.lit(\"react-hot-loader\"),\n t.lit(\"jest\"),\n);\n\nexport const SourceMapOptions = t.iface([], {\n compiledFilename: \"string\",\n});\n\nexport const Options = t.iface([], {\n transforms: t.array(\"Transform\"),\n disableESTransforms: t.opt(\"boolean\"),\n jsxRuntime: t.opt(t.union(t.lit(\"classic\"), t.lit(\"automatic\"), t.lit(\"preserve\"))),\n production: t.opt(\"boolean\"),\n jsxImportSource: t.opt(\"string\"),\n jsxPragma: t.opt(\"string\"),\n jsxFragmentPragma: t.opt(\"string\"),\n keepUnusedImports: t.opt(\"boolean\"),\n preserveDynamicImport: t.opt(\"boolean\"),\n injectCreateRequireForImportRequire: t.opt(\"boolean\"),\n enableLegacyTypeScriptModuleInterop: t.opt(\"boolean\"),\n enableLegacyBabel5ModuleInterop: t.opt(\"boolean\"),\n sourceMapOptions: t.opt(\"SourceMapOptions\"),\n filePath: t.opt(\"string\"),\n});\n\nconst exportedTypeSuite = {\n Transform,\n SourceMapOptions,\n Options,\n};\nexport default exportedTypeSuite;\n", "import {flowParseAssignableListItemTypes} from \"../plugins/flow\";\nimport {tsParseAssignableListItemTypes, tsParseModifiers} from \"../plugins/typescript\";\nimport {\n eat,\n IdentifierRole,\n match,\n next,\n popTypeContext,\n pushTypeContext,\n} from \"../tokenizer/index\";\nimport {ContextualKeyword} from \"../tokenizer/keywords\";\nimport {TokenType, TokenType as tt} from \"../tokenizer/types\";\nimport {isFlowEnabled, isTypeScriptEnabled, state} from \"./base\";\nimport {parseIdentifier, parseMaybeAssign, parseObj} from \"./expression\";\nimport {expect, unexpected} from \"./util\";\n\nexport function parseSpread() {\n next();\n parseMaybeAssign(false);\n}\n\nexport function parseRest(isBlockScope) {\n next();\n parseBindingAtom(isBlockScope);\n}\n\nexport function parseBindingIdentifier(isBlockScope) {\n parseIdentifier();\n markPriorBindingIdentifier(isBlockScope);\n}\n\nexport function parseImportedIdentifier() {\n parseIdentifier();\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportDeclaration;\n}\n\nexport function markPriorBindingIdentifier(isBlockScope) {\n let identifierRole;\n if (state.scopeDepth === 0) {\n identifierRole = IdentifierRole.TopLevelDeclaration;\n } else if (isBlockScope) {\n identifierRole = IdentifierRole.BlockScopedDeclaration;\n } else {\n identifierRole = IdentifierRole.FunctionScopedDeclaration;\n }\n state.tokens[state.tokens.length - 1].identifierRole = identifierRole;\n}\n\n// Parses lvalue (assignable) atom.\nexport function parseBindingAtom(isBlockScope) {\n switch (state.type) {\n case tt._this: {\n // In TypeScript, \"this\" may be the name of a parameter, so allow it.\n const oldIsType = pushTypeContext(0);\n next();\n popTypeContext(oldIsType);\n return;\n }\n\n case tt._yield:\n case tt.name: {\n state.type = tt.name;\n parseBindingIdentifier(isBlockScope);\n return;\n }\n\n case tt.bracketL: {\n next();\n parseBindingList(tt.bracketR, isBlockScope, true /* allowEmpty */);\n return;\n }\n\n case tt.braceL:\n parseObj(true, isBlockScope);\n return;\n\n default:\n unexpected();\n }\n}\n\nexport function parseBindingList(\n close,\n isBlockScope,\n allowEmpty = false,\n allowModifiers = false,\n contextId = 0,\n) {\n let first = true;\n\n let hasRemovedComma = false;\n const firstItemTokenIndex = state.tokens.length;\n\n while (!eat(close) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n state.tokens[state.tokens.length - 1].contextId = contextId;\n // After a \"this\" type in TypeScript, we need to set the following comma (if any) to also be\n // a type token so that it will be removed.\n if (!hasRemovedComma && state.tokens[firstItemTokenIndex].isType) {\n state.tokens[state.tokens.length - 1].isType = true;\n hasRemovedComma = true;\n }\n }\n if (allowEmpty && match(tt.comma)) {\n // Empty item; nothing further to parse for this item.\n } else if (eat(close)) {\n break;\n } else if (match(tt.ellipsis)) {\n parseRest(isBlockScope);\n parseAssignableListItemTypes();\n // Support rest element trailing commas allowed by TypeScript <2.9.\n eat(TokenType.comma);\n expect(close);\n break;\n } else {\n parseAssignableListItem(allowModifiers, isBlockScope);\n }\n }\n}\n\nfunction parseAssignableListItem(allowModifiers, isBlockScope) {\n if (allowModifiers) {\n tsParseModifiers([\n ContextualKeyword._public,\n ContextualKeyword._protected,\n ContextualKeyword._private,\n ContextualKeyword._readonly,\n ContextualKeyword._override,\n ]);\n }\n\n parseMaybeDefault(isBlockScope);\n parseAssignableListItemTypes();\n parseMaybeDefault(isBlockScope, true /* leftAlreadyParsed */);\n}\n\nfunction parseAssignableListItemTypes() {\n if (isFlowEnabled) {\n flowParseAssignableListItemTypes();\n } else if (isTypeScriptEnabled) {\n tsParseAssignableListItemTypes();\n }\n}\n\n// Parses assignment pattern around given atom if possible.\nexport function parseMaybeDefault(isBlockScope, leftAlreadyParsed = false) {\n if (!leftAlreadyParsed) {\n parseBindingAtom(isBlockScope);\n }\n if (!eat(tt.eq)) {\n return;\n }\n const eqIndex = state.tokens.length - 1;\n parseMaybeAssign();\n state.tokens[eqIndex].rhsEndIndex = state.tokens.length;\n}\n", "import {\n eat,\n finishToken,\n IdentifierRole,\n lookaheadType,\n lookaheadTypeAndKeyword,\n match,\n next,\n nextTemplateToken,\n popTypeContext,\n pushTypeContext,\n rescan_gt,\n} from \"../tokenizer/index\";\nimport {ContextualKeyword} from \"../tokenizer/keywords\";\nimport {TokenType, TokenType as tt} from \"../tokenizer/types\";\nimport {isJSXEnabled, state} from \"../traverser/base\";\nimport {\n atPossibleAsync,\n baseParseMaybeAssign,\n baseParseSubscript,\n parseCallExpressionArguments,\n parseExprAtom,\n parseExpression,\n parseFunctionBody,\n parseIdentifier,\n parseLiteral,\n parseMaybeAssign,\n parseMaybeUnary,\n parsePropertyName,\n parseTemplate,\n\n} from \"../traverser/expression\";\nimport {parseBindingIdentifier, parseBindingList, parseImportedIdentifier} from \"../traverser/lval\";\nimport {\n baseParseMaybeDecoratorArguments,\n parseBlockBody,\n parseClass,\n parseFunction,\n parseFunctionParams,\n parseStatement,\n parseVarStatement,\n} from \"../traverser/statement\";\nimport {\n canInsertSemicolon,\n eatContextual,\n expect,\n expectContextual,\n hasPrecedingLineBreak,\n isContextual,\n isLineTerminator,\n isLookaheadContextual,\n semicolon,\n unexpected,\n} from \"../traverser/util\";\nimport {nextJSXTagToken} from \"./jsx\";\n\nfunction tsIsIdentifier() {\n // TODO: actually a bit more complex in TypeScript, but shouldn't matter.\n // See https://github.com/Microsoft/TypeScript/issues/15008\n return match(tt.name);\n}\n\nfunction isLiteralPropertyName() {\n return (\n match(tt.name) ||\n Boolean(state.type & TokenType.IS_KEYWORD) ||\n match(tt.string) ||\n match(tt.num) ||\n match(tt.bigint) ||\n match(tt.decimal)\n );\n}\n\nfunction tsNextTokenCanFollowModifier() {\n // Note: TypeScript's implementation is much more complicated because\n // more things are considered modifiers there.\n // This implementation only handles modifiers not handled by babylon itself. And \"static\".\n // TODO: Would be nice to avoid lookahead. Want a hasLineBreakUpNext() method...\n const snapshot = state.snapshot();\n\n next();\n const canFollowModifier =\n (match(tt.bracketL) ||\n match(tt.braceL) ||\n match(tt.star) ||\n match(tt.ellipsis) ||\n match(tt.hash) ||\n isLiteralPropertyName()) &&\n !hasPrecedingLineBreak();\n\n if (canFollowModifier) {\n return true;\n } else {\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n}\n\nexport function tsParseModifiers(allowedModifiers) {\n while (true) {\n const modifier = tsParseModifier(allowedModifiers);\n if (modifier === null) {\n break;\n }\n }\n}\n\n/** Parses a modifier matching one the given modifier names. */\nexport function tsParseModifier(\n allowedModifiers,\n) {\n if (!match(tt.name)) {\n return null;\n }\n\n const modifier = state.contextualKeyword;\n if (allowedModifiers.indexOf(modifier) !== -1 && tsNextTokenCanFollowModifier()) {\n switch (modifier) {\n case ContextualKeyword._readonly:\n state.tokens[state.tokens.length - 1].type = tt._readonly;\n break;\n case ContextualKeyword._abstract:\n state.tokens[state.tokens.length - 1].type = tt._abstract;\n break;\n case ContextualKeyword._static:\n state.tokens[state.tokens.length - 1].type = tt._static;\n break;\n case ContextualKeyword._public:\n state.tokens[state.tokens.length - 1].type = tt._public;\n break;\n case ContextualKeyword._private:\n state.tokens[state.tokens.length - 1].type = tt._private;\n break;\n case ContextualKeyword._protected:\n state.tokens[state.tokens.length - 1].type = tt._protected;\n break;\n case ContextualKeyword._override:\n state.tokens[state.tokens.length - 1].type = tt._override;\n break;\n case ContextualKeyword._declare:\n state.tokens[state.tokens.length - 1].type = tt._declare;\n break;\n default:\n break;\n }\n return modifier;\n }\n return null;\n}\n\nfunction tsParseEntityName() {\n parseIdentifier();\n while (eat(tt.dot)) {\n parseIdentifier();\n }\n}\n\nfunction tsParseTypeReference() {\n tsParseEntityName();\n if (!hasPrecedingLineBreak() && match(tt.lessThan)) {\n tsParseTypeArguments();\n }\n}\n\nfunction tsParseThisTypePredicate() {\n next();\n tsParseTypeAnnotation();\n}\n\nfunction tsParseThisTypeNode() {\n next();\n}\n\nfunction tsParseTypeQuery() {\n expect(tt._typeof);\n if (match(tt._import)) {\n tsParseImportType();\n } else {\n tsParseEntityName();\n }\n if (!hasPrecedingLineBreak() && match(tt.lessThan)) {\n tsParseTypeArguments();\n }\n}\n\nfunction tsParseImportType() {\n expect(tt._import);\n expect(tt.parenL);\n expect(tt.string);\n expect(tt.parenR);\n if (eat(tt.dot)) {\n tsParseEntityName();\n }\n if (match(tt.lessThan)) {\n tsParseTypeArguments();\n }\n}\n\nfunction tsParseTypeParameter() {\n eat(tt._const);\n const hadIn = eat(tt._in);\n const hadOut = eatContextual(ContextualKeyword._out);\n eat(tt._const);\n if ((hadIn || hadOut) && !match(tt.name)) {\n // The \"in\" or \"out\" keyword must have actually been the type parameter\n // name, so set it as the name.\n state.tokens[state.tokens.length - 1].type = tt.name;\n } else {\n parseIdentifier();\n }\n\n if (eat(tt._extends)) {\n tsParseType();\n }\n if (eat(tt.eq)) {\n tsParseType();\n }\n}\n\nexport function tsTryParseTypeParameters() {\n if (match(tt.lessThan)) {\n tsParseTypeParameters();\n }\n}\n\nfunction tsParseTypeParameters() {\n const oldIsType = pushTypeContext(0);\n if (match(tt.lessThan) || match(tt.typeParameterStart)) {\n next();\n } else {\n unexpected();\n }\n\n while (!eat(tt.greaterThan) && !state.error) {\n tsParseTypeParameter();\n eat(tt.comma);\n }\n popTypeContext(oldIsType);\n}\n\n// Note: In TypeScript implementation we must provide `yieldContext` and `awaitContext`,\n// but here it's always false, because this is only used for types.\nfunction tsFillSignature(returnToken) {\n // Arrow fns *must* have return token (`=>`). Normal functions can omit it.\n const returnTokenRequired = returnToken === tt.arrow;\n tsTryParseTypeParameters();\n expect(tt.parenL);\n // Create a scope even though we're doing type parsing so we don't accidentally\n // treat params as top-level bindings.\n state.scopeDepth++;\n tsParseBindingListForSignature(false /* isBlockScope */);\n state.scopeDepth--;\n if (returnTokenRequired) {\n tsParseTypeOrTypePredicateAnnotation(returnToken);\n } else if (match(returnToken)) {\n tsParseTypeOrTypePredicateAnnotation(returnToken);\n }\n}\n\nfunction tsParseBindingListForSignature(isBlockScope) {\n parseBindingList(tt.parenR, isBlockScope);\n}\n\nfunction tsParseTypeMemberSemicolon() {\n if (!eat(tt.comma)) {\n semicolon();\n }\n}\n\nfunction tsParseSignatureMember() {\n tsFillSignature(tt.colon);\n tsParseTypeMemberSemicolon();\n}\n\nfunction tsIsUnambiguouslyIndexSignature() {\n const snapshot = state.snapshot();\n next(); // Skip '{'\n const isIndexSignature = eat(tt.name) && match(tt.colon);\n state.restoreFromSnapshot(snapshot);\n return isIndexSignature;\n}\n\nfunction tsTryParseIndexSignature() {\n if (!(match(tt.bracketL) && tsIsUnambiguouslyIndexSignature())) {\n return false;\n }\n\n const oldIsType = pushTypeContext(0);\n\n expect(tt.bracketL);\n parseIdentifier();\n tsParseTypeAnnotation();\n expect(tt.bracketR);\n\n tsTryParseTypeAnnotation();\n tsParseTypeMemberSemicolon();\n\n popTypeContext(oldIsType);\n return true;\n}\n\nfunction tsParsePropertyOrMethodSignature(isReadonly) {\n eat(tt.question);\n\n if (!isReadonly && (match(tt.parenL) || match(tt.lessThan))) {\n tsFillSignature(tt.colon);\n tsParseTypeMemberSemicolon();\n } else {\n tsTryParseTypeAnnotation();\n tsParseTypeMemberSemicolon();\n }\n}\n\nfunction tsParseTypeMember() {\n if (match(tt.parenL) || match(tt.lessThan)) {\n // call signature\n tsParseSignatureMember();\n return;\n }\n if (match(tt._new)) {\n next();\n if (match(tt.parenL) || match(tt.lessThan)) {\n // constructor signature\n tsParseSignatureMember();\n } else {\n tsParsePropertyOrMethodSignature(false);\n }\n return;\n }\n const readonly = !!tsParseModifier([ContextualKeyword._readonly]);\n\n const found = tsTryParseIndexSignature();\n if (found) {\n return;\n }\n if (\n (isContextual(ContextualKeyword._get) || isContextual(ContextualKeyword._set)) &&\n tsNextTokenCanFollowModifier()\n ) {\n // This is a getter/setter on a type. The tsNextTokenCanFollowModifier\n // function already called next() for us, so continue parsing the name.\n }\n parsePropertyName(-1 /* Types don't need context IDs. */);\n tsParsePropertyOrMethodSignature(readonly);\n}\n\nfunction tsParseTypeLiteral() {\n tsParseObjectTypeMembers();\n}\n\nfunction tsParseObjectTypeMembers() {\n expect(tt.braceL);\n while (!eat(tt.braceR) && !state.error) {\n tsParseTypeMember();\n }\n}\n\nfunction tsLookaheadIsStartOfMappedType() {\n const snapshot = state.snapshot();\n const isStartOfMappedType = tsIsStartOfMappedType();\n state.restoreFromSnapshot(snapshot);\n return isStartOfMappedType;\n}\n\nfunction tsIsStartOfMappedType() {\n next();\n if (eat(tt.plus) || eat(tt.minus)) {\n return isContextual(ContextualKeyword._readonly);\n }\n if (isContextual(ContextualKeyword._readonly)) {\n next();\n }\n if (!match(tt.bracketL)) {\n return false;\n }\n next();\n if (!tsIsIdentifier()) {\n return false;\n }\n next();\n return match(tt._in);\n}\n\nfunction tsParseMappedTypeParameter() {\n parseIdentifier();\n expect(tt._in);\n tsParseType();\n}\n\nfunction tsParseMappedType() {\n expect(tt.braceL);\n if (match(tt.plus) || match(tt.minus)) {\n next();\n expectContextual(ContextualKeyword._readonly);\n } else {\n eatContextual(ContextualKeyword._readonly);\n }\n expect(tt.bracketL);\n tsParseMappedTypeParameter();\n if (eatContextual(ContextualKeyword._as)) {\n tsParseType();\n }\n expect(tt.bracketR);\n if (match(tt.plus) || match(tt.minus)) {\n next();\n expect(tt.question);\n } else {\n eat(tt.question);\n }\n tsTryParseType();\n semicolon();\n expect(tt.braceR);\n}\n\nfunction tsParseTupleType() {\n expect(tt.bracketL);\n while (!eat(tt.bracketR) && !state.error) {\n // Do not validate presence of either none or only labeled elements\n tsParseTupleElementType();\n eat(tt.comma);\n }\n}\n\nfunction tsParseTupleElementType() {\n // parses `...TsType[]`\n if (eat(tt.ellipsis)) {\n tsParseType();\n } else {\n // parses `TsType?`\n tsParseType();\n eat(tt.question);\n }\n\n // The type we parsed above was actually a label\n if (eat(tt.colon)) {\n // Labeled tuple types must affix the label with `...` or `?`, so no need to handle those here\n tsParseType();\n }\n}\n\nfunction tsParseParenthesizedType() {\n expect(tt.parenL);\n tsParseType();\n expect(tt.parenR);\n}\n\nfunction tsParseTemplateLiteralType() {\n // Finish `, read quasi\n nextTemplateToken();\n // Finish quasi, read ${\n nextTemplateToken();\n while (!match(tt.backQuote) && !state.error) {\n expect(tt.dollarBraceL);\n tsParseType();\n // Finish }, read quasi\n nextTemplateToken();\n // Finish quasi, read either ${ or `\n nextTemplateToken();\n }\n next();\n}\n\nvar FunctionType; (function (FunctionType) {\n const TSFunctionType = 0; FunctionType[FunctionType[\"TSFunctionType\"] = TSFunctionType] = \"TSFunctionType\";\n const TSConstructorType = TSFunctionType + 1; FunctionType[FunctionType[\"TSConstructorType\"] = TSConstructorType] = \"TSConstructorType\";\n const TSAbstractConstructorType = TSConstructorType + 1; FunctionType[FunctionType[\"TSAbstractConstructorType\"] = TSAbstractConstructorType] = \"TSAbstractConstructorType\";\n})(FunctionType || (FunctionType = {}));\n\nfunction tsParseFunctionOrConstructorType(type) {\n if (type === FunctionType.TSAbstractConstructorType) {\n expectContextual(ContextualKeyword._abstract);\n }\n if (type === FunctionType.TSConstructorType || type === FunctionType.TSAbstractConstructorType) {\n expect(tt._new);\n }\n const oldInDisallowConditionalTypesContext = state.inDisallowConditionalTypesContext;\n state.inDisallowConditionalTypesContext = false;\n tsFillSignature(tt.arrow);\n state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n}\n\nfunction tsParseNonArrayType() {\n switch (state.type) {\n case tt.name:\n tsParseTypeReference();\n return;\n case tt._void:\n case tt._null:\n next();\n return;\n case tt.string:\n case tt.num:\n case tt.bigint:\n case tt.decimal:\n case tt._true:\n case tt._false:\n parseLiteral();\n return;\n case tt.minus:\n next();\n parseLiteral();\n return;\n case tt._this: {\n tsParseThisTypeNode();\n if (isContextual(ContextualKeyword._is) && !hasPrecedingLineBreak()) {\n tsParseThisTypePredicate();\n }\n return;\n }\n case tt._typeof:\n tsParseTypeQuery();\n return;\n case tt._import:\n tsParseImportType();\n return;\n case tt.braceL:\n if (tsLookaheadIsStartOfMappedType()) {\n tsParseMappedType();\n } else {\n tsParseTypeLiteral();\n }\n return;\n case tt.bracketL:\n tsParseTupleType();\n return;\n case tt.parenL:\n tsParseParenthesizedType();\n return;\n case tt.backQuote:\n tsParseTemplateLiteralType();\n return;\n default:\n if (state.type & TokenType.IS_KEYWORD) {\n next();\n state.tokens[state.tokens.length - 1].type = tt.name;\n return;\n }\n break;\n }\n\n unexpected();\n}\n\nfunction tsParseArrayTypeOrHigher() {\n tsParseNonArrayType();\n while (!hasPrecedingLineBreak() && eat(tt.bracketL)) {\n if (!eat(tt.bracketR)) {\n // If we hit ] immediately, this is an array type, otherwise it's an indexed access type.\n tsParseType();\n expect(tt.bracketR);\n }\n }\n}\n\nfunction tsParseInferType() {\n expectContextual(ContextualKeyword._infer);\n parseIdentifier();\n if (match(tt._extends)) {\n // Infer type constraints introduce an ambiguity about whether the \"extends\"\n // is a constraint for this infer type or is another conditional type.\n const snapshot = state.snapshot();\n expect(tt._extends);\n const oldInDisallowConditionalTypesContext = state.inDisallowConditionalTypesContext;\n state.inDisallowConditionalTypesContext = true;\n tsParseType();\n state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n if (state.error || (!state.inDisallowConditionalTypesContext && match(tt.question))) {\n state.restoreFromSnapshot(snapshot);\n }\n }\n}\n\nfunction tsParseTypeOperatorOrHigher() {\n if (\n isContextual(ContextualKeyword._keyof) ||\n isContextual(ContextualKeyword._unique) ||\n isContextual(ContextualKeyword._readonly)\n ) {\n next();\n tsParseTypeOperatorOrHigher();\n } else if (isContextual(ContextualKeyword._infer)) {\n tsParseInferType();\n } else {\n const oldInDisallowConditionalTypesContext = state.inDisallowConditionalTypesContext;\n state.inDisallowConditionalTypesContext = false;\n tsParseArrayTypeOrHigher();\n state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n }\n}\n\nfunction tsParseIntersectionTypeOrHigher() {\n eat(tt.bitwiseAND);\n tsParseTypeOperatorOrHigher();\n if (match(tt.bitwiseAND)) {\n while (eat(tt.bitwiseAND)) {\n tsParseTypeOperatorOrHigher();\n }\n }\n}\n\nfunction tsParseUnionTypeOrHigher() {\n eat(tt.bitwiseOR);\n tsParseIntersectionTypeOrHigher();\n if (match(tt.bitwiseOR)) {\n while (eat(tt.bitwiseOR)) {\n tsParseIntersectionTypeOrHigher();\n }\n }\n}\n\nfunction tsIsStartOfFunctionType() {\n if (match(tt.lessThan)) {\n return true;\n }\n return match(tt.parenL) && tsLookaheadIsUnambiguouslyStartOfFunctionType();\n}\n\nfunction tsSkipParameterStart() {\n if (match(tt.name) || match(tt._this)) {\n next();\n return true;\n }\n // If this is a possible array/object destructure, walk to the matching bracket/brace.\n // The next token after will tell us definitively whether this is a function param.\n if (match(tt.braceL) || match(tt.bracketL)) {\n let depth = 1;\n next();\n while (depth > 0 && !state.error) {\n if (match(tt.braceL) || match(tt.bracketL)) {\n depth++;\n } else if (match(tt.braceR) || match(tt.bracketR)) {\n depth--;\n }\n next();\n }\n return true;\n }\n return false;\n}\n\nfunction tsLookaheadIsUnambiguouslyStartOfFunctionType() {\n const snapshot = state.snapshot();\n const isUnambiguouslyStartOfFunctionType = tsIsUnambiguouslyStartOfFunctionType();\n state.restoreFromSnapshot(snapshot);\n return isUnambiguouslyStartOfFunctionType;\n}\n\nfunction tsIsUnambiguouslyStartOfFunctionType() {\n next();\n if (match(tt.parenR) || match(tt.ellipsis)) {\n // ( )\n // ( ...\n return true;\n }\n if (tsSkipParameterStart()) {\n if (match(tt.colon) || match(tt.comma) || match(tt.question) || match(tt.eq)) {\n // ( xxx :\n // ( xxx ,\n // ( xxx ?\n // ( xxx =\n return true;\n }\n if (match(tt.parenR)) {\n next();\n if (match(tt.arrow)) {\n // ( xxx ) =>\n return true;\n }\n }\n }\n return false;\n}\n\nfunction tsParseTypeOrTypePredicateAnnotation(returnToken) {\n const oldIsType = pushTypeContext(0);\n expect(returnToken);\n const finishedReturn = tsParseTypePredicateOrAssertsPrefix();\n if (!finishedReturn) {\n tsParseType();\n }\n popTypeContext(oldIsType);\n}\n\nfunction tsTryParseTypeOrTypePredicateAnnotation() {\n if (match(tt.colon)) {\n tsParseTypeOrTypePredicateAnnotation(tt.colon);\n }\n}\n\nexport function tsTryParseTypeAnnotation() {\n if (match(tt.colon)) {\n tsParseTypeAnnotation();\n }\n}\n\nfunction tsTryParseType() {\n if (eat(tt.colon)) {\n tsParseType();\n }\n}\n\n/**\n * Detect a few special return syntax cases: `x is T`, `asserts x`, `asserts x is T`,\n * `asserts this is T`.\n *\n * Returns true if we parsed the return type, false if there's still a type to be parsed.\n */\nfunction tsParseTypePredicateOrAssertsPrefix() {\n const snapshot = state.snapshot();\n if (isContextual(ContextualKeyword._asserts)) {\n // Normally this is `asserts x is T`, but at this point, it might be `asserts is T` (a user-\n // defined type guard on the `asserts` variable) or just a type called `asserts`.\n next();\n if (eatContextual(ContextualKeyword._is)) {\n // If we see `asserts is`, then this must be of the form `asserts is T`, since\n // `asserts is is T` isn't valid.\n tsParseType();\n return true;\n } else if (tsIsIdentifier() || match(tt._this)) {\n next();\n if (eatContextual(ContextualKeyword._is)) {\n // If we see `is`, then this is `asserts x is T`. Otherwise, it's `asserts x`.\n tsParseType();\n }\n return true;\n } else {\n // Regular type, so bail out and start type parsing from scratch.\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n } else if (tsIsIdentifier() || match(tt._this)) {\n // This is a regular identifier, which may or may not have \"is\" after it.\n next();\n if (isContextual(ContextualKeyword._is) && !hasPrecedingLineBreak()) {\n next();\n tsParseType();\n return true;\n } else {\n // Regular type, so bail out and start type parsing from scratch.\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n }\n return false;\n}\n\nexport function tsParseTypeAnnotation() {\n const oldIsType = pushTypeContext(0);\n expect(tt.colon);\n tsParseType();\n popTypeContext(oldIsType);\n}\n\nexport function tsParseType() {\n tsParseNonConditionalType();\n if (state.inDisallowConditionalTypesContext || hasPrecedingLineBreak() || !eat(tt._extends)) {\n return;\n }\n // extends type\n const oldInDisallowConditionalTypesContext = state.inDisallowConditionalTypesContext;\n state.inDisallowConditionalTypesContext = true;\n tsParseNonConditionalType();\n state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n\n expect(tt.question);\n // true type\n tsParseType();\n expect(tt.colon);\n // false type\n tsParseType();\n}\n\nfunction isAbstractConstructorSignature() {\n return isContextual(ContextualKeyword._abstract) && lookaheadType() === tt._new;\n}\n\nexport function tsParseNonConditionalType() {\n if (tsIsStartOfFunctionType()) {\n tsParseFunctionOrConstructorType(FunctionType.TSFunctionType);\n return;\n }\n if (match(tt._new)) {\n // As in `new () => Date`\n tsParseFunctionOrConstructorType(FunctionType.TSConstructorType);\n return;\n } else if (isAbstractConstructorSignature()) {\n // As in `abstract new () => Date`\n tsParseFunctionOrConstructorType(FunctionType.TSAbstractConstructorType);\n return;\n }\n tsParseUnionTypeOrHigher();\n}\n\nexport function tsParseTypeAssertion() {\n const oldIsType = pushTypeContext(1);\n tsParseType();\n expect(tt.greaterThan);\n popTypeContext(oldIsType);\n parseMaybeUnary();\n}\n\nexport function tsTryParseJSXTypeArgument() {\n if (eat(tt.jsxTagStart)) {\n state.tokens[state.tokens.length - 1].type = tt.typeParameterStart;\n const oldIsType = pushTypeContext(1);\n while (!match(tt.greaterThan) && !state.error) {\n tsParseType();\n eat(tt.comma);\n }\n // Process >, but the one after needs to be parsed JSX-style.\n nextJSXTagToken();\n popTypeContext(oldIsType);\n }\n}\n\nfunction tsParseHeritageClause() {\n while (!match(tt.braceL) && !state.error) {\n tsParseExpressionWithTypeArguments();\n eat(tt.comma);\n }\n}\n\nfunction tsParseExpressionWithTypeArguments() {\n // Note: TS uses parseLeftHandSideExpressionOrHigher,\n // then has grammar errors later if it's not an EntityName.\n tsParseEntityName();\n if (match(tt.lessThan)) {\n tsParseTypeArguments();\n }\n}\n\nfunction tsParseInterfaceDeclaration() {\n parseBindingIdentifier(false);\n tsTryParseTypeParameters();\n if (eat(tt._extends)) {\n tsParseHeritageClause();\n }\n tsParseObjectTypeMembers();\n}\n\nfunction tsParseTypeAliasDeclaration() {\n parseBindingIdentifier(false);\n tsTryParseTypeParameters();\n expect(tt.eq);\n tsParseType();\n semicolon();\n}\n\nfunction tsParseEnumMember() {\n // Computed property names are grammar errors in an enum, so accept just string literal or identifier.\n if (match(tt.string)) {\n parseLiteral();\n } else {\n parseIdentifier();\n }\n if (eat(tt.eq)) {\n const eqIndex = state.tokens.length - 1;\n parseMaybeAssign();\n state.tokens[eqIndex].rhsEndIndex = state.tokens.length;\n }\n}\n\nfunction tsParseEnumDeclaration() {\n parseBindingIdentifier(false);\n expect(tt.braceL);\n while (!eat(tt.braceR) && !state.error) {\n tsParseEnumMember();\n eat(tt.comma);\n }\n}\n\nfunction tsParseModuleBlock() {\n expect(tt.braceL);\n parseBlockBody(/* end */ tt.braceR);\n}\n\nfunction tsParseModuleOrNamespaceDeclaration() {\n parseBindingIdentifier(false);\n if (eat(tt.dot)) {\n tsParseModuleOrNamespaceDeclaration();\n } else {\n tsParseModuleBlock();\n }\n}\n\nfunction tsParseAmbientExternalModuleDeclaration() {\n if (isContextual(ContextualKeyword._global)) {\n parseIdentifier();\n } else if (match(tt.string)) {\n parseExprAtom();\n } else {\n unexpected();\n }\n\n if (match(tt.braceL)) {\n tsParseModuleBlock();\n } else {\n semicolon();\n }\n}\n\nexport function tsParseImportEqualsDeclaration() {\n parseImportedIdentifier();\n expect(tt.eq);\n tsParseModuleReference();\n semicolon();\n}\n\nfunction tsIsExternalModuleReference() {\n return isContextual(ContextualKeyword._require) && lookaheadType() === tt.parenL;\n}\n\nfunction tsParseModuleReference() {\n if (tsIsExternalModuleReference()) {\n tsParseExternalModuleReference();\n } else {\n tsParseEntityName();\n }\n}\n\nfunction tsParseExternalModuleReference() {\n expectContextual(ContextualKeyword._require);\n expect(tt.parenL);\n if (!match(tt.string)) {\n unexpected();\n }\n parseLiteral();\n expect(tt.parenR);\n}\n\n// Utilities\n\n// Returns true if a statement matched.\nfunction tsTryParseDeclare() {\n if (isLineTerminator()) {\n return false;\n }\n switch (state.type) {\n case tt._function: {\n const oldIsType = pushTypeContext(1);\n next();\n // We don't need to precisely get the function start here, since it's only used to mark\n // the function as a type if it's bodiless, and it's already a type here.\n const functionStart = state.start;\n parseFunction(functionStart, /* isStatement */ true);\n popTypeContext(oldIsType);\n return true;\n }\n case tt._class: {\n const oldIsType = pushTypeContext(1);\n parseClass(/* isStatement */ true, /* optionalId */ false);\n popTypeContext(oldIsType);\n return true;\n }\n case tt._const: {\n if (match(tt._const) && isLookaheadContextual(ContextualKeyword._enum)) {\n const oldIsType = pushTypeContext(1);\n // `const enum = 0;` not allowed because \"enum\" is a strict mode reserved word.\n expect(tt._const);\n expectContextual(ContextualKeyword._enum);\n state.tokens[state.tokens.length - 1].type = tt._enum;\n tsParseEnumDeclaration();\n popTypeContext(oldIsType);\n return true;\n }\n }\n // falls through\n case tt._var:\n case tt._let: {\n const oldIsType = pushTypeContext(1);\n parseVarStatement(state.type !== tt._var);\n popTypeContext(oldIsType);\n return true;\n }\n case tt.name: {\n const oldIsType = pushTypeContext(1);\n const contextualKeyword = state.contextualKeyword;\n let matched = false;\n if (contextualKeyword === ContextualKeyword._global) {\n tsParseAmbientExternalModuleDeclaration();\n matched = true;\n } else {\n matched = tsParseDeclaration(contextualKeyword, /* isBeforeToken */ true);\n }\n popTypeContext(oldIsType);\n return matched;\n }\n default:\n return false;\n }\n}\n\n// Note: this won't be called unless the keyword is allowed in `shouldParseExportDeclaration`.\n// Returns true if it matched a declaration.\nfunction tsTryParseExportDeclaration() {\n return tsParseDeclaration(state.contextualKeyword, /* isBeforeToken */ true);\n}\n\n// Returns true if it matched a statement.\nfunction tsParseExpressionStatement(contextualKeyword) {\n switch (contextualKeyword) {\n case ContextualKeyword._declare: {\n const declareTokenIndex = state.tokens.length - 1;\n const matched = tsTryParseDeclare();\n if (matched) {\n state.tokens[declareTokenIndex].type = tt._declare;\n return true;\n }\n break;\n }\n case ContextualKeyword._global:\n // `global { }` (with no `declare`) may appear inside an ambient module declaration.\n // Would like to use tsParseAmbientExternalModuleDeclaration here, but already ran past \"global\".\n if (match(tt.braceL)) {\n tsParseModuleBlock();\n return true;\n }\n break;\n\n default:\n return tsParseDeclaration(contextualKeyword, /* isBeforeToken */ false);\n }\n return false;\n}\n\n/**\n * Common code for parsing a declaration.\n *\n * isBeforeToken indicates that the current parser state is at the contextual\n * keyword (and that it is not yet emitted) rather than reading the token after\n * it. When isBeforeToken is true, we may be preceded by an `export` token and\n * should include that token in a type context we create, e.g. to handle\n * `export interface` or `export type`. (This is a bit of a hack and should be\n * cleaned up at some point.)\n *\n * Returns true if it matched a declaration.\n */\nfunction tsParseDeclaration(contextualKeyword, isBeforeToken) {\n switch (contextualKeyword) {\n case ContextualKeyword._abstract:\n if (tsCheckLineTerminator(isBeforeToken) && match(tt._class)) {\n state.tokens[state.tokens.length - 1].type = tt._abstract;\n parseClass(/* isStatement */ true, /* optionalId */ false);\n return true;\n }\n break;\n\n case ContextualKeyword._enum:\n if (tsCheckLineTerminator(isBeforeToken) && match(tt.name)) {\n state.tokens[state.tokens.length - 1].type = tt._enum;\n tsParseEnumDeclaration();\n return true;\n }\n break;\n\n case ContextualKeyword._interface:\n if (tsCheckLineTerminator(isBeforeToken) && match(tt.name)) {\n // `next` is true in \"export\" and \"declare\" contexts, so we want to remove that token\n // as well.\n const oldIsType = pushTypeContext(isBeforeToken ? 2 : 1);\n tsParseInterfaceDeclaration();\n popTypeContext(oldIsType);\n return true;\n }\n break;\n\n case ContextualKeyword._module:\n if (tsCheckLineTerminator(isBeforeToken)) {\n if (match(tt.string)) {\n const oldIsType = pushTypeContext(isBeforeToken ? 2 : 1);\n tsParseAmbientExternalModuleDeclaration();\n popTypeContext(oldIsType);\n return true;\n } else if (match(tt.name)) {\n const oldIsType = pushTypeContext(isBeforeToken ? 2 : 1);\n tsParseModuleOrNamespaceDeclaration();\n popTypeContext(oldIsType);\n return true;\n }\n }\n break;\n\n case ContextualKeyword._namespace:\n if (tsCheckLineTerminator(isBeforeToken) && match(tt.name)) {\n const oldIsType = pushTypeContext(isBeforeToken ? 2 : 1);\n tsParseModuleOrNamespaceDeclaration();\n popTypeContext(oldIsType);\n return true;\n }\n break;\n\n case ContextualKeyword._type:\n if (tsCheckLineTerminator(isBeforeToken) && match(tt.name)) {\n const oldIsType = pushTypeContext(isBeforeToken ? 2 : 1);\n tsParseTypeAliasDeclaration();\n popTypeContext(oldIsType);\n return true;\n }\n break;\n\n default:\n break;\n }\n return false;\n}\n\nfunction tsCheckLineTerminator(isBeforeToken) {\n if (isBeforeToken) {\n // Babel checks hasFollowingLineBreak here and returns false, but this\n // doesn't actually come up, e.g. `export interface` can never be on its own\n // line in valid code.\n next();\n return true;\n } else {\n return !isLineTerminator();\n }\n}\n\n// Returns true if there was a generic async arrow function.\nfunction tsTryParseGenericAsyncArrowFunction() {\n const snapshot = state.snapshot();\n\n tsParseTypeParameters();\n parseFunctionParams();\n tsTryParseTypeOrTypePredicateAnnotation();\n expect(tt.arrow);\n\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n\n parseFunctionBody(true);\n return true;\n}\n\n/**\n * If necessary, hack the tokenizer state so that this bitshift was actually a\n * less-than token, then keep parsing. This should only be used in situations\n * where we restore from snapshot on error (which reverts this change) or\n * where bitshift would be illegal anyway (e.g. in a class \"extends\" clause).\n *\n * This hack is useful to handle situations like foo<<T>() => void>() where\n * there can legitimately be two open-angle-brackets in a row in TS.\n */\nfunction tsParseTypeArgumentsWithPossibleBitshift() {\n if (state.type === tt.bitShiftL) {\n state.pos -= 1;\n finishToken(tt.lessThan);\n }\n tsParseTypeArguments();\n}\n\nfunction tsParseTypeArguments() {\n const oldIsType = pushTypeContext(0);\n expect(tt.lessThan);\n while (!match(tt.greaterThan) && !state.error) {\n tsParseType();\n eat(tt.comma);\n }\n if (!oldIsType) {\n // If the type arguments are present in an expression context, e.g.\n // f<number>(), then the > sign should be tokenized as a non-type token.\n // In particular, f(a < b, c >= d) should parse the >= as a single token,\n // resulting in a syntax error and fallback to the non-type-args\n // interpretation. In the success case, even though the > is tokenized as a\n // non-type token, it still must be marked as a type token so that it is\n // erased.\n popTypeContext(oldIsType);\n rescan_gt();\n expect(tt.greaterThan);\n state.tokens[state.tokens.length - 1].isType = true;\n } else {\n expect(tt.greaterThan);\n popTypeContext(oldIsType);\n }\n}\n\nexport function tsIsDeclarationStart() {\n if (match(tt.name)) {\n switch (state.contextualKeyword) {\n case ContextualKeyword._abstract:\n case ContextualKeyword._declare:\n case ContextualKeyword._enum:\n case ContextualKeyword._interface:\n case ContextualKeyword._module:\n case ContextualKeyword._namespace:\n case ContextualKeyword._type:\n return true;\n default:\n break;\n }\n }\n\n return false;\n}\n\n// ======================================================\n// OVERRIDES\n// ======================================================\n\nexport function tsParseFunctionBodyAndFinish(functionStart, funcContextId) {\n // For arrow functions, `parseArrow` handles the return type itself.\n if (match(tt.colon)) {\n tsParseTypeOrTypePredicateAnnotation(tt.colon);\n }\n\n // The original code checked the node type to make sure this function type allows a missing\n // body, but we skip that to avoid sending around the node type. We instead just use the\n // allowExpressionBody boolean to make sure it's not an arrow function.\n if (!match(tt.braceL) && isLineTerminator()) {\n // Retroactively mark the function declaration as a type.\n let i = state.tokens.length - 1;\n while (\n i >= 0 &&\n (state.tokens[i].start >= functionStart ||\n state.tokens[i].type === tt._default ||\n state.tokens[i].type === tt._export)\n ) {\n state.tokens[i].isType = true;\n i--;\n }\n return;\n }\n\n parseFunctionBody(false, funcContextId);\n}\n\nexport function tsParseSubscript(\n startTokenIndex,\n noCalls,\n stopState,\n) {\n if (!hasPrecedingLineBreak() && eat(tt.bang)) {\n state.tokens[state.tokens.length - 1].type = tt.nonNullAssertion;\n return;\n }\n\n if (match(tt.lessThan) || match(tt.bitShiftL)) {\n // There are number of things we are going to \"maybe\" parse, like type arguments on\n // tagged template expressions. If any of them fail, walk it back and continue.\n const snapshot = state.snapshot();\n\n if (!noCalls && atPossibleAsync()) {\n // Almost certainly this is a generic async function `async <T>() => ...\n // But it might be a call with a type argument `async<T>();`\n const asyncArrowFn = tsTryParseGenericAsyncArrowFunction();\n if (asyncArrowFn) {\n return;\n }\n }\n tsParseTypeArgumentsWithPossibleBitshift();\n if (!noCalls && eat(tt.parenL)) {\n // With f<T>(), the subscriptStartIndex marker is on the ( token.\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n parseCallExpressionArguments();\n } else if (match(tt.backQuote)) {\n // Tagged template with a type argument.\n parseTemplate();\n } else if (\n // The remaining possible case is an instantiation expression, e.g.\n // Array<number> . Check for a few cases that would disqualify it and\n // cause us to bail out.\n // a<b>>c is not (a<b>)>c, but a<(b>>c)\n state.type === tt.greaterThan ||\n // a<b>c is (a<b)>c\n (state.type !== tt.parenL &&\n Boolean(state.type & TokenType.IS_EXPRESSION_START) &&\n !hasPrecedingLineBreak())\n ) {\n // Bail out. We have something like a<b>c, which is not an expression with\n // type arguments but an (a < b) > c comparison.\n unexpected();\n }\n\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n } else {\n return;\n }\n } else if (!noCalls && match(tt.questionDot) && lookaheadType() === tt.lessThan) {\n // If we see f?.<, then this must be an optional call with a type argument.\n next();\n state.tokens[startTokenIndex].isOptionalChainStart = true;\n // With f?.<T>(), the subscriptStartIndex marker is on the ?. token.\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n\n tsParseTypeArguments();\n expect(tt.parenL);\n parseCallExpressionArguments();\n }\n baseParseSubscript(startTokenIndex, noCalls, stopState);\n}\n\nexport function tsTryParseExport() {\n if (eat(tt._import)) {\n // One of these cases:\n // export import A = B;\n // export import type A = require(\"A\");\n if (isContextual(ContextualKeyword._type) && lookaheadType() !== tt.eq) {\n // Eat a `type` token, unless it's actually an identifier name.\n expectContextual(ContextualKeyword._type);\n }\n tsParseImportEqualsDeclaration();\n return true;\n } else if (eat(tt.eq)) {\n // `export = x;`\n parseExpression();\n semicolon();\n return true;\n } else if (eatContextual(ContextualKeyword._as)) {\n // `export as namespace A;`\n // See `parseNamespaceExportDeclaration` in TypeScript's own parser\n expectContextual(ContextualKeyword._namespace);\n parseIdentifier();\n semicolon();\n return true;\n } else {\n if (isContextual(ContextualKeyword._type)) {\n const nextType = lookaheadType();\n // export type {foo} from 'a';\n // export type * from 'a';'\n // export type * as ns from 'a';'\n if (nextType === tt.braceL || nextType === tt.star) {\n next();\n }\n }\n return false;\n }\n}\n\n/**\n * Parse a TS import specifier, which may be prefixed with \"type\" and may be of\n * the form `foo as bar`.\n *\n * The number of identifier-like tokens we see happens to be enough to uniquely\n * identify the form, so simply count the number of identifiers rather than\n * matching the words `type` or `as`. This is particularly important because\n * `type` and `as` could each actually be plain identifiers rather than\n * keywords.\n */\nexport function tsParseImportSpecifier() {\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // import {foo}\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportDeclaration;\n return;\n }\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // import {type foo}\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportDeclaration;\n state.tokens[state.tokens.length - 2].isType = true;\n state.tokens[state.tokens.length - 1].isType = true;\n return;\n }\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // import {foo as bar}\n state.tokens[state.tokens.length - 3].identifierRole = IdentifierRole.ImportAccess;\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportDeclaration;\n return;\n }\n parseIdentifier();\n // import {type foo as bar}\n state.tokens[state.tokens.length - 3].identifierRole = IdentifierRole.ImportAccess;\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportDeclaration;\n state.tokens[state.tokens.length - 4].isType = true;\n state.tokens[state.tokens.length - 3].isType = true;\n state.tokens[state.tokens.length - 2].isType = true;\n state.tokens[state.tokens.length - 1].isType = true;\n}\n\n/**\n * Just like named import specifiers, export specifiers can have from 1 to 4\n * tokens, inclusive, and the number of tokens determines the role of each token.\n */\nexport function tsParseExportSpecifier() {\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // export {foo}\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ExportAccess;\n return;\n }\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // export {type foo}\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ExportAccess;\n state.tokens[state.tokens.length - 2].isType = true;\n state.tokens[state.tokens.length - 1].isType = true;\n return;\n }\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // export {foo as bar}\n state.tokens[state.tokens.length - 3].identifierRole = IdentifierRole.ExportAccess;\n return;\n }\n parseIdentifier();\n // export {type foo as bar}\n state.tokens[state.tokens.length - 3].identifierRole = IdentifierRole.ExportAccess;\n state.tokens[state.tokens.length - 4].isType = true;\n state.tokens[state.tokens.length - 3].isType = true;\n state.tokens[state.tokens.length - 2].isType = true;\n state.tokens[state.tokens.length - 1].isType = true;\n}\n\nexport function tsTryParseExportDefaultExpression() {\n if (isContextual(ContextualKeyword._abstract) && lookaheadType() === tt._class) {\n state.type = tt._abstract;\n next(); // Skip \"abstract\"\n parseClass(true, true);\n return true;\n }\n if (isContextual(ContextualKeyword._interface)) {\n // Make sure \"export default\" are considered type tokens so the whole thing is removed.\n const oldIsType = pushTypeContext(2);\n tsParseDeclaration(ContextualKeyword._interface, true);\n popTypeContext(oldIsType);\n return true;\n }\n return false;\n}\n\nexport function tsTryParseStatementContent() {\n if (state.type === tt._const) {\n const ahead = lookaheadTypeAndKeyword();\n if (ahead.type === tt.name && ahead.contextualKeyword === ContextualKeyword._enum) {\n expect(tt._const);\n expectContextual(ContextualKeyword._enum);\n state.tokens[state.tokens.length - 1].type = tt._enum;\n tsParseEnumDeclaration();\n return true;\n }\n }\n return false;\n}\n\nexport function tsTryParseClassMemberWithIsStatic(isStatic) {\n const memberStartIndexAfterStatic = state.tokens.length;\n tsParseModifiers([\n ContextualKeyword._abstract,\n ContextualKeyword._readonly,\n ContextualKeyword._declare,\n ContextualKeyword._static,\n ContextualKeyword._override,\n ]);\n\n const modifiersEndIndex = state.tokens.length;\n const found = tsTryParseIndexSignature();\n if (found) {\n // Index signatures are type declarations, so set the modifier tokens as\n // type tokens. Most tokens could be assumed to be type tokens, but `static`\n // is ambiguous unless we set it explicitly here.\n const memberStartIndex = isStatic\n ? memberStartIndexAfterStatic - 1\n : memberStartIndexAfterStatic;\n for (let i = memberStartIndex; i < modifiersEndIndex; i++) {\n state.tokens[i].isType = true;\n }\n return true;\n }\n return false;\n}\n\n// Note: The reason we do this in `parseIdentifierStatement` and not `parseStatement`\n// is that e.g. `type()` is valid JS, so we must try parsing that first.\n// If it's really a type, we will parse `type` as the statement, and can correct it here\n// by parsing the rest.\nexport function tsParseIdentifierStatement(contextualKeyword) {\n const matched = tsParseExpressionStatement(contextualKeyword);\n if (!matched) {\n semicolon();\n }\n}\n\nexport function tsParseExportDeclaration() {\n // \"export declare\" is equivalent to just \"export\".\n const isDeclare = eatContextual(ContextualKeyword._declare);\n if (isDeclare) {\n state.tokens[state.tokens.length - 1].type = tt._declare;\n }\n\n let matchedDeclaration = false;\n if (match(tt.name)) {\n if (isDeclare) {\n const oldIsType = pushTypeContext(2);\n matchedDeclaration = tsTryParseExportDeclaration();\n popTypeContext(oldIsType);\n } else {\n matchedDeclaration = tsTryParseExportDeclaration();\n }\n }\n if (!matchedDeclaration) {\n if (isDeclare) {\n const oldIsType = pushTypeContext(2);\n parseStatement(true);\n popTypeContext(oldIsType);\n } else {\n parseStatement(true);\n }\n }\n}\n\nexport function tsAfterParseClassSuper(hasSuper) {\n if (hasSuper && (match(tt.lessThan) || match(tt.bitShiftL))) {\n tsParseTypeArgumentsWithPossibleBitshift();\n }\n if (eatContextual(ContextualKeyword._implements)) {\n state.tokens[state.tokens.length - 1].type = tt._implements;\n const oldIsType = pushTypeContext(1);\n tsParseHeritageClause();\n popTypeContext(oldIsType);\n }\n}\n\nexport function tsStartParseObjPropValue() {\n tsTryParseTypeParameters();\n}\n\nexport function tsStartParseFunctionParams() {\n tsTryParseTypeParameters();\n}\n\n// `let x: number;`\nexport function tsAfterParseVarHead() {\n const oldIsType = pushTypeContext(0);\n if (!hasPrecedingLineBreak()) {\n eat(tt.bang);\n }\n tsTryParseTypeAnnotation();\n popTypeContext(oldIsType);\n}\n\n// parse the return type of an async arrow function - let foo = (async (): number => {});\nexport function tsStartParseAsyncArrowFromCallExpression() {\n if (match(tt.colon)) {\n tsParseTypeAnnotation();\n }\n}\n\n// Returns true if the expression was an arrow function.\nexport function tsParseMaybeAssign(noIn, isWithinParens) {\n // Note: When the JSX plugin is on, type assertions (`<T> x`) aren't valid syntax.\n if (isJSXEnabled) {\n return tsParseMaybeAssignWithJSX(noIn, isWithinParens);\n } else {\n return tsParseMaybeAssignWithoutJSX(noIn, isWithinParens);\n }\n}\n\nexport function tsParseMaybeAssignWithJSX(noIn, isWithinParens) {\n if (!match(tt.lessThan)) {\n return baseParseMaybeAssign(noIn, isWithinParens);\n }\n\n // Prefer to parse JSX if possible. But may be an arrow fn.\n const snapshot = state.snapshot();\n let wasArrow = baseParseMaybeAssign(noIn, isWithinParens);\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n } else {\n return wasArrow;\n }\n\n // Otherwise, try as type-parameterized arrow function.\n state.type = tt.typeParameterStart;\n // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n tsParseTypeParameters();\n wasArrow = baseParseMaybeAssign(noIn, isWithinParens);\n if (!wasArrow) {\n unexpected();\n }\n\n return wasArrow;\n}\n\nexport function tsParseMaybeAssignWithoutJSX(noIn, isWithinParens) {\n if (!match(tt.lessThan)) {\n return baseParseMaybeAssign(noIn, isWithinParens);\n }\n\n const snapshot = state.snapshot();\n // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n tsParseTypeParameters();\n const wasArrow = baseParseMaybeAssign(noIn, isWithinParens);\n if (!wasArrow) {\n unexpected();\n }\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n } else {\n return wasArrow;\n }\n\n // Try parsing a type cast instead of an arrow function.\n // This will start with a type assertion (via parseMaybeUnary).\n // But don't directly call `tsParseTypeAssertion` because we want to handle any binary after it.\n return baseParseMaybeAssign(noIn, isWithinParens);\n}\n\nexport function tsParseArrow() {\n if (match(tt.colon)) {\n // This is different from how the TS parser does it.\n // TS uses lookahead. Babylon parses it as a parenthesized expression and converts.\n const snapshot = state.snapshot();\n\n tsParseTypeOrTypePredicateAnnotation(tt.colon);\n if (canInsertSemicolon()) unexpected();\n if (!match(tt.arrow)) unexpected();\n\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n }\n }\n return eat(tt.arrow);\n}\n\n// Allow type annotations inside of a parameter list.\nexport function tsParseAssignableListItemTypes() {\n const oldIsType = pushTypeContext(0);\n eat(tt.question);\n tsTryParseTypeAnnotation();\n popTypeContext(oldIsType);\n}\n\nexport function tsParseMaybeDecoratorArguments() {\n if (match(tt.lessThan) || match(tt.bitShiftL)) {\n tsParseTypeArgumentsWithPossibleBitshift();\n }\n baseParseMaybeDecoratorArguments();\n}\n", "import {\n eat,\n finishToken,\n getTokenFromCode,\n IdentifierRole,\n JSXRole,\n match,\n next,\n skipSpace,\n Token,\n} from \"../../tokenizer/index\";\nimport {TokenType as tt} from \"../../tokenizer/types\";\nimport {input, isTypeScriptEnabled, state} from \"../../traverser/base\";\nimport {parseExpression, parseMaybeAssign} from \"../../traverser/expression\";\nimport {expect, unexpected} from \"../../traverser/util\";\nimport {charCodes} from \"../../util/charcodes\";\nimport {IS_IDENTIFIER_CHAR, IS_IDENTIFIER_START} from \"../../util/identifier\";\nimport {tsTryParseJSXTypeArgument} from \"../typescript\";\n\n/**\n * Read token with JSX contents.\n *\n * In addition to detecting jsxTagStart and also regular tokens that might be\n * part of an expression, this code detects the start and end of text ranges\n * within JSX children. In order to properly count the number of children, we\n * distinguish jsxText from jsxEmptyText, which is a text range that simplifies\n * to the empty string after JSX whitespace trimming.\n *\n * It turns out that a JSX text range will simplify to the empty string if and\n * only if both of these conditions hold:\n * - The range consists entirely of whitespace characters (only counting space,\n * tab, \\r, and \\n).\n * - The range has at least one newline.\n * This can be proven by analyzing any implementation of whitespace trimming,\n * e.g. formatJSXTextLiteral in Sucrase or cleanJSXElementLiteralChild in Babel.\n */\nfunction jsxReadToken() {\n let sawNewline = false;\n let sawNonWhitespace = false;\n while (true) {\n if (state.pos >= input.length) {\n unexpected(\"Unterminated JSX contents\");\n return;\n }\n\n const ch = input.charCodeAt(state.pos);\n if (ch === charCodes.lessThan || ch === charCodes.leftCurlyBrace) {\n if (state.pos === state.start) {\n if (ch === charCodes.lessThan) {\n state.pos++;\n finishToken(tt.jsxTagStart);\n return;\n }\n getTokenFromCode(ch);\n return;\n }\n if (sawNewline && !sawNonWhitespace) {\n finishToken(tt.jsxEmptyText);\n } else {\n finishToken(tt.jsxText);\n }\n return;\n }\n\n // This is part of JSX text.\n if (ch === charCodes.lineFeed) {\n sawNewline = true;\n } else if (ch !== charCodes.space && ch !== charCodes.carriageReturn && ch !== charCodes.tab) {\n sawNonWhitespace = true;\n }\n state.pos++;\n }\n}\n\nfunction jsxReadString(quote) {\n state.pos++;\n for (;;) {\n if (state.pos >= input.length) {\n unexpected(\"Unterminated string constant\");\n return;\n }\n\n const ch = input.charCodeAt(state.pos);\n if (ch === quote) {\n state.pos++;\n break;\n }\n state.pos++;\n }\n finishToken(tt.string);\n}\n\n// Read a JSX identifier (valid tag or attribute name).\n//\n// Optimized version since JSX identifiers can't contain\n// escape characters and so can be read as single slice.\n// Also assumes that first character was already checked\n// by isIdentifierStart in readToken.\n\nfunction jsxReadWord() {\n let ch;\n do {\n if (state.pos > input.length) {\n unexpected(\"Unexpectedly reached the end of input.\");\n return;\n }\n ch = input.charCodeAt(++state.pos);\n } while (IS_IDENTIFIER_CHAR[ch] || ch === charCodes.dash);\n finishToken(tt.jsxName);\n}\n\n// Parse next token as JSX identifier\nfunction jsxParseIdentifier() {\n nextJSXTagToken();\n}\n\n// Parse namespaced identifier.\nfunction jsxParseNamespacedName(identifierRole) {\n jsxParseIdentifier();\n if (!eat(tt.colon)) {\n // Plain identifier, so this is an access.\n state.tokens[state.tokens.length - 1].identifierRole = identifierRole;\n return;\n }\n // Process the second half of the namespaced name.\n jsxParseIdentifier();\n}\n\n// Parses element name in any form - namespaced, member\n// or single identifier.\nfunction jsxParseElementName() {\n const firstTokenIndex = state.tokens.length;\n jsxParseNamespacedName(IdentifierRole.Access);\n let hadDot = false;\n while (match(tt.dot)) {\n hadDot = true;\n nextJSXTagToken();\n jsxParseIdentifier();\n }\n // For tags like <div> with a lowercase letter and no dots, the name is\n // actually *not* an identifier access, since it's referring to a built-in\n // tag name. Remove the identifier role in this case so that it's not\n // accidentally transformed by the imports transform when preserving JSX.\n if (!hadDot) {\n const firstToken = state.tokens[firstTokenIndex];\n const firstChar = input.charCodeAt(firstToken.start);\n if (firstChar >= charCodes.lowercaseA && firstChar <= charCodes.lowercaseZ) {\n firstToken.identifierRole = null;\n }\n }\n}\n\n// Parses any type of JSX attribute value.\nfunction jsxParseAttributeValue() {\n switch (state.type) {\n case tt.braceL:\n next();\n parseExpression();\n nextJSXTagToken();\n return;\n\n case tt.jsxTagStart:\n jsxParseElement();\n nextJSXTagToken();\n return;\n\n case tt.string:\n nextJSXTagToken();\n return;\n\n default:\n unexpected(\"JSX value should be either an expression or a quoted JSX text\");\n }\n}\n\n// Parse JSX spread child, after already processing the {\n// Does not parse the closing }\nfunction jsxParseSpreadChild() {\n expect(tt.ellipsis);\n parseExpression();\n}\n\n// Parses JSX opening tag starting after \"<\".\n// Returns true if the tag was self-closing.\n// Does not parse the last token.\nfunction jsxParseOpeningElement(initialTokenIndex) {\n if (match(tt.jsxTagEnd)) {\n // This is an open-fragment.\n return false;\n }\n jsxParseElementName();\n if (isTypeScriptEnabled) {\n tsTryParseJSXTypeArgument();\n }\n let hasSeenPropSpread = false;\n while (!match(tt.slash) && !match(tt.jsxTagEnd) && !state.error) {\n if (eat(tt.braceL)) {\n hasSeenPropSpread = true;\n expect(tt.ellipsis);\n parseMaybeAssign();\n // }\n nextJSXTagToken();\n continue;\n }\n if (\n hasSeenPropSpread &&\n state.end - state.start === 3 &&\n input.charCodeAt(state.start) === charCodes.lowercaseK &&\n input.charCodeAt(state.start + 1) === charCodes.lowercaseE &&\n input.charCodeAt(state.start + 2) === charCodes.lowercaseY\n ) {\n state.tokens[initialTokenIndex].jsxRole = JSXRole.KeyAfterPropSpread;\n }\n jsxParseNamespacedName(IdentifierRole.ObjectKey);\n if (match(tt.eq)) {\n nextJSXTagToken();\n jsxParseAttributeValue();\n }\n }\n const isSelfClosing = match(tt.slash);\n if (isSelfClosing) {\n // /\n nextJSXTagToken();\n }\n return isSelfClosing;\n}\n\n// Parses JSX closing tag starting after \"</\".\n// Does not parse the last token.\nfunction jsxParseClosingElement() {\n if (match(tt.jsxTagEnd)) {\n // Fragment syntax, so we immediately have a tag end.\n return;\n }\n jsxParseElementName();\n}\n\n// Parses entire JSX element, including its opening tag\n// (starting after \"<\"), attributes, contents and closing tag.\n// Does not parse the last token.\nfunction jsxParseElementAt() {\n const initialTokenIndex = state.tokens.length - 1;\n state.tokens[initialTokenIndex].jsxRole = JSXRole.NoChildren;\n let numExplicitChildren = 0;\n const isSelfClosing = jsxParseOpeningElement(initialTokenIndex);\n if (!isSelfClosing) {\n nextJSXExprToken();\n while (true) {\n switch (state.type) {\n case tt.jsxTagStart:\n nextJSXTagToken();\n if (match(tt.slash)) {\n nextJSXTagToken();\n jsxParseClosingElement();\n // Key after prop spread takes precedence over number of children,\n // since it means we switch to createElement, which doesn't care\n // about number of children.\n if (state.tokens[initialTokenIndex].jsxRole !== JSXRole.KeyAfterPropSpread) {\n if (numExplicitChildren === 1) {\n state.tokens[initialTokenIndex].jsxRole = JSXRole.OneChild;\n } else if (numExplicitChildren > 1) {\n state.tokens[initialTokenIndex].jsxRole = JSXRole.StaticChildren;\n }\n }\n return;\n }\n numExplicitChildren++;\n jsxParseElementAt();\n nextJSXExprToken();\n break;\n\n case tt.jsxText:\n numExplicitChildren++;\n nextJSXExprToken();\n break;\n\n case tt.jsxEmptyText:\n nextJSXExprToken();\n break;\n\n case tt.braceL:\n next();\n if (match(tt.ellipsis)) {\n jsxParseSpreadChild();\n nextJSXExprToken();\n // Spread children are a mechanism to explicitly mark children as\n // static, so count it as 2 children to satisfy the \"more than one\n // child\" condition.\n numExplicitChildren += 2;\n } else {\n // If we see {}, this is an empty pseudo-expression that doesn't\n // count as a child.\n if (!match(tt.braceR)) {\n numExplicitChildren++;\n parseExpression();\n }\n nextJSXExprToken();\n }\n\n break;\n\n // istanbul ignore next - should never happen\n default:\n unexpected();\n return;\n }\n }\n }\n}\n\n// Parses entire JSX element from current position.\n// Does not parse the last token.\nexport function jsxParseElement() {\n nextJSXTagToken();\n jsxParseElementAt();\n}\n\n// ==================================\n// Overrides\n// ==================================\n\nexport function nextJSXTagToken() {\n state.tokens.push(new Token());\n skipSpace();\n state.start = state.pos;\n const code = input.charCodeAt(state.pos);\n\n if (IS_IDENTIFIER_START[code]) {\n jsxReadWord();\n } else if (code === charCodes.quotationMark || code === charCodes.apostrophe) {\n jsxReadString(code);\n } else {\n // The following tokens are just one character each.\n ++state.pos;\n switch (code) {\n case charCodes.greaterThan:\n finishToken(tt.jsxTagEnd);\n break;\n case charCodes.lessThan:\n finishToken(tt.jsxTagStart);\n break;\n case charCodes.slash:\n finishToken(tt.slash);\n break;\n case charCodes.equalsTo:\n finishToken(tt.eq);\n break;\n case charCodes.leftCurlyBrace:\n finishToken(tt.braceL);\n break;\n case charCodes.dot:\n finishToken(tt.dot);\n break;\n case charCodes.colon:\n finishToken(tt.colon);\n break;\n default:\n unexpected();\n }\n }\n}\n\nfunction nextJSXExprToken() {\n state.tokens.push(new Token());\n state.start = state.pos;\n jsxReadToken();\n}\n", "import {eatTypeToken, lookaheadType, match} from \"../tokenizer/index\";\nimport {TokenType as tt} from \"../tokenizer/types\";\nimport {isFlowEnabled, isTypeScriptEnabled} from \"../traverser/base\";\nimport {baseParseConditional} from \"../traverser/expression\";\nimport {flowParseTypeAnnotation} from \"./flow\";\nimport {tsParseTypeAnnotation} from \"./typescript\";\n\n/**\n * Common parser code for TypeScript and Flow.\n */\n\n// An apparent conditional expression could actually be an optional parameter in an arrow function.\nexport function typedParseConditional(noIn) {\n // If we see ?:, this can't possibly be a valid conditional. typedParseParenItem will be called\n // later to finish off the arrow parameter. We also need to handle bare ? tokens for optional\n // parameters without type annotations, i.e. ?, and ?) .\n if (match(tt.question)) {\n const nextType = lookaheadType();\n if (nextType === tt.colon || nextType === tt.comma || nextType === tt.parenR) {\n return;\n }\n }\n baseParseConditional(noIn);\n}\n\n// Note: These \"type casts\" are *not* valid TS expressions.\n// But we parse them here and change them when completing the arrow function.\nexport function typedParseParenItem() {\n eatTypeToken(tt.question);\n if (match(tt.colon)) {\n if (isTypeScriptEnabled) {\n tsParseTypeAnnotation();\n } else if (isFlowEnabled) {\n flowParseTypeAnnotation();\n }\n }\n}\n", "/* eslint max-len: 0 */\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts \u2014 that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport {\n flowParseArrow,\n flowParseFunctionBodyAndFinish,\n flowParseMaybeAssign,\n flowParseSubscript,\n flowParseSubscripts,\n flowParseVariance,\n flowStartParseAsyncArrowFromCallExpression,\n flowStartParseNewArguments,\n flowStartParseObjPropValue,\n} from \"../plugins/flow\";\nimport {jsxParseElement} from \"../plugins/jsx/index\";\nimport {typedParseConditional, typedParseParenItem} from \"../plugins/types\";\nimport {\n tsParseArrow,\n tsParseFunctionBodyAndFinish,\n tsParseMaybeAssign,\n tsParseSubscript,\n tsParseType,\n tsParseTypeAssertion,\n tsStartParseAsyncArrowFromCallExpression,\n tsStartParseObjPropValue,\n} from \"../plugins/typescript\";\nimport {\n eat,\n IdentifierRole,\n lookaheadCharCode,\n lookaheadType,\n match,\n next,\n nextTemplateToken,\n popTypeContext,\n pushTypeContext,\n rescan_gt,\n retokenizeSlashAsRegex,\n} from \"../tokenizer/index\";\nimport {ContextualKeyword} from \"../tokenizer/keywords\";\nimport {Scope} from \"../tokenizer/state\";\nimport {TokenType, TokenType as tt} from \"../tokenizer/types\";\nimport {charCodes} from \"../util/charcodes\";\nimport {IS_IDENTIFIER_START} from \"../util/identifier\";\nimport {getNextContextId, isFlowEnabled, isJSXEnabled, isTypeScriptEnabled, state} from \"./base\";\nimport {\n markPriorBindingIdentifier,\n parseBindingIdentifier,\n parseMaybeDefault,\n parseRest,\n parseSpread,\n} from \"./lval\";\nimport {\n parseBlock,\n parseBlockBody,\n parseClass,\n parseDecorators,\n parseFunction,\n parseFunctionParams,\n} from \"./statement\";\nimport {\n canInsertSemicolon,\n eatContextual,\n expect,\n expectContextual,\n hasFollowingLineBreak,\n hasPrecedingLineBreak,\n isContextual,\n unexpected,\n} from \"./util\";\n\nexport class StopState {\n \n constructor(stop) {\n this.stop = stop;\n }\n}\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function (s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\nexport function parseExpression(noIn = false) {\n parseMaybeAssign(noIn);\n if (match(tt.comma)) {\n while (eat(tt.comma)) {\n parseMaybeAssign(noIn);\n }\n }\n}\n\n/**\n * noIn is used when parsing a for loop so that we don't interpret a following \"in\" as the binary\n * operatior.\n * isWithinParens is used to indicate that we're parsing something that might be a comma expression\n * or might be an arrow function or might be a Flow type assertion (which requires explicit parens).\n * In these cases, we should allow : and ?: after the initial \"left\" part.\n */\nexport function parseMaybeAssign(noIn = false, isWithinParens = false) {\n if (isTypeScriptEnabled) {\n return tsParseMaybeAssign(noIn, isWithinParens);\n } else if (isFlowEnabled) {\n return flowParseMaybeAssign(noIn, isWithinParens);\n } else {\n return baseParseMaybeAssign(noIn, isWithinParens);\n }\n}\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n// Returns true if the expression was an arrow function.\nexport function baseParseMaybeAssign(noIn, isWithinParens) {\n if (match(tt._yield)) {\n parseYield();\n return false;\n }\n\n if (match(tt.parenL) || match(tt.name) || match(tt._yield)) {\n state.potentialArrowAt = state.start;\n }\n\n const wasArrow = parseMaybeConditional(noIn);\n if (isWithinParens) {\n parseParenItem();\n }\n if (state.type & TokenType.IS_ASSIGN) {\n next();\n parseMaybeAssign(noIn);\n return false;\n }\n return wasArrow;\n}\n\n// Parse a ternary conditional (`?:`) operator.\n// Returns true if the expression was an arrow function.\nfunction parseMaybeConditional(noIn) {\n const wasArrow = parseExprOps(noIn);\n if (wasArrow) {\n return true;\n }\n parseConditional(noIn);\n return false;\n}\n\nfunction parseConditional(noIn) {\n if (isTypeScriptEnabled || isFlowEnabled) {\n typedParseConditional(noIn);\n } else {\n baseParseConditional(noIn);\n }\n}\n\nexport function baseParseConditional(noIn) {\n if (eat(tt.question)) {\n parseMaybeAssign();\n expect(tt.colon);\n parseMaybeAssign(noIn);\n }\n}\n\n// Start the precedence parser.\n// Returns true if this was an arrow function\nfunction parseExprOps(noIn) {\n const startTokenIndex = state.tokens.length;\n const wasArrow = parseMaybeUnary();\n if (wasArrow) {\n return true;\n }\n parseExprOp(startTokenIndex, -1, noIn);\n return false;\n}\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\nfunction parseExprOp(startTokenIndex, minPrec, noIn) {\n if (\n isTypeScriptEnabled &&\n (tt._in & TokenType.PRECEDENCE_MASK) > minPrec &&\n !hasPrecedingLineBreak() &&\n (eatContextual(ContextualKeyword._as) || eatContextual(ContextualKeyword._satisfies))\n ) {\n const oldIsType = pushTypeContext(1);\n tsParseType();\n popTypeContext(oldIsType);\n rescan_gt();\n parseExprOp(startTokenIndex, minPrec, noIn);\n return;\n }\n\n const prec = state.type & TokenType.PRECEDENCE_MASK;\n if (prec > 0 && (!noIn || !match(tt._in))) {\n if (prec > minPrec) {\n const op = state.type;\n next();\n if (op === tt.nullishCoalescing) {\n state.tokens[state.tokens.length - 1].nullishStartIndex = startTokenIndex;\n }\n\n const rhsStartTokenIndex = state.tokens.length;\n parseMaybeUnary();\n // Extend the right operand of this operator if possible.\n parseExprOp(rhsStartTokenIndex, op & TokenType.IS_RIGHT_ASSOCIATIVE ? prec - 1 : prec, noIn);\n if (op === tt.nullishCoalescing) {\n state.tokens[startTokenIndex].numNullishCoalesceStarts++;\n state.tokens[state.tokens.length - 1].numNullishCoalesceEnds++;\n }\n // Continue with any future operator holding this expression as the left operand.\n parseExprOp(startTokenIndex, minPrec, noIn);\n }\n }\n}\n\n// Parse unary operators, both prefix and postfix.\n// Returns true if this was an arrow function.\nexport function parseMaybeUnary() {\n if (isTypeScriptEnabled && !isJSXEnabled && eat(tt.lessThan)) {\n tsParseTypeAssertion();\n return false;\n }\n if (\n isContextual(ContextualKeyword._module) &&\n lookaheadCharCode() === charCodes.leftCurlyBrace &&\n !hasFollowingLineBreak()\n ) {\n parseModuleExpression();\n return false;\n }\n if (state.type & TokenType.IS_PREFIX) {\n next();\n parseMaybeUnary();\n return false;\n }\n\n const wasArrow = parseExprSubscripts();\n if (wasArrow) {\n return true;\n }\n while (state.type & TokenType.IS_POSTFIX && !canInsertSemicolon()) {\n // The tokenizer calls everything a preincrement, so make it a postincrement when\n // we see it in that context.\n if (state.type === tt.preIncDec) {\n state.type = tt.postIncDec;\n }\n next();\n }\n return false;\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n// Returns true if this was an arrow function.\nexport function parseExprSubscripts() {\n const startTokenIndex = state.tokens.length;\n const wasArrow = parseExprAtom();\n if (wasArrow) {\n return true;\n }\n parseSubscripts(startTokenIndex);\n // If there was any optional chain operation, the start token would be marked\n // as such, so also mark the end now.\n if (state.tokens.length > startTokenIndex && state.tokens[startTokenIndex].isOptionalChainStart) {\n state.tokens[state.tokens.length - 1].isOptionalChainEnd = true;\n }\n return false;\n}\n\nfunction parseSubscripts(startTokenIndex, noCalls = false) {\n if (isFlowEnabled) {\n flowParseSubscripts(startTokenIndex, noCalls);\n } else {\n baseParseSubscripts(startTokenIndex, noCalls);\n }\n}\n\nexport function baseParseSubscripts(startTokenIndex, noCalls = false) {\n const stopState = new StopState(false);\n do {\n parseSubscript(startTokenIndex, noCalls, stopState);\n } while (!stopState.stop && !state.error);\n}\n\nfunction parseSubscript(startTokenIndex, noCalls, stopState) {\n if (isTypeScriptEnabled) {\n tsParseSubscript(startTokenIndex, noCalls, stopState);\n } else if (isFlowEnabled) {\n flowParseSubscript(startTokenIndex, noCalls, stopState);\n } else {\n baseParseSubscript(startTokenIndex, noCalls, stopState);\n }\n}\n\n/** Set 'state.stop = true' to indicate that we should stop parsing subscripts. */\nexport function baseParseSubscript(\n startTokenIndex,\n noCalls,\n stopState,\n) {\n if (!noCalls && eat(tt.doubleColon)) {\n parseNoCallExpr();\n stopState.stop = true;\n // Propagate startTokenIndex so that `a::b?.()` will keep `a` as the first token. We may want\n // to revisit this in the future when fully supporting bind syntax.\n parseSubscripts(startTokenIndex, noCalls);\n } else if (match(tt.questionDot)) {\n state.tokens[startTokenIndex].isOptionalChainStart = true;\n if (noCalls && lookaheadType() === tt.parenL) {\n stopState.stop = true;\n return;\n }\n next();\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n\n if (eat(tt.bracketL)) {\n parseExpression();\n expect(tt.bracketR);\n } else if (eat(tt.parenL)) {\n parseCallExpressionArguments();\n } else {\n parseMaybePrivateName();\n }\n } else if (eat(tt.dot)) {\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n parseMaybePrivateName();\n } else if (eat(tt.bracketL)) {\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n parseExpression();\n expect(tt.bracketR);\n } else if (!noCalls && match(tt.parenL)) {\n if (atPossibleAsync()) {\n // We see \"async\", but it's possible it's a usage of the name \"async\". Parse as if it's a\n // function call, and if we see an arrow later, backtrack and re-parse as a parameter list.\n const snapshot = state.snapshot();\n const asyncStartTokenIndex = state.tokens.length;\n next();\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n\n const callContextId = getNextContextId();\n\n state.tokens[state.tokens.length - 1].contextId = callContextId;\n parseCallExpressionArguments();\n state.tokens[state.tokens.length - 1].contextId = callContextId;\n\n if (shouldParseAsyncArrow()) {\n // We hit an arrow, so backtrack and start again parsing function parameters.\n state.restoreFromSnapshot(snapshot);\n stopState.stop = true;\n state.scopeDepth++;\n\n parseFunctionParams();\n parseAsyncArrowFromCallExpression(asyncStartTokenIndex);\n }\n } else {\n next();\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n const callContextId = getNextContextId();\n state.tokens[state.tokens.length - 1].contextId = callContextId;\n parseCallExpressionArguments();\n state.tokens[state.tokens.length - 1].contextId = callContextId;\n }\n } else if (match(tt.backQuote)) {\n // Tagged template expression.\n parseTemplate();\n } else {\n stopState.stop = true;\n }\n}\n\nexport function atPossibleAsync() {\n // This was made less strict than the original version to avoid passing around nodes, but it\n // should be safe to have rare false positives here.\n return (\n state.tokens[state.tokens.length - 1].contextualKeyword === ContextualKeyword._async &&\n !canInsertSemicolon()\n );\n}\n\nexport function parseCallExpressionArguments() {\n let first = true;\n while (!eat(tt.parenR) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n if (eat(tt.parenR)) {\n break;\n }\n }\n\n parseExprListItem(false);\n }\n}\n\nfunction shouldParseAsyncArrow() {\n return match(tt.colon) || match(tt.arrow);\n}\n\nfunction parseAsyncArrowFromCallExpression(startTokenIndex) {\n if (isTypeScriptEnabled) {\n tsStartParseAsyncArrowFromCallExpression();\n } else if (isFlowEnabled) {\n flowStartParseAsyncArrowFromCallExpression();\n }\n expect(tt.arrow);\n parseArrowExpression(startTokenIndex);\n}\n\n// Parse a no-call expression (like argument of `new` or `::` operators).\n\nfunction parseNoCallExpr() {\n const startTokenIndex = state.tokens.length;\n parseExprAtom();\n parseSubscripts(startTokenIndex, true);\n}\n\n// Parse an atomic expression \u2014 either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n// Returns true if the parsed expression was an arrow function.\nexport function parseExprAtom() {\n if (eat(tt.modulo)) {\n // V8 intrinsic expression. Just parse the identifier, and the function invocation is parsed\n // naturally.\n parseIdentifier();\n return false;\n }\n\n if (match(tt.jsxText) || match(tt.jsxEmptyText)) {\n parseLiteral();\n return false;\n } else if (match(tt.lessThan) && isJSXEnabled) {\n state.type = tt.jsxTagStart;\n jsxParseElement();\n next();\n return false;\n }\n\n const canBeArrow = state.potentialArrowAt === state.start;\n switch (state.type) {\n case tt.slash:\n case tt.assign:\n retokenizeSlashAsRegex();\n // Fall through.\n\n case tt._super:\n case tt._this:\n case tt.regexp:\n case tt.num:\n case tt.bigint:\n case tt.decimal:\n case tt.string:\n case tt._null:\n case tt._true:\n case tt._false:\n next();\n return false;\n\n case tt._import:\n next();\n if (match(tt.dot)) {\n // import.meta\n state.tokens[state.tokens.length - 1].type = tt.name;\n next();\n parseIdentifier();\n }\n return false;\n\n case tt.name: {\n const startTokenIndex = state.tokens.length;\n const functionStart = state.start;\n const contextualKeyword = state.contextualKeyword;\n parseIdentifier();\n if (contextualKeyword === ContextualKeyword._await) {\n parseAwait();\n return false;\n } else if (\n contextualKeyword === ContextualKeyword._async &&\n match(tt._function) &&\n !canInsertSemicolon()\n ) {\n next();\n parseFunction(functionStart, false);\n return false;\n } else if (\n canBeArrow &&\n contextualKeyword === ContextualKeyword._async &&\n !canInsertSemicolon() &&\n match(tt.name)\n ) {\n state.scopeDepth++;\n parseBindingIdentifier(false);\n expect(tt.arrow);\n // let foo = async bar => {};\n parseArrowExpression(startTokenIndex);\n return true;\n } else if (match(tt._do) && !canInsertSemicolon()) {\n next();\n parseBlock();\n return false;\n }\n\n if (canBeArrow && !canInsertSemicolon() && match(tt.arrow)) {\n state.scopeDepth++;\n markPriorBindingIdentifier(false);\n expect(tt.arrow);\n parseArrowExpression(startTokenIndex);\n return true;\n }\n\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.Access;\n return false;\n }\n\n case tt._do: {\n next();\n parseBlock();\n return false;\n }\n\n case tt.parenL: {\n const wasArrow = parseParenAndDistinguishExpression(canBeArrow);\n return wasArrow;\n }\n\n case tt.bracketL:\n next();\n parseExprList(tt.bracketR, true);\n return false;\n\n case tt.braceL:\n parseObj(false, false);\n return false;\n\n case tt._function:\n parseFunctionExpression();\n return false;\n\n case tt.at:\n parseDecorators();\n // Fall through.\n\n case tt._class:\n parseClass(false);\n return false;\n\n case tt._new:\n parseNew();\n return false;\n\n case tt.backQuote:\n parseTemplate();\n return false;\n\n case tt.doubleColon: {\n next();\n parseNoCallExpr();\n return false;\n }\n\n case tt.hash: {\n const code = lookaheadCharCode();\n if (IS_IDENTIFIER_START[code] || code === charCodes.backslash) {\n parseMaybePrivateName();\n } else {\n next();\n }\n // Smart pipeline topic reference.\n return false;\n }\n\n default:\n unexpected();\n return false;\n }\n}\n\nfunction parseMaybePrivateName() {\n eat(tt.hash);\n parseIdentifier();\n}\n\nfunction parseFunctionExpression() {\n const functionStart = state.start;\n parseIdentifier();\n if (eat(tt.dot)) {\n // function.sent\n parseIdentifier();\n }\n parseFunction(functionStart, false);\n}\n\nexport function parseLiteral() {\n next();\n}\n\nexport function parseParenExpression() {\n expect(tt.parenL);\n parseExpression();\n expect(tt.parenR);\n}\n\n// Returns true if this was an arrow expression.\nfunction parseParenAndDistinguishExpression(canBeArrow) {\n // Assume this is a normal parenthesized expression, but if we see an arrow, we'll bail and\n // start over as a parameter list.\n const snapshot = state.snapshot();\n\n const startTokenIndex = state.tokens.length;\n expect(tt.parenL);\n\n let first = true;\n\n while (!match(tt.parenR) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n if (match(tt.parenR)) {\n break;\n }\n }\n\n if (match(tt.ellipsis)) {\n parseRest(false /* isBlockScope */);\n parseParenItem();\n break;\n } else {\n parseMaybeAssign(false, true);\n }\n }\n\n expect(tt.parenR);\n\n if (canBeArrow && shouldParseArrow()) {\n const wasArrow = parseArrow();\n if (wasArrow) {\n // It was an arrow function this whole time, so start over and parse it as params so that we\n // get proper token annotations.\n state.restoreFromSnapshot(snapshot);\n state.scopeDepth++;\n // Don't specify a context ID because arrow functions don't need a context ID.\n parseFunctionParams();\n parseArrow();\n parseArrowExpression(startTokenIndex);\n if (state.error) {\n // Nevermind! This must have been something that looks very much like an\n // arrow function but where its \"parameter list\" isn't actually a valid\n // parameter list. Force non-arrow parsing.\n // See https://github.com/alangpierce/sucrase/issues/666 for an example.\n state.restoreFromSnapshot(snapshot);\n parseParenAndDistinguishExpression(false);\n return false;\n }\n return true;\n }\n }\n\n return false;\n}\n\nfunction shouldParseArrow() {\n return match(tt.colon) || !canInsertSemicolon();\n}\n\n// Returns whether there was an arrow token.\nexport function parseArrow() {\n if (isTypeScriptEnabled) {\n return tsParseArrow();\n } else if (isFlowEnabled) {\n return flowParseArrow();\n } else {\n return eat(tt.arrow);\n }\n}\n\nfunction parseParenItem() {\n if (isTypeScriptEnabled || isFlowEnabled) {\n typedParseParenItem();\n }\n}\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call \u2014 at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\nfunction parseNew() {\n expect(tt._new);\n if (eat(tt.dot)) {\n // new.target\n parseIdentifier();\n return;\n }\n parseNewCallee();\n if (isFlowEnabled) {\n flowStartParseNewArguments();\n }\n if (eat(tt.parenL)) {\n parseExprList(tt.parenR);\n }\n}\n\nfunction parseNewCallee() {\n parseNoCallExpr();\n eat(tt.questionDot);\n}\n\nexport function parseTemplate() {\n // Finish `, read quasi\n nextTemplateToken();\n // Finish quasi, read ${\n nextTemplateToken();\n while (!match(tt.backQuote) && !state.error) {\n expect(tt.dollarBraceL);\n parseExpression();\n // Finish }, read quasi\n nextTemplateToken();\n // Finish quasi, read either ${ or `\n nextTemplateToken();\n }\n next();\n}\n\n// Parse an object literal or binding pattern.\nexport function parseObj(isPattern, isBlockScope) {\n // Attach a context ID to the object open and close brace and each object key.\n const contextId = getNextContextId();\n let first = true;\n\n next();\n state.tokens[state.tokens.length - 1].contextId = contextId;\n\n while (!eat(tt.braceR) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n if (eat(tt.braceR)) {\n break;\n }\n }\n\n let isGenerator = false;\n if (match(tt.ellipsis)) {\n const previousIndex = state.tokens.length;\n parseSpread();\n if (isPattern) {\n // Mark role when the only thing being spread over is an identifier.\n if (state.tokens.length === previousIndex + 2) {\n markPriorBindingIdentifier(isBlockScope);\n }\n if (eat(tt.braceR)) {\n break;\n }\n }\n continue;\n }\n\n if (!isPattern) {\n isGenerator = eat(tt.star);\n }\n\n if (!isPattern && isContextual(ContextualKeyword._async)) {\n if (isGenerator) unexpected();\n\n parseIdentifier();\n if (\n match(tt.colon) ||\n match(tt.parenL) ||\n match(tt.braceR) ||\n match(tt.eq) ||\n match(tt.comma)\n ) {\n // This is a key called \"async\" rather than an async function.\n } else {\n if (match(tt.star)) {\n next();\n isGenerator = true;\n }\n parsePropertyName(contextId);\n }\n } else {\n parsePropertyName(contextId);\n }\n\n parseObjPropValue(isPattern, isBlockScope, contextId);\n }\n\n state.tokens[state.tokens.length - 1].contextId = contextId;\n}\n\nfunction isGetterOrSetterMethod(isPattern) {\n // We go off of the next and don't bother checking if the node key is actually \"get\" or \"set\".\n // This lets us avoid generating a node, and should only make the validation worse.\n return (\n !isPattern &&\n (match(tt.string) || // get \"string\"() {}\n match(tt.num) || // get 1() {}\n match(tt.bracketL) || // get [\"string\"]() {}\n match(tt.name) || // get foo() {}\n !!(state.type & TokenType.IS_KEYWORD)) // get debugger() {}\n );\n}\n\n// Returns true if this was a method.\nfunction parseObjectMethod(isPattern, objectContextId) {\n // We don't need to worry about modifiers because object methods can't have optional bodies, so\n // the start will never be used.\n const functionStart = state.start;\n if (match(tt.parenL)) {\n if (isPattern) unexpected();\n parseMethod(functionStart, /* isConstructor */ false);\n return true;\n }\n\n if (isGetterOrSetterMethod(isPattern)) {\n parsePropertyName(objectContextId);\n parseMethod(functionStart, /* isConstructor */ false);\n return true;\n }\n return false;\n}\n\nfunction parseObjectProperty(isPattern, isBlockScope) {\n if (eat(tt.colon)) {\n if (isPattern) {\n parseMaybeDefault(isBlockScope);\n } else {\n parseMaybeAssign(false);\n }\n return;\n }\n\n // Since there's no colon, we assume this is an object shorthand.\n\n // If we're in a destructuring, we've now discovered that the key was actually an assignee, so\n // we need to tag it as a declaration with the appropriate scope. Otherwise, we might need to\n // transform it on access, so mark it as a normal object shorthand.\n let identifierRole;\n if (isPattern) {\n if (state.scopeDepth === 0) {\n identifierRole = IdentifierRole.ObjectShorthandTopLevelDeclaration;\n } else if (isBlockScope) {\n identifierRole = IdentifierRole.ObjectShorthandBlockScopedDeclaration;\n } else {\n identifierRole = IdentifierRole.ObjectShorthandFunctionScopedDeclaration;\n }\n } else {\n identifierRole = IdentifierRole.ObjectShorthand;\n }\n state.tokens[state.tokens.length - 1].identifierRole = identifierRole;\n\n // Regardless of whether we know this to be a pattern or if we're in an ambiguous context, allow\n // parsing as if there's a default value.\n parseMaybeDefault(isBlockScope, true);\n}\n\nfunction parseObjPropValue(\n isPattern,\n isBlockScope,\n objectContextId,\n) {\n if (isTypeScriptEnabled) {\n tsStartParseObjPropValue();\n } else if (isFlowEnabled) {\n flowStartParseObjPropValue();\n }\n const wasMethod = parseObjectMethod(isPattern, objectContextId);\n if (!wasMethod) {\n parseObjectProperty(isPattern, isBlockScope);\n }\n}\n\nexport function parsePropertyName(objectContextId) {\n if (isFlowEnabled) {\n flowParseVariance();\n }\n if (eat(tt.bracketL)) {\n state.tokens[state.tokens.length - 1].contextId = objectContextId;\n parseMaybeAssign();\n expect(tt.bracketR);\n state.tokens[state.tokens.length - 1].contextId = objectContextId;\n } else {\n if (match(tt.num) || match(tt.string) || match(tt.bigint) || match(tt.decimal)) {\n parseExprAtom();\n } else {\n parseMaybePrivateName();\n }\n\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ObjectKey;\n state.tokens[state.tokens.length - 1].contextId = objectContextId;\n }\n}\n\n// Parse object or class method.\nexport function parseMethod(functionStart, isConstructor) {\n const funcContextId = getNextContextId();\n\n state.scopeDepth++;\n const startTokenIndex = state.tokens.length;\n const allowModifiers = isConstructor; // For TypeScript parameter properties\n parseFunctionParams(allowModifiers, funcContextId);\n parseFunctionBodyAndFinish(functionStart, funcContextId);\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, true));\n state.scopeDepth--;\n}\n\n// Parse arrow function expression.\n// If the parameters are provided, they will be converted to an\n// assignable list.\nexport function parseArrowExpression(startTokenIndex) {\n parseFunctionBody(true);\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, true));\n state.scopeDepth--;\n}\n\nexport function parseFunctionBodyAndFinish(functionStart, funcContextId = 0) {\n if (isTypeScriptEnabled) {\n tsParseFunctionBodyAndFinish(functionStart, funcContextId);\n } else if (isFlowEnabled) {\n flowParseFunctionBodyAndFinish(funcContextId);\n } else {\n parseFunctionBody(false, funcContextId);\n }\n}\n\nexport function parseFunctionBody(allowExpression, funcContextId = 0) {\n const isExpression = allowExpression && !match(tt.braceL);\n\n if (isExpression) {\n parseMaybeAssign();\n } else {\n parseBlock(true /* isFunctionScope */, funcContextId);\n }\n}\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\nfunction parseExprList(close, allowEmpty = false) {\n let first = true;\n while (!eat(close) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n if (eat(close)) break;\n }\n parseExprListItem(allowEmpty);\n }\n}\n\nfunction parseExprListItem(allowEmpty) {\n if (allowEmpty && match(tt.comma)) {\n // Empty item; nothing more to parse for this item.\n } else if (match(tt.ellipsis)) {\n parseSpread();\n parseParenItem();\n } else if (match(tt.question)) {\n // Partial function application proposal.\n next();\n } else {\n parseMaybeAssign(false, true);\n }\n}\n\n// Parse the next token as an identifier.\nexport function parseIdentifier() {\n next();\n state.tokens[state.tokens.length - 1].type = tt.name;\n}\n\n// Parses await expression inside async function.\nfunction parseAwait() {\n parseMaybeUnary();\n}\n\n// Parses yield expression inside generator.\nfunction parseYield() {\n next();\n if (!match(tt.semi) && !canInsertSemicolon()) {\n eat(tt.star);\n parseMaybeAssign();\n }\n}\n\n// https://github.com/tc39/proposal-js-module-blocks\nfunction parseModuleExpression() {\n expectContextual(ContextualKeyword._module);\n expect(tt.braceL);\n // For now, just call parseBlockBody to parse the block. In the future when we\n // implement full support, we'll want to emit scopes and possibly other\n // information.\n parseBlockBody(tt.braceR);\n}\n", "/* eslint max-len: 0 */\n\nimport {\n eat,\n lookaheadType,\n lookaheadTypeAndKeyword,\n match,\n next,\n popTypeContext,\n pushTypeContext,\n\n} from \"../tokenizer/index\";\nimport {ContextualKeyword} from \"../tokenizer/keywords\";\nimport {TokenType, TokenType as tt} from \"../tokenizer/types\";\nimport {input, state} from \"../traverser/base\";\nimport {\n baseParseMaybeAssign,\n baseParseSubscript,\n baseParseSubscripts,\n parseArrow,\n parseArrowExpression,\n parseCallExpressionArguments,\n parseExprAtom,\n parseExpression,\n parseFunctionBody,\n parseIdentifier,\n parseLiteral,\n\n} from \"../traverser/expression\";\nimport {\n baseParseExportStar,\n parseExport,\n parseExportFrom,\n parseExportSpecifiers,\n parseFunctionParams,\n parseImport,\n parseStatement,\n} from \"../traverser/statement\";\nimport {\n canInsertSemicolon,\n eatContextual,\n expect,\n expectContextual,\n isContextual,\n isLookaheadContextual,\n semicolon,\n unexpected,\n} from \"../traverser/util\";\n\nfunction isMaybeDefaultImport(lookahead) {\n return (\n (lookahead.type === tt.name || !!(lookahead.type & TokenType.IS_KEYWORD)) &&\n lookahead.contextualKeyword !== ContextualKeyword._from\n );\n}\n\nfunction flowParseTypeInitialiser(tok) {\n const oldIsType = pushTypeContext(0);\n expect(tok || tt.colon);\n flowParseType();\n popTypeContext(oldIsType);\n}\n\nfunction flowParsePredicate() {\n expect(tt.modulo);\n expectContextual(ContextualKeyword._checks);\n if (eat(tt.parenL)) {\n parseExpression();\n expect(tt.parenR);\n }\n}\n\nfunction flowParseTypeAndPredicateInitialiser() {\n const oldIsType = pushTypeContext(0);\n expect(tt.colon);\n if (match(tt.modulo)) {\n flowParsePredicate();\n } else {\n flowParseType();\n if (match(tt.modulo)) {\n flowParsePredicate();\n }\n }\n popTypeContext(oldIsType);\n}\n\nfunction flowParseDeclareClass() {\n next();\n flowParseInterfaceish(/* isClass */ true);\n}\n\nfunction flowParseDeclareFunction() {\n next();\n parseIdentifier();\n\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n expect(tt.parenL);\n flowParseFunctionTypeParams();\n expect(tt.parenR);\n\n flowParseTypeAndPredicateInitialiser();\n\n semicolon();\n}\n\nfunction flowParseDeclare() {\n if (match(tt._class)) {\n flowParseDeclareClass();\n } else if (match(tt._function)) {\n flowParseDeclareFunction();\n } else if (match(tt._var)) {\n flowParseDeclareVariable();\n } else if (eatContextual(ContextualKeyword._module)) {\n if (eat(tt.dot)) {\n flowParseDeclareModuleExports();\n } else {\n flowParseDeclareModule();\n }\n } else if (isContextual(ContextualKeyword._type)) {\n flowParseDeclareTypeAlias();\n } else if (isContextual(ContextualKeyword._opaque)) {\n flowParseDeclareOpaqueType();\n } else if (isContextual(ContextualKeyword._interface)) {\n flowParseDeclareInterface();\n } else if (match(tt._export)) {\n flowParseDeclareExportDeclaration();\n } else {\n unexpected();\n }\n}\n\nfunction flowParseDeclareVariable() {\n next();\n flowParseTypeAnnotatableIdentifier();\n semicolon();\n}\n\nfunction flowParseDeclareModule() {\n if (match(tt.string)) {\n parseExprAtom();\n } else {\n parseIdentifier();\n }\n\n expect(tt.braceL);\n while (!match(tt.braceR) && !state.error) {\n if (match(tt._import)) {\n next();\n parseImport();\n } else {\n unexpected();\n }\n }\n expect(tt.braceR);\n}\n\nfunction flowParseDeclareExportDeclaration() {\n expect(tt._export);\n\n if (eat(tt._default)) {\n if (match(tt._function) || match(tt._class)) {\n // declare export default class ...\n // declare export default function ...\n flowParseDeclare();\n } else {\n // declare export default [type];\n flowParseType();\n semicolon();\n }\n } else if (\n match(tt._var) || // declare export var ...\n match(tt._function) || // declare export function ...\n match(tt._class) || // declare export class ...\n isContextual(ContextualKeyword._opaque) // declare export opaque ..\n ) {\n flowParseDeclare();\n } else if (\n match(tt.star) || // declare export * from ''\n match(tt.braceL) || // declare export {} ...\n isContextual(ContextualKeyword._interface) || // declare export interface ...\n isContextual(ContextualKeyword._type) || // declare export type ...\n isContextual(ContextualKeyword._opaque) // declare export opaque type ...\n ) {\n parseExport();\n } else {\n unexpected();\n }\n}\n\nfunction flowParseDeclareModuleExports() {\n expectContextual(ContextualKeyword._exports);\n flowParseTypeAnnotation();\n semicolon();\n}\n\nfunction flowParseDeclareTypeAlias() {\n next();\n flowParseTypeAlias();\n}\n\nfunction flowParseDeclareOpaqueType() {\n next();\n flowParseOpaqueType(true);\n}\n\nfunction flowParseDeclareInterface() {\n next();\n flowParseInterfaceish();\n}\n\n// Interfaces\n\nfunction flowParseInterfaceish(isClass = false) {\n flowParseRestrictedIdentifier();\n\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n if (eat(tt._extends)) {\n do {\n flowParseInterfaceExtends();\n } while (!isClass && eat(tt.comma));\n }\n\n if (isContextual(ContextualKeyword._mixins)) {\n next();\n do {\n flowParseInterfaceExtends();\n } while (eat(tt.comma));\n }\n\n if (isContextual(ContextualKeyword._implements)) {\n next();\n do {\n flowParseInterfaceExtends();\n } while (eat(tt.comma));\n }\n\n flowParseObjectType(isClass, false, isClass);\n}\n\nfunction flowParseInterfaceExtends() {\n flowParseQualifiedTypeIdentifier(false);\n if (match(tt.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n}\n\nfunction flowParseInterface() {\n flowParseInterfaceish();\n}\n\nfunction flowParseRestrictedIdentifier() {\n parseIdentifier();\n}\n\nfunction flowParseTypeAlias() {\n flowParseRestrictedIdentifier();\n\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n flowParseTypeInitialiser(tt.eq);\n semicolon();\n}\n\nfunction flowParseOpaqueType(declare) {\n expectContextual(ContextualKeyword._type);\n flowParseRestrictedIdentifier();\n\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n // Parse the supertype\n if (match(tt.colon)) {\n flowParseTypeInitialiser(tt.colon);\n }\n\n if (!declare) {\n flowParseTypeInitialiser(tt.eq);\n }\n semicolon();\n}\n\nfunction flowParseTypeParameter() {\n flowParseVariance();\n flowParseTypeAnnotatableIdentifier();\n\n if (eat(tt.eq)) {\n flowParseType();\n }\n}\n\nexport function flowParseTypeParameterDeclaration() {\n const oldIsType = pushTypeContext(0);\n // istanbul ignore else: this condition is already checked at all call sites\n if (match(tt.lessThan) || match(tt.typeParameterStart)) {\n next();\n } else {\n unexpected();\n }\n\n do {\n flowParseTypeParameter();\n if (!match(tt.greaterThan)) {\n expect(tt.comma);\n }\n } while (!match(tt.greaterThan) && !state.error);\n expect(tt.greaterThan);\n popTypeContext(oldIsType);\n}\n\nfunction flowParseTypeParameterInstantiation() {\n const oldIsType = pushTypeContext(0);\n expect(tt.lessThan);\n while (!match(tt.greaterThan) && !state.error) {\n flowParseType();\n if (!match(tt.greaterThan)) {\n expect(tt.comma);\n }\n }\n expect(tt.greaterThan);\n popTypeContext(oldIsType);\n}\n\nfunction flowParseInterfaceType() {\n expectContextual(ContextualKeyword._interface);\n if (eat(tt._extends)) {\n do {\n flowParseInterfaceExtends();\n } while (eat(tt.comma));\n }\n flowParseObjectType(false, false, false);\n}\n\nfunction flowParseObjectPropertyKey() {\n if (match(tt.num) || match(tt.string)) {\n parseExprAtom();\n } else {\n parseIdentifier();\n }\n}\n\nfunction flowParseObjectTypeIndexer() {\n // Note: bracketL has already been consumed\n if (lookaheadType() === tt.colon) {\n flowParseObjectPropertyKey();\n flowParseTypeInitialiser();\n } else {\n flowParseType();\n }\n expect(tt.bracketR);\n flowParseTypeInitialiser();\n}\n\nfunction flowParseObjectTypeInternalSlot() {\n // Note: both bracketL have already been consumed\n flowParseObjectPropertyKey();\n expect(tt.bracketR);\n expect(tt.bracketR);\n if (match(tt.lessThan) || match(tt.parenL)) {\n flowParseObjectTypeMethodish();\n } else {\n eat(tt.question);\n flowParseTypeInitialiser();\n }\n}\n\nfunction flowParseObjectTypeMethodish() {\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n expect(tt.parenL);\n while (!match(tt.parenR) && !match(tt.ellipsis) && !state.error) {\n flowParseFunctionTypeParam();\n if (!match(tt.parenR)) {\n expect(tt.comma);\n }\n }\n\n if (eat(tt.ellipsis)) {\n flowParseFunctionTypeParam();\n }\n expect(tt.parenR);\n flowParseTypeInitialiser();\n}\n\nfunction flowParseObjectTypeCallProperty() {\n flowParseObjectTypeMethodish();\n}\n\nfunction flowParseObjectType(allowStatic, allowExact, allowProto) {\n let endDelim;\n if (allowExact && match(tt.braceBarL)) {\n expect(tt.braceBarL);\n endDelim = tt.braceBarR;\n } else {\n expect(tt.braceL);\n endDelim = tt.braceR;\n }\n\n while (!match(endDelim) && !state.error) {\n if (allowProto && isContextual(ContextualKeyword._proto)) {\n const lookahead = lookaheadType();\n if (lookahead !== tt.colon && lookahead !== tt.question) {\n next();\n allowStatic = false;\n }\n }\n if (allowStatic && isContextual(ContextualKeyword._static)) {\n const lookahead = lookaheadType();\n if (lookahead !== tt.colon && lookahead !== tt.question) {\n next();\n }\n }\n\n flowParseVariance();\n\n if (eat(tt.bracketL)) {\n if (eat(tt.bracketL)) {\n flowParseObjectTypeInternalSlot();\n } else {\n flowParseObjectTypeIndexer();\n }\n } else if (match(tt.parenL) || match(tt.lessThan)) {\n flowParseObjectTypeCallProperty();\n } else {\n if (isContextual(ContextualKeyword._get) || isContextual(ContextualKeyword._set)) {\n const lookahead = lookaheadType();\n if (lookahead === tt.name || lookahead === tt.string || lookahead === tt.num) {\n next();\n }\n }\n\n flowParseObjectTypeProperty();\n }\n\n flowObjectTypeSemicolon();\n }\n\n expect(endDelim);\n}\n\nfunction flowParseObjectTypeProperty() {\n if (match(tt.ellipsis)) {\n expect(tt.ellipsis);\n if (!eat(tt.comma)) {\n eat(tt.semi);\n }\n // Explicit inexact object syntax.\n if (match(tt.braceR)) {\n return;\n }\n flowParseType();\n } else {\n flowParseObjectPropertyKey();\n if (match(tt.lessThan) || match(tt.parenL)) {\n // This is a method property\n flowParseObjectTypeMethodish();\n } else {\n eat(tt.question);\n flowParseTypeInitialiser();\n }\n }\n}\n\nfunction flowObjectTypeSemicolon() {\n if (!eat(tt.semi) && !eat(tt.comma) && !match(tt.braceR) && !match(tt.braceBarR)) {\n unexpected();\n }\n}\n\nfunction flowParseQualifiedTypeIdentifier(initialIdAlreadyParsed) {\n if (!initialIdAlreadyParsed) {\n parseIdentifier();\n }\n while (eat(tt.dot)) {\n parseIdentifier();\n }\n}\n\nfunction flowParseGenericType() {\n flowParseQualifiedTypeIdentifier(true);\n if (match(tt.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n}\n\nfunction flowParseTypeofType() {\n expect(tt._typeof);\n flowParsePrimaryType();\n}\n\nfunction flowParseTupleType() {\n expect(tt.bracketL);\n // We allow trailing commas\n while (state.pos < input.length && !match(tt.bracketR)) {\n flowParseType();\n if (match(tt.bracketR)) {\n break;\n }\n expect(tt.comma);\n }\n expect(tt.bracketR);\n}\n\nfunction flowParseFunctionTypeParam() {\n const lookahead = lookaheadType();\n if (lookahead === tt.colon || lookahead === tt.question) {\n parseIdentifier();\n eat(tt.question);\n flowParseTypeInitialiser();\n } else {\n flowParseType();\n }\n}\n\nfunction flowParseFunctionTypeParams() {\n while (!match(tt.parenR) && !match(tt.ellipsis) && !state.error) {\n flowParseFunctionTypeParam();\n if (!match(tt.parenR)) {\n expect(tt.comma);\n }\n }\n if (eat(tt.ellipsis)) {\n flowParseFunctionTypeParam();\n }\n}\n\n// The parsing of types roughly parallels the parsing of expressions, and\n// primary types are kind of like primary expressions...they're the\n// primitives with which other types are constructed.\nfunction flowParsePrimaryType() {\n let isGroupedType = false;\n const oldNoAnonFunctionType = state.noAnonFunctionType;\n\n switch (state.type) {\n case tt.name: {\n if (isContextual(ContextualKeyword._interface)) {\n flowParseInterfaceType();\n return;\n }\n parseIdentifier();\n flowParseGenericType();\n return;\n }\n\n case tt.braceL:\n flowParseObjectType(false, false, false);\n return;\n\n case tt.braceBarL:\n flowParseObjectType(false, true, false);\n return;\n\n case tt.bracketL:\n flowParseTupleType();\n return;\n\n case tt.lessThan:\n flowParseTypeParameterDeclaration();\n expect(tt.parenL);\n flowParseFunctionTypeParams();\n expect(tt.parenR);\n expect(tt.arrow);\n flowParseType();\n return;\n\n case tt.parenL:\n next();\n\n // Check to see if this is actually a grouped type\n if (!match(tt.parenR) && !match(tt.ellipsis)) {\n if (match(tt.name)) {\n const token = lookaheadType();\n isGroupedType = token !== tt.question && token !== tt.colon;\n } else {\n isGroupedType = true;\n }\n }\n\n if (isGroupedType) {\n state.noAnonFunctionType = false;\n flowParseType();\n state.noAnonFunctionType = oldNoAnonFunctionType;\n\n // A `,` or a `) =>` means this is an anonymous function type\n if (\n state.noAnonFunctionType ||\n !(match(tt.comma) || (match(tt.parenR) && lookaheadType() === tt.arrow))\n ) {\n expect(tt.parenR);\n return;\n } else {\n // Eat a comma if there is one\n eat(tt.comma);\n }\n }\n\n flowParseFunctionTypeParams();\n\n expect(tt.parenR);\n expect(tt.arrow);\n flowParseType();\n return;\n\n case tt.minus:\n next();\n parseLiteral();\n return;\n\n case tt.string:\n case tt.num:\n case tt._true:\n case tt._false:\n case tt._null:\n case tt._this:\n case tt._void:\n case tt.star:\n next();\n return;\n\n default:\n if (state.type === tt._typeof) {\n flowParseTypeofType();\n return;\n } else if (state.type & TokenType.IS_KEYWORD) {\n next();\n state.tokens[state.tokens.length - 1].type = tt.name;\n return;\n }\n }\n\n unexpected();\n}\n\nfunction flowParsePostfixType() {\n flowParsePrimaryType();\n while (!canInsertSemicolon() && (match(tt.bracketL) || match(tt.questionDot))) {\n eat(tt.questionDot);\n expect(tt.bracketL);\n if (eat(tt.bracketR)) {\n // Array type\n } else {\n // Indexed access type\n flowParseType();\n expect(tt.bracketR);\n }\n }\n}\n\nfunction flowParsePrefixType() {\n if (eat(tt.question)) {\n flowParsePrefixType();\n } else {\n flowParsePostfixType();\n }\n}\n\nfunction flowParseAnonFunctionWithoutParens() {\n flowParsePrefixType();\n if (!state.noAnonFunctionType && eat(tt.arrow)) {\n flowParseType();\n }\n}\n\nfunction flowParseIntersectionType() {\n eat(tt.bitwiseAND);\n flowParseAnonFunctionWithoutParens();\n while (eat(tt.bitwiseAND)) {\n flowParseAnonFunctionWithoutParens();\n }\n}\n\nfunction flowParseUnionType() {\n eat(tt.bitwiseOR);\n flowParseIntersectionType();\n while (eat(tt.bitwiseOR)) {\n flowParseIntersectionType();\n }\n}\n\nfunction flowParseType() {\n flowParseUnionType();\n}\n\nexport function flowParseTypeAnnotation() {\n flowParseTypeInitialiser();\n}\n\nfunction flowParseTypeAnnotatableIdentifier() {\n parseIdentifier();\n if (match(tt.colon)) {\n flowParseTypeAnnotation();\n }\n}\n\nexport function flowParseVariance() {\n if (match(tt.plus) || match(tt.minus)) {\n next();\n state.tokens[state.tokens.length - 1].isType = true;\n }\n}\n\n// ==================================\n// Overrides\n// ==================================\n\nexport function flowParseFunctionBodyAndFinish(funcContextId) {\n // For arrow functions, `parseArrow` handles the return type itself.\n if (match(tt.colon)) {\n flowParseTypeAndPredicateInitialiser();\n }\n\n parseFunctionBody(false, funcContextId);\n}\n\nexport function flowParseSubscript(\n startTokenIndex,\n noCalls,\n stopState,\n) {\n if (match(tt.questionDot) && lookaheadType() === tt.lessThan) {\n if (noCalls) {\n stopState.stop = true;\n return;\n }\n next();\n flowParseTypeParameterInstantiation();\n expect(tt.parenL);\n parseCallExpressionArguments();\n return;\n } else if (!noCalls && match(tt.lessThan)) {\n const snapshot = state.snapshot();\n flowParseTypeParameterInstantiation();\n expect(tt.parenL);\n parseCallExpressionArguments();\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n } else {\n return;\n }\n }\n baseParseSubscript(startTokenIndex, noCalls, stopState);\n}\n\nexport function flowStartParseNewArguments() {\n if (match(tt.lessThan)) {\n const snapshot = state.snapshot();\n flowParseTypeParameterInstantiation();\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n }\n }\n}\n\n// interfaces\nexport function flowTryParseStatement() {\n if (match(tt.name) && state.contextualKeyword === ContextualKeyword._interface) {\n const oldIsType = pushTypeContext(0);\n next();\n flowParseInterface();\n popTypeContext(oldIsType);\n return true;\n } else if (isContextual(ContextualKeyword._enum)) {\n flowParseEnumDeclaration();\n return true;\n }\n return false;\n}\n\nexport function flowTryParseExportDefaultExpression() {\n if (isContextual(ContextualKeyword._enum)) {\n flowParseEnumDeclaration();\n return true;\n }\n return false;\n}\n\n// declares, interfaces and type aliases\nexport function flowParseIdentifierStatement(contextualKeyword) {\n if (contextualKeyword === ContextualKeyword._declare) {\n if (\n match(tt._class) ||\n match(tt.name) ||\n match(tt._function) ||\n match(tt._var) ||\n match(tt._export)\n ) {\n const oldIsType = pushTypeContext(1);\n flowParseDeclare();\n popTypeContext(oldIsType);\n }\n } else if (match(tt.name)) {\n if (contextualKeyword === ContextualKeyword._interface) {\n const oldIsType = pushTypeContext(1);\n flowParseInterface();\n popTypeContext(oldIsType);\n } else if (contextualKeyword === ContextualKeyword._type) {\n const oldIsType = pushTypeContext(1);\n flowParseTypeAlias();\n popTypeContext(oldIsType);\n } else if (contextualKeyword === ContextualKeyword._opaque) {\n const oldIsType = pushTypeContext(1);\n flowParseOpaqueType(false);\n popTypeContext(oldIsType);\n }\n }\n semicolon();\n}\n\n// export type\nexport function flowShouldParseExportDeclaration() {\n return (\n isContextual(ContextualKeyword._type) ||\n isContextual(ContextualKeyword._interface) ||\n isContextual(ContextualKeyword._opaque) ||\n isContextual(ContextualKeyword._enum)\n );\n}\n\nexport function flowShouldDisallowExportDefaultSpecifier() {\n return (\n match(tt.name) &&\n (state.contextualKeyword === ContextualKeyword._type ||\n state.contextualKeyword === ContextualKeyword._interface ||\n state.contextualKeyword === ContextualKeyword._opaque ||\n state.contextualKeyword === ContextualKeyword._enum)\n );\n}\n\nexport function flowParseExportDeclaration() {\n if (isContextual(ContextualKeyword._type)) {\n const oldIsType = pushTypeContext(1);\n next();\n\n if (match(tt.braceL)) {\n // export type { foo, bar };\n parseExportSpecifiers();\n parseExportFrom();\n } else {\n // export type Foo = Bar;\n flowParseTypeAlias();\n }\n popTypeContext(oldIsType);\n } else if (isContextual(ContextualKeyword._opaque)) {\n const oldIsType = pushTypeContext(1);\n next();\n // export opaque type Foo = Bar;\n flowParseOpaqueType(false);\n popTypeContext(oldIsType);\n } else if (isContextual(ContextualKeyword._interface)) {\n const oldIsType = pushTypeContext(1);\n next();\n flowParseInterface();\n popTypeContext(oldIsType);\n } else {\n parseStatement(true);\n }\n}\n\nexport function flowShouldParseExportStar() {\n return match(tt.star) || (isContextual(ContextualKeyword._type) && lookaheadType() === tt.star);\n}\n\nexport function flowParseExportStar() {\n if (eatContextual(ContextualKeyword._type)) {\n const oldIsType = pushTypeContext(2);\n baseParseExportStar();\n popTypeContext(oldIsType);\n } else {\n baseParseExportStar();\n }\n}\n\n// parse a the super class type parameters and implements\nexport function flowAfterParseClassSuper(hasSuper) {\n if (hasSuper && match(tt.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n if (isContextual(ContextualKeyword._implements)) {\n const oldIsType = pushTypeContext(0);\n next();\n state.tokens[state.tokens.length - 1].type = tt._implements;\n do {\n flowParseRestrictedIdentifier();\n if (match(tt.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n } while (eat(tt.comma));\n popTypeContext(oldIsType);\n }\n}\n\n// parse type parameters for object method shorthand\nexport function flowStartParseObjPropValue() {\n // method shorthand\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n if (!match(tt.parenL)) unexpected();\n }\n}\n\nexport function flowParseAssignableListItemTypes() {\n const oldIsType = pushTypeContext(0);\n eat(tt.question);\n if (match(tt.colon)) {\n flowParseTypeAnnotation();\n }\n popTypeContext(oldIsType);\n}\n\n// parse typeof and type imports\nexport function flowStartParseImportSpecifiers() {\n if (match(tt._typeof) || isContextual(ContextualKeyword._type)) {\n const lh = lookaheadTypeAndKeyword();\n if (isMaybeDefaultImport(lh) || lh.type === tt.braceL || lh.type === tt.star) {\n next();\n }\n }\n}\n\n// parse import-type/typeof shorthand\nexport function flowParseImportSpecifier() {\n const isTypeKeyword =\n state.contextualKeyword === ContextualKeyword._type || state.type === tt._typeof;\n if (isTypeKeyword) {\n next();\n } else {\n parseIdentifier();\n }\n\n if (isContextual(ContextualKeyword._as) && !isLookaheadContextual(ContextualKeyword._as)) {\n parseIdentifier();\n if (isTypeKeyword && !match(tt.name) && !(state.type & TokenType.IS_KEYWORD)) {\n // `import {type as ,` or `import {type as }`\n } else {\n // `import {type as foo`\n parseIdentifier();\n }\n } else {\n if (isTypeKeyword && (match(tt.name) || !!(state.type & TokenType.IS_KEYWORD))) {\n // `import {type foo`\n parseIdentifier();\n }\n if (eatContextual(ContextualKeyword._as)) {\n parseIdentifier();\n }\n }\n}\n\n// parse function type parameters - function foo<T>() {}\nexport function flowStartParseFunctionParams() {\n // Originally this checked if the method is a getter/setter, but if it was, we'd crash soon\n // anyway, so don't try to propagate that information.\n if (match(tt.lessThan)) {\n const oldIsType = pushTypeContext(0);\n flowParseTypeParameterDeclaration();\n popTypeContext(oldIsType);\n }\n}\n\n// parse flow type annotations on variable declarator heads - let foo: string = bar\nexport function flowAfterParseVarHead() {\n if (match(tt.colon)) {\n flowParseTypeAnnotation();\n }\n}\n\n// parse the return type of an async arrow function - let foo = (async (): number => {});\nexport function flowStartParseAsyncArrowFromCallExpression() {\n if (match(tt.colon)) {\n const oldNoAnonFunctionType = state.noAnonFunctionType;\n state.noAnonFunctionType = true;\n flowParseTypeAnnotation();\n state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n}\n\n// We need to support type parameter declarations for arrow functions. This\n// is tricky. There are three situations we need to handle\n//\n// 1. This is either JSX or an arrow function. We'll try JSX first. If that\n// fails, we'll try an arrow function. If that fails, we'll throw the JSX\n// error.\n// 2. This is an arrow function. We'll parse the type parameter declaration,\n// parse the rest, make sure the rest is an arrow function, and go from\n// there\n// 3. This is neither. Just call the super method\nexport function flowParseMaybeAssign(noIn, isWithinParens) {\n if (match(tt.lessThan)) {\n const snapshot = state.snapshot();\n let wasArrow = baseParseMaybeAssign(noIn, isWithinParens);\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n state.type = tt.typeParameterStart;\n } else {\n return wasArrow;\n }\n\n const oldIsType = pushTypeContext(0);\n flowParseTypeParameterDeclaration();\n popTypeContext(oldIsType);\n wasArrow = baseParseMaybeAssign(noIn, isWithinParens);\n if (wasArrow) {\n return true;\n }\n unexpected();\n }\n\n return baseParseMaybeAssign(noIn, isWithinParens);\n}\n\n// handle return types for arrow functions\nexport function flowParseArrow() {\n if (match(tt.colon)) {\n const oldIsType = pushTypeContext(0);\n const snapshot = state.snapshot();\n\n const oldNoAnonFunctionType = state.noAnonFunctionType;\n state.noAnonFunctionType = true;\n flowParseTypeAndPredicateInitialiser();\n state.noAnonFunctionType = oldNoAnonFunctionType;\n\n if (canInsertSemicolon()) unexpected();\n if (!match(tt.arrow)) unexpected();\n\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n }\n popTypeContext(oldIsType);\n }\n return eat(tt.arrow);\n}\n\nexport function flowParseSubscripts(startTokenIndex, noCalls = false) {\n if (\n state.tokens[state.tokens.length - 1].contextualKeyword === ContextualKeyword._async &&\n match(tt.lessThan)\n ) {\n const snapshot = state.snapshot();\n const wasArrow = parseAsyncArrowWithTypeParameters();\n if (wasArrow && !state.error) {\n return;\n }\n state.restoreFromSnapshot(snapshot);\n }\n\n baseParseSubscripts(startTokenIndex, noCalls);\n}\n\n// Returns true if there was an arrow function here.\nfunction parseAsyncArrowWithTypeParameters() {\n state.scopeDepth++;\n const startTokenIndex = state.tokens.length;\n parseFunctionParams();\n if (!parseArrow()) {\n return false;\n }\n parseArrowExpression(startTokenIndex);\n return true;\n}\n\nfunction flowParseEnumDeclaration() {\n expectContextual(ContextualKeyword._enum);\n state.tokens[state.tokens.length - 1].type = tt._enum;\n parseIdentifier();\n flowParseEnumBody();\n}\n\nfunction flowParseEnumBody() {\n if (eatContextual(ContextualKeyword._of)) {\n next();\n }\n expect(tt.braceL);\n flowParseEnumMembers();\n expect(tt.braceR);\n}\n\nfunction flowParseEnumMembers() {\n while (!match(tt.braceR) && !state.error) {\n if (eat(tt.ellipsis)) {\n break;\n }\n flowParseEnumMember();\n if (!match(tt.braceR)) {\n expect(tt.comma);\n }\n }\n}\n\nfunction flowParseEnumMember() {\n parseIdentifier();\n if (eat(tt.eq)) {\n // Flow enum values are always just one token (a string, number, or boolean literal).\n next();\n }\n}\n", "/* eslint max-len: 0 */\n\nimport {File} from \"../index\";\nimport {\n flowAfterParseClassSuper,\n flowAfterParseVarHead,\n flowParseExportDeclaration,\n flowParseExportStar,\n flowParseIdentifierStatement,\n flowParseImportSpecifier,\n flowParseTypeAnnotation,\n flowParseTypeParameterDeclaration,\n flowShouldDisallowExportDefaultSpecifier,\n flowShouldParseExportDeclaration,\n flowShouldParseExportStar,\n flowStartParseFunctionParams,\n flowStartParseImportSpecifiers,\n flowTryParseExportDefaultExpression,\n flowTryParseStatement,\n} from \"../plugins/flow\";\nimport {\n tsAfterParseClassSuper,\n tsAfterParseVarHead,\n tsIsDeclarationStart,\n tsParseExportDeclaration,\n tsParseExportSpecifier,\n tsParseIdentifierStatement,\n tsParseImportEqualsDeclaration,\n tsParseImportSpecifier,\n tsParseMaybeDecoratorArguments,\n tsParseModifiers,\n tsStartParseFunctionParams,\n tsTryParseClassMemberWithIsStatic,\n tsTryParseExport,\n tsTryParseExportDefaultExpression,\n tsTryParseStatementContent,\n tsTryParseTypeAnnotation,\n tsTryParseTypeParameters,\n} from \"../plugins/typescript\";\nimport {\n eat,\n eatTypeToken,\n IdentifierRole,\n lookaheadType,\n lookaheadTypeAndKeyword,\n match,\n next,\n nextTokenStart,\n nextTokenStartSince,\n popTypeContext,\n pushTypeContext,\n} from \"../tokenizer\";\nimport {ContextualKeyword} from \"../tokenizer/keywords\";\nimport {Scope} from \"../tokenizer/state\";\nimport { TokenType as tt} from \"../tokenizer/types\";\nimport {charCodes} from \"../util/charcodes\";\nimport {getNextContextId, input, isFlowEnabled, isTypeScriptEnabled, state} from \"./base\";\nimport {\n parseCallExpressionArguments,\n parseExprAtom,\n parseExpression,\n parseExprSubscripts,\n parseFunctionBodyAndFinish,\n parseIdentifier,\n parseMaybeAssign,\n parseMethod,\n parseObj,\n parseParenExpression,\n parsePropertyName,\n} from \"./expression\";\nimport {\n parseBindingAtom,\n parseBindingIdentifier,\n parseBindingList,\n parseImportedIdentifier,\n} from \"./lval\";\nimport {\n canInsertSemicolon,\n eatContextual,\n expect,\n expectContextual,\n hasFollowingLineBreak,\n hasPrecedingLineBreak,\n isContextual,\n isLineTerminator,\n isLookaheadContextual,\n semicolon,\n unexpected,\n} from \"./util\";\n\nexport function parseTopLevel() {\n parseBlockBody(tt.eof);\n state.scopes.push(new Scope(0, state.tokens.length, true));\n if (state.scopeDepth !== 0) {\n throw new Error(`Invalid scope depth at end of file: ${state.scopeDepth}`);\n }\n return new File(state.tokens, state.scopes);\n}\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\nexport function parseStatement(declaration) {\n if (isFlowEnabled) {\n if (flowTryParseStatement()) {\n return;\n }\n }\n if (match(tt.at)) {\n parseDecorators();\n }\n parseStatementContent(declaration);\n}\n\nfunction parseStatementContent(declaration) {\n if (isTypeScriptEnabled) {\n if (tsTryParseStatementContent()) {\n return;\n }\n }\n\n const starttype = state.type;\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case tt._break:\n case tt._continue:\n parseBreakContinueStatement();\n return;\n case tt._debugger:\n parseDebuggerStatement();\n return;\n case tt._do:\n parseDoStatement();\n return;\n case tt._for:\n parseForStatement();\n return;\n case tt._function:\n if (lookaheadType() === tt.dot) break;\n if (!declaration) unexpected();\n parseFunctionStatement();\n return;\n\n case tt._class:\n if (!declaration) unexpected();\n parseClass(true);\n return;\n\n case tt._if:\n parseIfStatement();\n return;\n case tt._return:\n parseReturnStatement();\n return;\n case tt._switch:\n parseSwitchStatement();\n return;\n case tt._throw:\n parseThrowStatement();\n return;\n case tt._try:\n parseTryStatement();\n return;\n\n case tt._let:\n case tt._const:\n if (!declaration) unexpected(); // NOTE: falls through to _var\n\n case tt._var:\n parseVarStatement(starttype !== tt._var);\n return;\n\n case tt._while:\n parseWhileStatement();\n return;\n case tt.braceL:\n parseBlock();\n return;\n case tt.semi:\n parseEmptyStatement();\n return;\n case tt._export:\n case tt._import: {\n const nextType = lookaheadType();\n if (nextType === tt.parenL || nextType === tt.dot) {\n break;\n }\n next();\n if (starttype === tt._import) {\n parseImport();\n } else {\n parseExport();\n }\n return;\n }\n case tt.name:\n if (state.contextualKeyword === ContextualKeyword._async) {\n const functionStart = state.start;\n // peek ahead and see if next token is a function\n const snapshot = state.snapshot();\n next();\n if (match(tt._function) && !canInsertSemicolon()) {\n expect(tt._function);\n parseFunction(functionStart, true);\n return;\n } else {\n state.restoreFromSnapshot(snapshot);\n }\n } else if (\n state.contextualKeyword === ContextualKeyword._using &&\n !hasFollowingLineBreak() &&\n // Statements like `using[0]` and `using in foo` aren't actual using\n // declarations.\n lookaheadType() === tt.name\n ) {\n parseVarStatement(true);\n return;\n } else if (startsAwaitUsing()) {\n expectContextual(ContextualKeyword._await);\n parseVarStatement(true);\n return;\n }\n default:\n // Do nothing.\n break;\n }\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n const initialTokensLength = state.tokens.length;\n parseExpression();\n let simpleName = null;\n if (state.tokens.length === initialTokensLength + 1) {\n const token = state.tokens[state.tokens.length - 1];\n if (token.type === tt.name) {\n simpleName = token.contextualKeyword;\n }\n }\n if (simpleName == null) {\n semicolon();\n return;\n }\n if (eat(tt.colon)) {\n parseLabeledStatement();\n } else {\n // This was an identifier, so we might want to handle flow/typescript-specific cases.\n parseIdentifierStatement(simpleName);\n }\n}\n\n/**\n * Determine if we're positioned at an `await using` declaration.\n *\n * Note that this can happen either in place of a regular variable declaration\n * or in a loop body, and in both places, there are similar-looking cases where\n * we need to return false.\n *\n * Examples returning true:\n * await using foo = bar();\n * for (await using a of b) {}\n *\n * Examples returning false:\n * await using\n * await using + 1\n * await using instanceof T\n * for (await using;;) {}\n *\n * For now, we early return if we don't see `await`, then do a simple\n * backtracking-based lookahead for the `using` and identifier tokens. In the\n * future, this could be optimized with a character-based approach.\n */\nfunction startsAwaitUsing() {\n if (!isContextual(ContextualKeyword._await)) {\n return false;\n }\n const snapshot = state.snapshot();\n // await\n next();\n if (!isContextual(ContextualKeyword._using) || hasPrecedingLineBreak()) {\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n // using\n next();\n if (!match(tt.name) || hasPrecedingLineBreak()) {\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n state.restoreFromSnapshot(snapshot);\n return true;\n}\n\nexport function parseDecorators() {\n while (match(tt.at)) {\n parseDecorator();\n }\n}\n\nfunction parseDecorator() {\n next();\n if (eat(tt.parenL)) {\n parseExpression();\n expect(tt.parenR);\n } else {\n parseIdentifier();\n while (eat(tt.dot)) {\n parseIdentifier();\n }\n parseMaybeDecoratorArguments();\n }\n}\n\nfunction parseMaybeDecoratorArguments() {\n if (isTypeScriptEnabled) {\n tsParseMaybeDecoratorArguments();\n } else {\n baseParseMaybeDecoratorArguments();\n }\n}\n\nexport function baseParseMaybeDecoratorArguments() {\n if (eat(tt.parenL)) {\n parseCallExpressionArguments();\n }\n}\n\nfunction parseBreakContinueStatement() {\n next();\n if (!isLineTerminator()) {\n parseIdentifier();\n semicolon();\n }\n}\n\nfunction parseDebuggerStatement() {\n next();\n semicolon();\n}\n\nfunction parseDoStatement() {\n next();\n parseStatement(false);\n expect(tt._while);\n parseParenExpression();\n eat(tt.semi);\n}\n\nfunction parseForStatement() {\n state.scopeDepth++;\n const startTokenIndex = state.tokens.length;\n parseAmbiguousForStatement();\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, false));\n state.scopeDepth--;\n}\n\n/**\n * Determine if this token is a `using` declaration (explicit resource\n * management) as part of a loop.\n * https://github.com/tc39/proposal-explicit-resource-management\n */\nfunction isUsingInLoop() {\n if (!isContextual(ContextualKeyword._using)) {\n return false;\n }\n // This must be `for (using of`, where `using` is the name of the loop\n // variable.\n if (isLookaheadContextual(ContextualKeyword._of)) {\n return false;\n }\n return true;\n}\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\nfunction parseAmbiguousForStatement() {\n next();\n\n let forAwait = false;\n if (isContextual(ContextualKeyword._await)) {\n forAwait = true;\n next();\n }\n expect(tt.parenL);\n\n if (match(tt.semi)) {\n if (forAwait) {\n unexpected();\n }\n parseFor();\n return;\n }\n\n const isAwaitUsing = startsAwaitUsing();\n if (isAwaitUsing || match(tt._var) || match(tt._let) || match(tt._const) || isUsingInLoop()) {\n if (isAwaitUsing) {\n expectContextual(ContextualKeyword._await);\n }\n next();\n parseVar(true, state.type !== tt._var);\n if (match(tt._in) || isContextual(ContextualKeyword._of)) {\n parseForIn(forAwait);\n return;\n }\n parseFor();\n return;\n }\n\n parseExpression(true);\n if (match(tt._in) || isContextual(ContextualKeyword._of)) {\n parseForIn(forAwait);\n return;\n }\n if (forAwait) {\n unexpected();\n }\n parseFor();\n}\n\nfunction parseFunctionStatement() {\n const functionStart = state.start;\n next();\n parseFunction(functionStart, true);\n}\n\nfunction parseIfStatement() {\n next();\n parseParenExpression();\n parseStatement(false);\n if (eat(tt._else)) {\n parseStatement(false);\n }\n}\n\nfunction parseReturnStatement() {\n next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (!isLineTerminator()) {\n parseExpression();\n semicolon();\n }\n}\n\nfunction parseSwitchStatement() {\n next();\n parseParenExpression();\n state.scopeDepth++;\n const startTokenIndex = state.tokens.length;\n expect(tt.braceL);\n\n // Don't bother validation; just go through any sequence of cases, defaults, and statements.\n while (!match(tt.braceR) && !state.error) {\n if (match(tt._case) || match(tt._default)) {\n const isCase = match(tt._case);\n next();\n if (isCase) {\n parseExpression();\n }\n expect(tt.colon);\n } else {\n parseStatement(true);\n }\n }\n next(); // Closing brace\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, false));\n state.scopeDepth--;\n}\n\nfunction parseThrowStatement() {\n next();\n parseExpression();\n semicolon();\n}\n\nfunction parseCatchClauseParam() {\n parseBindingAtom(true /* isBlockScope */);\n\n if (isTypeScriptEnabled) {\n tsTryParseTypeAnnotation();\n }\n}\n\nfunction parseTryStatement() {\n next();\n\n parseBlock();\n\n if (match(tt._catch)) {\n next();\n let catchBindingStartTokenIndex = null;\n if (match(tt.parenL)) {\n state.scopeDepth++;\n catchBindingStartTokenIndex = state.tokens.length;\n expect(tt.parenL);\n parseCatchClauseParam();\n expect(tt.parenR);\n }\n parseBlock();\n if (catchBindingStartTokenIndex != null) {\n // We need a special scope for the catch binding which includes the binding itself and the\n // catch block.\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(catchBindingStartTokenIndex, endTokenIndex, false));\n state.scopeDepth--;\n }\n }\n if (eat(tt._finally)) {\n parseBlock();\n }\n}\n\nexport function parseVarStatement(isBlockScope) {\n next();\n parseVar(false, isBlockScope);\n semicolon();\n}\n\nfunction parseWhileStatement() {\n next();\n parseParenExpression();\n parseStatement(false);\n}\n\nfunction parseEmptyStatement() {\n next();\n}\n\nfunction parseLabeledStatement() {\n parseStatement(true);\n}\n\n/**\n * Parse a statement starting with an identifier of the given name. Subclasses match on the name\n * to handle statements like \"declare\".\n */\nfunction parseIdentifierStatement(contextualKeyword) {\n if (isTypeScriptEnabled) {\n tsParseIdentifierStatement(contextualKeyword);\n } else if (isFlowEnabled) {\n flowParseIdentifierStatement(contextualKeyword);\n } else {\n semicolon();\n }\n}\n\n// Parse a semicolon-enclosed block of statements.\nexport function parseBlock(isFunctionScope = false, contextId = 0) {\n const startTokenIndex = state.tokens.length;\n state.scopeDepth++;\n expect(tt.braceL);\n if (contextId) {\n state.tokens[state.tokens.length - 1].contextId = contextId;\n }\n parseBlockBody(tt.braceR);\n if (contextId) {\n state.tokens[state.tokens.length - 1].contextId = contextId;\n }\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, isFunctionScope));\n state.scopeDepth--;\n}\n\nexport function parseBlockBody(end) {\n while (!eat(end) && !state.error) {\n parseStatement(true);\n }\n}\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\nfunction parseFor() {\n expect(tt.semi);\n if (!match(tt.semi)) {\n parseExpression();\n }\n expect(tt.semi);\n if (!match(tt.parenR)) {\n parseExpression();\n }\n expect(tt.parenR);\n parseStatement(false);\n}\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\nfunction parseForIn(forAwait) {\n if (forAwait) {\n eatContextual(ContextualKeyword._of);\n } else {\n next();\n }\n parseExpression();\n expect(tt.parenR);\n parseStatement(false);\n}\n\n// Parse a list of variable declarations.\n\nfunction parseVar(isFor, isBlockScope) {\n while (true) {\n parseVarHead(isBlockScope);\n if (eat(tt.eq)) {\n const eqIndex = state.tokens.length - 1;\n parseMaybeAssign(isFor);\n state.tokens[eqIndex].rhsEndIndex = state.tokens.length;\n }\n if (!eat(tt.comma)) {\n break;\n }\n }\n}\n\nfunction parseVarHead(isBlockScope) {\n parseBindingAtom(isBlockScope);\n if (isTypeScriptEnabled) {\n tsAfterParseVarHead();\n } else if (isFlowEnabled) {\n flowAfterParseVarHead();\n }\n}\n\n// Parse a function declaration or literal (depending on the\n// `isStatement` parameter).\n\nexport function parseFunction(\n functionStart,\n isStatement,\n optionalId = false,\n) {\n if (match(tt.star)) {\n next();\n }\n\n if (isStatement && !optionalId && !match(tt.name) && !match(tt._yield)) {\n unexpected();\n }\n\n let nameScopeStartTokenIndex = null;\n\n if (match(tt.name)) {\n // Expression-style functions should limit their name's scope to the function body, so we make\n // a new function scope to enforce that.\n if (!isStatement) {\n nameScopeStartTokenIndex = state.tokens.length;\n state.scopeDepth++;\n }\n parseBindingIdentifier(false);\n }\n\n const startTokenIndex = state.tokens.length;\n state.scopeDepth++;\n parseFunctionParams();\n parseFunctionBodyAndFinish(functionStart);\n const endTokenIndex = state.tokens.length;\n // In addition to the block scope of the function body, we need a separate function-style scope\n // that includes the params.\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, true));\n state.scopeDepth--;\n if (nameScopeStartTokenIndex !== null) {\n state.scopes.push(new Scope(nameScopeStartTokenIndex, endTokenIndex, true));\n state.scopeDepth--;\n }\n}\n\nexport function parseFunctionParams(\n allowModifiers = false,\n funcContextId = 0,\n) {\n if (isTypeScriptEnabled) {\n tsStartParseFunctionParams();\n } else if (isFlowEnabled) {\n flowStartParseFunctionParams();\n }\n\n expect(tt.parenL);\n if (funcContextId) {\n state.tokens[state.tokens.length - 1].contextId = funcContextId;\n }\n parseBindingList(\n tt.parenR,\n false /* isBlockScope */,\n false /* allowEmpty */,\n allowModifiers,\n funcContextId,\n );\n if (funcContextId) {\n state.tokens[state.tokens.length - 1].contextId = funcContextId;\n }\n}\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\nexport function parseClass(isStatement, optionalId = false) {\n // Put a context ID on the class keyword, the open-brace, and the close-brace, so that later\n // code can easily navigate to meaningful points on the class.\n const contextId = getNextContextId();\n\n next();\n state.tokens[state.tokens.length - 1].contextId = contextId;\n state.tokens[state.tokens.length - 1].isExpression = !isStatement;\n // Like with functions, we declare a special \"name scope\" from the start of the name to the end\n // of the class, but only with expression-style classes, to represent the fact that the name is\n // available to the body of the class but not an outer declaration.\n let nameScopeStartTokenIndex = null;\n if (!isStatement) {\n nameScopeStartTokenIndex = state.tokens.length;\n state.scopeDepth++;\n }\n parseClassId(isStatement, optionalId);\n parseClassSuper();\n const openBraceIndex = state.tokens.length;\n parseClassBody(contextId);\n if (state.error) {\n return;\n }\n state.tokens[openBraceIndex].contextId = contextId;\n state.tokens[state.tokens.length - 1].contextId = contextId;\n if (nameScopeStartTokenIndex !== null) {\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(nameScopeStartTokenIndex, endTokenIndex, false));\n state.scopeDepth--;\n }\n}\n\nfunction isClassProperty() {\n return match(tt.eq) || match(tt.semi) || match(tt.braceR) || match(tt.bang) || match(tt.colon);\n}\n\nfunction isClassMethod() {\n return match(tt.parenL) || match(tt.lessThan);\n}\n\nfunction parseClassBody(classContextId) {\n expect(tt.braceL);\n\n while (!eat(tt.braceR) && !state.error) {\n if (eat(tt.semi)) {\n continue;\n }\n\n if (match(tt.at)) {\n parseDecorator();\n continue;\n }\n const memberStart = state.start;\n parseClassMember(memberStart, classContextId);\n }\n}\n\nfunction parseClassMember(memberStart, classContextId) {\n if (isTypeScriptEnabled) {\n tsParseModifiers([\n ContextualKeyword._declare,\n ContextualKeyword._public,\n ContextualKeyword._protected,\n ContextualKeyword._private,\n ContextualKeyword._override,\n ]);\n }\n let isStatic = false;\n if (match(tt.name) && state.contextualKeyword === ContextualKeyword._static) {\n parseIdentifier(); // eats 'static'\n if (isClassMethod()) {\n parseClassMethod(memberStart, /* isConstructor */ false);\n return;\n } else if (isClassProperty()) {\n parseClassProperty();\n return;\n }\n // otherwise something static\n state.tokens[state.tokens.length - 1].type = tt._static;\n isStatic = true;\n\n if (match(tt.braceL)) {\n // This is a static block. Mark the word \"static\" with the class context ID for class element\n // detection and parse as a regular block.\n state.tokens[state.tokens.length - 1].contextId = classContextId;\n parseBlock();\n return;\n }\n }\n\n parseClassMemberWithIsStatic(memberStart, isStatic, classContextId);\n}\n\nfunction parseClassMemberWithIsStatic(\n memberStart,\n isStatic,\n classContextId,\n) {\n if (isTypeScriptEnabled) {\n if (tsTryParseClassMemberWithIsStatic(isStatic)) {\n return;\n }\n }\n if (eat(tt.star)) {\n // a generator\n parseClassPropertyName(classContextId);\n parseClassMethod(memberStart, /* isConstructor */ false);\n return;\n }\n\n // Get the identifier name so we can tell if it's actually a keyword like \"async\", \"get\", or\n // \"set\".\n parseClassPropertyName(classContextId);\n let isConstructor = false;\n const token = state.tokens[state.tokens.length - 1];\n // We allow \"constructor\" as either an identifier or a string.\n if (token.contextualKeyword === ContextualKeyword._constructor) {\n isConstructor = true;\n }\n parsePostMemberNameModifiers();\n\n if (isClassMethod()) {\n parseClassMethod(memberStart, isConstructor);\n } else if (isClassProperty()) {\n parseClassProperty();\n } else if (token.contextualKeyword === ContextualKeyword._async && !isLineTerminator()) {\n state.tokens[state.tokens.length - 1].type = tt._async;\n // an async method\n const isGenerator = match(tt.star);\n if (isGenerator) {\n next();\n }\n\n // The so-called parsed name would have been \"async\": get the real name.\n parseClassPropertyName(classContextId);\n parsePostMemberNameModifiers();\n parseClassMethod(memberStart, false /* isConstructor */);\n } else if (\n (token.contextualKeyword === ContextualKeyword._get ||\n token.contextualKeyword === ContextualKeyword._set) &&\n !(isLineTerminator() && match(tt.star))\n ) {\n if (token.contextualKeyword === ContextualKeyword._get) {\n state.tokens[state.tokens.length - 1].type = tt._get;\n } else {\n state.tokens[state.tokens.length - 1].type = tt._set;\n }\n // `get\\n*` is an uninitialized property named 'get' followed by a generator.\n // a getter or setter\n // The so-called parsed name would have been \"get/set\": get the real name.\n parseClassPropertyName(classContextId);\n parseClassMethod(memberStart, /* isConstructor */ false);\n } else if (token.contextualKeyword === ContextualKeyword._accessor && !isLineTerminator()) {\n parseClassPropertyName(classContextId);\n parseClassProperty();\n } else if (isLineTerminator()) {\n // an uninitialized class property (due to ASI, since we don't otherwise recognize the next token)\n parseClassProperty();\n } else {\n unexpected();\n }\n}\n\nfunction parseClassMethod(functionStart, isConstructor) {\n if (isTypeScriptEnabled) {\n tsTryParseTypeParameters();\n } else if (isFlowEnabled) {\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n }\n parseMethod(functionStart, isConstructor);\n}\n\n// Return the name of the class property, if it is a simple identifier.\nexport function parseClassPropertyName(classContextId) {\n parsePropertyName(classContextId);\n}\n\nexport function parsePostMemberNameModifiers() {\n if (isTypeScriptEnabled) {\n const oldIsType = pushTypeContext(0);\n eat(tt.question);\n popTypeContext(oldIsType);\n }\n}\n\nexport function parseClassProperty() {\n if (isTypeScriptEnabled) {\n eatTypeToken(tt.bang);\n tsTryParseTypeAnnotation();\n } else if (isFlowEnabled) {\n if (match(tt.colon)) {\n flowParseTypeAnnotation();\n }\n }\n\n if (match(tt.eq)) {\n const equalsTokenIndex = state.tokens.length;\n next();\n parseMaybeAssign();\n state.tokens[equalsTokenIndex].rhsEndIndex = state.tokens.length;\n }\n semicolon();\n}\n\nfunction parseClassId(isStatement, optionalId = false) {\n if (\n isTypeScriptEnabled &&\n (!isStatement || optionalId) &&\n isContextual(ContextualKeyword._implements)\n ) {\n return;\n }\n\n if (match(tt.name)) {\n parseBindingIdentifier(true);\n }\n\n if (isTypeScriptEnabled) {\n tsTryParseTypeParameters();\n } else if (isFlowEnabled) {\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n }\n}\n\n// Returns true if there was a superclass.\nfunction parseClassSuper() {\n let hasSuper = false;\n if (eat(tt._extends)) {\n parseExprSubscripts();\n hasSuper = true;\n } else {\n hasSuper = false;\n }\n if (isTypeScriptEnabled) {\n tsAfterParseClassSuper(hasSuper);\n } else if (isFlowEnabled) {\n flowAfterParseClassSuper(hasSuper);\n }\n}\n\n// Parses module export declaration.\n\nexport function parseExport() {\n const exportIndex = state.tokens.length - 1;\n if (isTypeScriptEnabled) {\n if (tsTryParseExport()) {\n return;\n }\n }\n // export * from '...'\n if (shouldParseExportStar()) {\n parseExportStar();\n } else if (isExportDefaultSpecifier()) {\n // export default from\n parseIdentifier();\n if (match(tt.comma) && lookaheadType() === tt.star) {\n expect(tt.comma);\n expect(tt.star);\n expectContextual(ContextualKeyword._as);\n parseIdentifier();\n } else {\n parseExportSpecifiersMaybe();\n }\n parseExportFrom();\n } else if (eat(tt._default)) {\n // export default ...\n parseExportDefaultExpression();\n } else if (shouldParseExportDeclaration()) {\n parseExportDeclaration();\n } else {\n // export { x, y as z } [from '...']\n parseExportSpecifiers();\n parseExportFrom();\n }\n state.tokens[exportIndex].rhsEndIndex = state.tokens.length;\n}\n\nfunction parseExportDefaultExpression() {\n if (isTypeScriptEnabled) {\n if (tsTryParseExportDefaultExpression()) {\n return;\n }\n }\n if (isFlowEnabled) {\n if (flowTryParseExportDefaultExpression()) {\n return;\n }\n }\n const functionStart = state.start;\n if (eat(tt._function)) {\n parseFunction(functionStart, true, true);\n } else if (isContextual(ContextualKeyword._async) && lookaheadType() === tt._function) {\n // async function declaration\n eatContextual(ContextualKeyword._async);\n eat(tt._function);\n parseFunction(functionStart, true, true);\n } else if (match(tt._class)) {\n parseClass(true, true);\n } else if (match(tt.at)) {\n parseDecorators();\n parseClass(true, true);\n } else {\n parseMaybeAssign();\n semicolon();\n }\n}\n\nfunction parseExportDeclaration() {\n if (isTypeScriptEnabled) {\n tsParseExportDeclaration();\n } else if (isFlowEnabled) {\n flowParseExportDeclaration();\n } else {\n parseStatement(true);\n }\n}\n\nfunction isExportDefaultSpecifier() {\n if (isTypeScriptEnabled && tsIsDeclarationStart()) {\n return false;\n } else if (isFlowEnabled && flowShouldDisallowExportDefaultSpecifier()) {\n return false;\n }\n if (match(tt.name)) {\n return state.contextualKeyword !== ContextualKeyword._async;\n }\n\n if (!match(tt._default)) {\n return false;\n }\n\n const _next = nextTokenStart();\n const lookahead = lookaheadTypeAndKeyword();\n const hasFrom =\n lookahead.type === tt.name && lookahead.contextualKeyword === ContextualKeyword._from;\n if (lookahead.type === tt.comma) {\n return true;\n }\n // lookahead again when `export default from` is seen\n if (hasFrom) {\n const nextAfterFrom = input.charCodeAt(nextTokenStartSince(_next + 4));\n return nextAfterFrom === charCodes.quotationMark || nextAfterFrom === charCodes.apostrophe;\n }\n return false;\n}\n\nfunction parseExportSpecifiersMaybe() {\n if (eat(tt.comma)) {\n parseExportSpecifiers();\n }\n}\n\nexport function parseExportFrom() {\n if (eatContextual(ContextualKeyword._from)) {\n parseExprAtom();\n maybeParseImportAttributes();\n }\n semicolon();\n}\n\nfunction shouldParseExportStar() {\n if (isFlowEnabled) {\n return flowShouldParseExportStar();\n } else {\n return match(tt.star);\n }\n}\n\nfunction parseExportStar() {\n if (isFlowEnabled) {\n flowParseExportStar();\n } else {\n baseParseExportStar();\n }\n}\n\nexport function baseParseExportStar() {\n expect(tt.star);\n\n if (isContextual(ContextualKeyword._as)) {\n parseExportNamespace();\n } else {\n parseExportFrom();\n }\n}\n\nfunction parseExportNamespace() {\n next();\n state.tokens[state.tokens.length - 1].type = tt._as;\n parseIdentifier();\n parseExportSpecifiersMaybe();\n parseExportFrom();\n}\n\nfunction shouldParseExportDeclaration() {\n return (\n (isTypeScriptEnabled && tsIsDeclarationStart()) ||\n (isFlowEnabled && flowShouldParseExportDeclaration()) ||\n state.type === tt._var ||\n state.type === tt._const ||\n state.type === tt._let ||\n state.type === tt._function ||\n state.type === tt._class ||\n isContextual(ContextualKeyword._async) ||\n match(tt.at)\n );\n}\n\n// Parses a comma-separated list of module exports.\nexport function parseExportSpecifiers() {\n let first = true;\n\n // export { x, y as z } [from '...']\n expect(tt.braceL);\n\n while (!eat(tt.braceR) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n if (eat(tt.braceR)) {\n break;\n }\n }\n parseExportSpecifier();\n }\n}\n\nfunction parseExportSpecifier() {\n if (isTypeScriptEnabled) {\n tsParseExportSpecifier();\n return;\n }\n parseIdentifier();\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ExportAccess;\n if (eatContextual(ContextualKeyword._as)) {\n parseIdentifier();\n }\n}\n\n/**\n * Starting at the `module` token in an import, determine if it was truly an\n * import reflection token or just looks like one.\n *\n * Returns true for:\n * import module foo from \"foo\";\n * import module from from \"foo\";\n *\n * Returns false for:\n * import module from \"foo\";\n * import module, {bar} from \"foo\";\n */\nfunction isImportReflection() {\n const snapshot = state.snapshot();\n expectContextual(ContextualKeyword._module);\n if (eatContextual(ContextualKeyword._from)) {\n if (isContextual(ContextualKeyword._from)) {\n state.restoreFromSnapshot(snapshot);\n return true;\n } else {\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n } else if (match(tt.comma)) {\n state.restoreFromSnapshot(snapshot);\n return false;\n } else {\n state.restoreFromSnapshot(snapshot);\n return true;\n }\n}\n\n/**\n * Eat the \"module\" token from the import reflection proposal.\n * https://github.com/tc39/proposal-import-reflection\n */\nfunction parseMaybeImportReflection() {\n // isImportReflection does snapshot/restore, so only run it if we see the word\n // \"module\".\n if (isContextual(ContextualKeyword._module) && isImportReflection()) {\n next();\n }\n}\n\n// Parses import declaration.\n\nexport function parseImport() {\n if (isTypeScriptEnabled && match(tt.name) && lookaheadType() === tt.eq) {\n tsParseImportEqualsDeclaration();\n return;\n }\n if (isTypeScriptEnabled && isContextual(ContextualKeyword._type)) {\n const lookahead = lookaheadTypeAndKeyword();\n if (lookahead.type === tt.name && lookahead.contextualKeyword !== ContextualKeyword._from) {\n // One of these `import type` cases:\n // import type T = require('T');\n // import type A from 'A';\n expectContextual(ContextualKeyword._type);\n if (lookaheadType() === tt.eq) {\n tsParseImportEqualsDeclaration();\n return;\n }\n // If this is an `import type...from` statement, then we already ate the\n // type token, so proceed to the regular import parser.\n } else if (lookahead.type === tt.star || lookahead.type === tt.braceL) {\n // One of these `import type` cases, in which case we can eat the type token\n // and proceed as normal:\n // import type * as A from 'A';\n // import type {a} from 'A';\n expectContextual(ContextualKeyword._type);\n }\n // Otherwise, we are importing the name \"type\".\n }\n\n // import '...'\n if (match(tt.string)) {\n parseExprAtom();\n } else {\n parseMaybeImportReflection();\n parseImportSpecifiers();\n expectContextual(ContextualKeyword._from);\n parseExprAtom();\n }\n maybeParseImportAttributes();\n semicolon();\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction shouldParseDefaultImport() {\n return match(tt.name);\n}\n\nfunction parseImportSpecifierLocal() {\n parseImportedIdentifier();\n}\n\n// Parses a comma-separated list of module imports.\nfunction parseImportSpecifiers() {\n if (isFlowEnabled) {\n flowStartParseImportSpecifiers();\n }\n\n let first = true;\n if (shouldParseDefaultImport()) {\n // import defaultObj, { x, y as z } from '...'\n parseImportSpecifierLocal();\n\n if (!eat(tt.comma)) return;\n }\n\n if (match(tt.star)) {\n next();\n expectContextual(ContextualKeyword._as);\n\n parseImportSpecifierLocal();\n\n return;\n }\n\n expect(tt.braceL);\n while (!eat(tt.braceR) && !state.error) {\n if (first) {\n first = false;\n } else {\n // Detect an attempt to deep destructure\n if (eat(tt.colon)) {\n unexpected(\n \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n );\n }\n\n expect(tt.comma);\n if (eat(tt.braceR)) {\n break;\n }\n }\n\n parseImportSpecifier();\n }\n}\n\nfunction parseImportSpecifier() {\n if (isTypeScriptEnabled) {\n tsParseImportSpecifier();\n return;\n }\n if (isFlowEnabled) {\n flowParseImportSpecifier();\n return;\n }\n parseImportedIdentifier();\n if (isContextual(ContextualKeyword._as)) {\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportAccess;\n next();\n parseImportedIdentifier();\n }\n}\n\n/**\n * Parse import attributes like `with {type: \"json\"}`, or the legacy form\n * `assert {type: \"json\"}`.\n *\n * Import attributes technically have their own syntax, but are always parseable\n * as a plain JS object, so just do that for simplicity.\n */\nfunction maybeParseImportAttributes() {\n if (match(tt._with) || (isContextual(ContextualKeyword._assert) && !hasPrecedingLineBreak())) {\n next();\n parseObj(false, false);\n }\n}\n", "\nimport {nextToken, skipLineComment} from \"../tokenizer/index\";\nimport {charCodes} from \"../util/charcodes\";\nimport {input, state} from \"./base\";\nimport {parseTopLevel} from \"./statement\";\n\nexport function parseFile() {\n // If enabled, skip leading hashbang line.\n if (\n state.pos === 0 &&\n input.charCodeAt(0) === charCodes.numberSign &&\n input.charCodeAt(1) === charCodes.exclamationMark\n ) {\n skipLineComment(2);\n }\n nextToken();\n return parseTopLevel();\n}\n", "\n\nimport {augmentError, initParser, state} from \"./traverser/base\";\nimport {parseFile} from \"./traverser/index\";\n\nexport class File {\n \n \n\n constructor(tokens, scopes) {\n this.tokens = tokens;\n this.scopes = scopes;\n }\n}\n\nexport function parse(\n input,\n isJSXEnabled,\n isTypeScriptEnabled,\n isFlowEnabled,\n) {\n if (isFlowEnabled && isTypeScriptEnabled) {\n throw new Error(\"Cannot combine flow and typescript plugins.\");\n }\n initParser(input, isJSXEnabled, isTypeScriptEnabled, isFlowEnabled);\n const result = parseFile();\n if (state.error) {\n throw augmentError(state.error);\n }\n return result;\n}\n", "import {ContextualKeyword} from \"../parser/tokenizer/keywords\";\n\n\n/**\n * Determine whether this optional chain or nullish coalescing operation has any await statements in\n * it. If so, we'll need to transpile to an async operation.\n *\n * We compute this by walking the length of the operation and returning true if we see an await\n * keyword used as a real await (rather than an object key or property access). Nested optional\n * chain/nullish operations need to be tracked but don't silence await, but a nested async function\n * (or any other nested scope) will make the await not count.\n */\nexport default function isAsyncOperation(tokens) {\n let index = tokens.currentIndex();\n let depth = 0;\n const startToken = tokens.currentToken();\n do {\n const token = tokens.tokens[index];\n if (token.isOptionalChainStart) {\n depth++;\n }\n if (token.isOptionalChainEnd) {\n depth--;\n }\n depth += token.numNullishCoalesceStarts;\n depth -= token.numNullishCoalesceEnds;\n\n if (\n token.contextualKeyword === ContextualKeyword._await &&\n token.identifierRole == null &&\n token.scopeDepth === startToken.scopeDepth\n ) {\n return true;\n }\n index += 1;\n } while (depth > 0 && index < tokens.tokens.length);\n return false;\n}\n", "\n\n\nimport { TokenType as tt} from \"./parser/tokenizer/types\";\nimport isAsyncOperation from \"./util/isAsyncOperation\";\n\n\n\n\n\n\n\n\n\n\n\nexport default class TokenProcessor {\n __init() {this.resultCode = \"\"}\n // Array mapping input token index to optional string index position in the\n // output code.\n __init2() {this.resultMappings = new Array(this.tokens.length)}\n __init3() {this.tokenIndex = 0}\n\n constructor(\n code,\n tokens,\n isFlowEnabled,\n disableESTransforms,\n helperManager,\n ) {;this.code = code;this.tokens = tokens;this.isFlowEnabled = isFlowEnabled;this.disableESTransforms = disableESTransforms;this.helperManager = helperManager;TokenProcessor.prototype.__init.call(this);TokenProcessor.prototype.__init2.call(this);TokenProcessor.prototype.__init3.call(this);}\n\n /**\n * Snapshot the token state in a way that can be restored later, useful for\n * things like lookahead.\n *\n * resultMappings do not need to be copied since in all use cases, they will\n * be overwritten anyway after restore.\n */\n snapshot() {\n return {\n resultCode: this.resultCode,\n tokenIndex: this.tokenIndex,\n };\n }\n\n restoreToSnapshot(snapshot) {\n this.resultCode = snapshot.resultCode;\n this.tokenIndex = snapshot.tokenIndex;\n }\n\n /**\n * Remove and return the code generated since the snapshot, leaving the\n * current token position in-place. Unlike most TokenProcessor operations,\n * this operation can result in input/output line number mismatches because\n * the removed code may contain newlines, so this operation should be used\n * sparingly.\n */\n dangerouslyGetAndRemoveCodeSinceSnapshot(snapshot) {\n const result = this.resultCode.slice(snapshot.resultCode.length);\n this.resultCode = snapshot.resultCode;\n return result;\n }\n\n reset() {\n this.resultCode = \"\";\n this.resultMappings = new Array(this.tokens.length);\n this.tokenIndex = 0;\n }\n\n matchesContextualAtIndex(index, contextualKeyword) {\n return (\n this.matches1AtIndex(index, tt.name) &&\n this.tokens[index].contextualKeyword === contextualKeyword\n );\n }\n\n identifierNameAtIndex(index) {\n // TODO: We need to process escapes since technically you can have unicode escapes in variable\n // names.\n return this.identifierNameForToken(this.tokens[index]);\n }\n\n identifierNameAtRelativeIndex(relativeIndex) {\n return this.identifierNameForToken(this.tokenAtRelativeIndex(relativeIndex));\n }\n\n identifierName() {\n return this.identifierNameForToken(this.currentToken());\n }\n\n identifierNameForToken(token) {\n return this.code.slice(token.start, token.end);\n }\n\n rawCodeForToken(token) {\n return this.code.slice(token.start, token.end);\n }\n\n stringValueAtIndex(index) {\n return this.stringValueForToken(this.tokens[index]);\n }\n\n stringValue() {\n return this.stringValueForToken(this.currentToken());\n }\n\n stringValueForToken(token) {\n // This is used to identify when two imports are the same and to resolve TypeScript enum keys.\n // Ideally we'd process escapes within the strings, but for now we pretty much take the raw\n // code.\n return this.code.slice(token.start + 1, token.end - 1);\n }\n\n matches1AtIndex(index, t1) {\n return this.tokens[index].type === t1;\n }\n\n matches2AtIndex(index, t1, t2) {\n return this.tokens[index].type === t1 && this.tokens[index + 1].type === t2;\n }\n\n matches3AtIndex(index, t1, t2, t3) {\n return (\n this.tokens[index].type === t1 &&\n this.tokens[index + 1].type === t2 &&\n this.tokens[index + 2].type === t3\n );\n }\n\n matches1(t1) {\n return this.tokens[this.tokenIndex].type === t1;\n }\n\n matches2(t1, t2) {\n return this.tokens[this.tokenIndex].type === t1 && this.tokens[this.tokenIndex + 1].type === t2;\n }\n\n matches3(t1, t2, t3) {\n return (\n this.tokens[this.tokenIndex].type === t1 &&\n this.tokens[this.tokenIndex + 1].type === t2 &&\n this.tokens[this.tokenIndex + 2].type === t3\n );\n }\n\n matches4(t1, t2, t3, t4) {\n return (\n this.tokens[this.tokenIndex].type === t1 &&\n this.tokens[this.tokenIndex + 1].type === t2 &&\n this.tokens[this.tokenIndex + 2].type === t3 &&\n this.tokens[this.tokenIndex + 3].type === t4\n );\n }\n\n matches5(t1, t2, t3, t4, t5) {\n return (\n this.tokens[this.tokenIndex].type === t1 &&\n this.tokens[this.tokenIndex + 1].type === t2 &&\n this.tokens[this.tokenIndex + 2].type === t3 &&\n this.tokens[this.tokenIndex + 3].type === t4 &&\n this.tokens[this.tokenIndex + 4].type === t5\n );\n }\n\n matchesContextual(contextualKeyword) {\n return this.matchesContextualAtIndex(this.tokenIndex, contextualKeyword);\n }\n\n matchesContextIdAndLabel(type, contextId) {\n return this.matches1(type) && this.currentToken().contextId === contextId;\n }\n\n previousWhitespaceAndComments() {\n let whitespaceAndComments = this.code.slice(\n this.tokenIndex > 0 ? this.tokens[this.tokenIndex - 1].end : 0,\n this.tokenIndex < this.tokens.length ? this.tokens[this.tokenIndex].start : this.code.length,\n );\n if (this.isFlowEnabled) {\n whitespaceAndComments = whitespaceAndComments.replace(/@flow/g, \"\");\n }\n return whitespaceAndComments;\n }\n\n replaceToken(newCode) {\n this.resultCode += this.previousWhitespaceAndComments();\n this.appendTokenPrefix();\n this.resultMappings[this.tokenIndex] = this.resultCode.length;\n this.resultCode += newCode;\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n replaceTokenTrimmingLeftWhitespace(newCode) {\n this.resultCode += this.previousWhitespaceAndComments().replace(/[^\\r\\n]/g, \"\");\n this.appendTokenPrefix();\n this.resultMappings[this.tokenIndex] = this.resultCode.length;\n this.resultCode += newCode;\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n removeInitialToken() {\n this.replaceToken(\"\");\n }\n\n removeToken() {\n this.replaceTokenTrimmingLeftWhitespace(\"\");\n }\n\n /**\n * Remove all code until the next }, accounting for balanced braces.\n */\n removeBalancedCode() {\n let braceDepth = 0;\n while (!this.isAtEnd()) {\n if (this.matches1(tt.braceL)) {\n braceDepth++;\n } else if (this.matches1(tt.braceR)) {\n if (braceDepth === 0) {\n return;\n }\n braceDepth--;\n }\n this.removeToken();\n }\n }\n\n copyExpectedToken(tokenType) {\n if (this.tokens[this.tokenIndex].type !== tokenType) {\n throw new Error(`Expected token ${tokenType}`);\n }\n this.copyToken();\n }\n\n copyToken() {\n this.resultCode += this.previousWhitespaceAndComments();\n this.appendTokenPrefix();\n this.resultMappings[this.tokenIndex] = this.resultCode.length;\n this.resultCode += this.code.slice(\n this.tokens[this.tokenIndex].start,\n this.tokens[this.tokenIndex].end,\n );\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n copyTokenWithPrefix(prefix) {\n this.resultCode += this.previousWhitespaceAndComments();\n this.appendTokenPrefix();\n this.resultCode += prefix;\n this.resultMappings[this.tokenIndex] = this.resultCode.length;\n this.resultCode += this.code.slice(\n this.tokens[this.tokenIndex].start,\n this.tokens[this.tokenIndex].end,\n );\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n appendTokenPrefix() {\n const token = this.currentToken();\n if (token.numNullishCoalesceStarts || token.isOptionalChainStart) {\n token.isAsyncOperation = isAsyncOperation(this);\n }\n if (this.disableESTransforms) {\n return;\n }\n if (token.numNullishCoalesceStarts) {\n for (let i = 0; i < token.numNullishCoalesceStarts; i++) {\n if (token.isAsyncOperation) {\n this.resultCode += \"await \";\n this.resultCode += this.helperManager.getHelperName(\"asyncNullishCoalesce\");\n } else {\n this.resultCode += this.helperManager.getHelperName(\"nullishCoalesce\");\n }\n this.resultCode += \"(\";\n }\n }\n if (token.isOptionalChainStart) {\n if (token.isAsyncOperation) {\n this.resultCode += \"await \";\n }\n if (this.tokenIndex > 0 && this.tokenAtRelativeIndex(-1).type === tt._delete) {\n if (token.isAsyncOperation) {\n this.resultCode += this.helperManager.getHelperName(\"asyncOptionalChainDelete\");\n } else {\n this.resultCode += this.helperManager.getHelperName(\"optionalChainDelete\");\n }\n } else if (token.isAsyncOperation) {\n this.resultCode += this.helperManager.getHelperName(\"asyncOptionalChain\");\n } else {\n this.resultCode += this.helperManager.getHelperName(\"optionalChain\");\n }\n this.resultCode += \"([\";\n }\n }\n\n appendTokenSuffix() {\n const token = this.currentToken();\n if (token.isOptionalChainEnd && !this.disableESTransforms) {\n this.resultCode += \"])\";\n }\n if (token.numNullishCoalesceEnds && !this.disableESTransforms) {\n for (let i = 0; i < token.numNullishCoalesceEnds; i++) {\n this.resultCode += \"))\";\n }\n }\n }\n\n appendCode(code) {\n this.resultCode += code;\n }\n\n currentToken() {\n return this.tokens[this.tokenIndex];\n }\n\n currentTokenCode() {\n const token = this.currentToken();\n return this.code.slice(token.start, token.end);\n }\n\n tokenAtRelativeIndex(relativeIndex) {\n return this.tokens[this.tokenIndex + relativeIndex];\n }\n\n currentIndex() {\n return this.tokenIndex;\n }\n\n /**\n * Move to the next token. Only suitable in preprocessing steps. When\n * generating new code, you should use copyToken or removeToken.\n */\n nextToken() {\n if (this.tokenIndex === this.tokens.length) {\n throw new Error(\"Unexpectedly reached end of input.\");\n }\n this.tokenIndex++;\n }\n\n previousToken() {\n this.tokenIndex--;\n }\n\n finish() {\n if (this.tokenIndex !== this.tokens.length) {\n throw new Error(\"Tried to finish processing tokens before reaching the end.\");\n }\n this.resultCode += this.previousWhitespaceAndComments();\n return {code: this.resultCode, mappings: this.resultMappings};\n }\n\n isAtEnd() {\n return this.tokenIndex === this.tokens.length;\n }\n}\n", "\n\nimport {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Get information about the class fields for this class, given a token processor pointing to the\n * open-brace at the start of the class.\n */\nexport default function getClassInfo(\n rootTransformer,\n tokens,\n nameManager,\n disableESTransforms,\n) {\n const snapshot = tokens.snapshot();\n\n const headerInfo = processClassHeader(tokens);\n\n let constructorInitializerStatements = [];\n const instanceInitializerNames = [];\n const staticInitializerNames = [];\n let constructorInsertPos = null;\n const fields = [];\n const rangesToRemove = [];\n\n const classContextId = tokens.currentToken().contextId;\n if (classContextId == null) {\n throw new Error(\"Expected non-null class context ID on class open-brace.\");\n }\n\n tokens.nextToken();\n while (!tokens.matchesContextIdAndLabel(tt.braceR, classContextId)) {\n if (tokens.matchesContextual(ContextualKeyword._constructor) && !tokens.currentToken().isType) {\n ({constructorInitializerStatements, constructorInsertPos} = processConstructor(tokens));\n } else if (tokens.matches1(tt.semi)) {\n if (!disableESTransforms) {\n rangesToRemove.push({start: tokens.currentIndex(), end: tokens.currentIndex() + 1});\n }\n tokens.nextToken();\n } else if (tokens.currentToken().isType) {\n tokens.nextToken();\n } else {\n // Either a method or a field. Skip to the identifier part.\n const statementStartIndex = tokens.currentIndex();\n let isStatic = false;\n let isESPrivate = false;\n let isDeclareOrAbstract = false;\n while (isAccessModifier(tokens.currentToken())) {\n if (tokens.matches1(tt._static)) {\n isStatic = true;\n }\n if (tokens.matches1(tt.hash)) {\n isESPrivate = true;\n }\n if (tokens.matches1(tt._declare) || tokens.matches1(tt._abstract)) {\n isDeclareOrAbstract = true;\n }\n tokens.nextToken();\n }\n if (isStatic && tokens.matches1(tt.braceL)) {\n // This is a static block, so don't process it in any special way.\n skipToNextClassElement(tokens, classContextId);\n continue;\n }\n if (isESPrivate) {\n // Sucrase doesn't attempt to transpile private fields; just leave them as-is.\n skipToNextClassElement(tokens, classContextId);\n continue;\n }\n if (\n tokens.matchesContextual(ContextualKeyword._constructor) &&\n !tokens.currentToken().isType\n ) {\n ({constructorInitializerStatements, constructorInsertPos} = processConstructor(tokens));\n continue;\n }\n\n const nameStartIndex = tokens.currentIndex();\n skipFieldName(tokens);\n if (tokens.matches1(tt.lessThan) || tokens.matches1(tt.parenL)) {\n // This is a method, so nothing to process.\n skipToNextClassElement(tokens, classContextId);\n continue;\n }\n // There might be a type annotation that we need to skip.\n while (tokens.currentToken().isType) {\n tokens.nextToken();\n }\n if (tokens.matches1(tt.eq)) {\n const equalsIndex = tokens.currentIndex();\n // This is an initializer, so we need to wrap in an initializer method.\n const valueEnd = tokens.currentToken().rhsEndIndex;\n if (valueEnd == null) {\n throw new Error(\"Expected rhsEndIndex on class field assignment.\");\n }\n tokens.nextToken();\n while (tokens.currentIndex() < valueEnd) {\n rootTransformer.processToken();\n }\n let initializerName;\n if (isStatic) {\n initializerName = nameManager.claimFreeName(\"__initStatic\");\n staticInitializerNames.push(initializerName);\n } else {\n initializerName = nameManager.claimFreeName(\"__init\");\n instanceInitializerNames.push(initializerName);\n }\n // Fields start at the name, so `static x = 1;` has a field range of `x = 1;`.\n fields.push({\n initializerName,\n equalsIndex,\n start: nameStartIndex,\n end: tokens.currentIndex(),\n });\n } else if (!disableESTransforms || isDeclareOrAbstract) {\n // This is a regular field declaration, like `x;`. With the class transform enabled, we just\n // remove the line so that no output is produced. With the class transform disabled, we\n // usually want to preserve the declaration (but still strip types), but if the `declare`\n // or `abstract` keyword is specified, we should remove the line to avoid initializing the\n // value to undefined.\n rangesToRemove.push({start: statementStartIndex, end: tokens.currentIndex()});\n }\n }\n }\n\n tokens.restoreToSnapshot(snapshot);\n if (disableESTransforms) {\n // With ES transforms disabled, we don't want to transform regular class\n // field declarations, and we don't need to do any additional tricks to\n // reference the constructor for static init, but we still need to transform\n // TypeScript field initializers defined as constructor parameters and we\n // still need to remove `declare` fields. For now, we run the same code\n // path but omit any field information, as if the class had no field\n // declarations. In the future, when we fully drop the class fields\n // transform, we can simplify this code significantly.\n return {\n headerInfo,\n constructorInitializerStatements,\n instanceInitializerNames: [],\n staticInitializerNames: [],\n constructorInsertPos,\n fields: [],\n rangesToRemove,\n };\n } else {\n return {\n headerInfo,\n constructorInitializerStatements,\n instanceInitializerNames,\n staticInitializerNames,\n constructorInsertPos,\n fields,\n rangesToRemove,\n };\n }\n}\n\n/**\n * Move the token processor to the next method/field in the class.\n *\n * To do that, we seek forward to the next start of a class name (either an open\n * bracket or an identifier, or the closing curly brace), then seek backward to\n * include any access modifiers.\n */\nfunction skipToNextClassElement(tokens, classContextId) {\n tokens.nextToken();\n while (tokens.currentToken().contextId !== classContextId) {\n tokens.nextToken();\n }\n while (isAccessModifier(tokens.tokenAtRelativeIndex(-1))) {\n tokens.previousToken();\n }\n}\n\nfunction processClassHeader(tokens) {\n const classToken = tokens.currentToken();\n const contextId = classToken.contextId;\n if (contextId == null) {\n throw new Error(\"Expected context ID on class token.\");\n }\n const isExpression = classToken.isExpression;\n if (isExpression == null) {\n throw new Error(\"Expected isExpression on class token.\");\n }\n let className = null;\n let hasSuperclass = false;\n tokens.nextToken();\n if (tokens.matches1(tt.name)) {\n className = tokens.identifierName();\n }\n while (!tokens.matchesContextIdAndLabel(tt.braceL, contextId)) {\n // If this has a superclass, there will always be an `extends` token. If it doesn't have a\n // superclass, only type parameters and `implements` clauses can show up here, all of which\n // consist only of type tokens. A declaration like `class A<B extends C> {` should *not* count\n // as having a superclass.\n if (tokens.matches1(tt._extends) && !tokens.currentToken().isType) {\n hasSuperclass = true;\n }\n tokens.nextToken();\n }\n return {isExpression, className, hasSuperclass};\n}\n\n/**\n * Extract useful information out of a constructor, starting at the \"constructor\" name.\n */\nfunction processConstructor(tokens)\n\n\n {\n const constructorInitializerStatements = [];\n\n tokens.nextToken();\n const constructorContextId = tokens.currentToken().contextId;\n if (constructorContextId == null) {\n throw new Error(\"Expected context ID on open-paren starting constructor params.\");\n }\n // Advance through parameters looking for access modifiers.\n while (!tokens.matchesContextIdAndLabel(tt.parenR, constructorContextId)) {\n if (tokens.currentToken().contextId === constructorContextId) {\n // Current token is an open paren or comma just before a param, so check\n // that param for access modifiers.\n tokens.nextToken();\n if (isAccessModifier(tokens.currentToken())) {\n tokens.nextToken();\n while (isAccessModifier(tokens.currentToken())) {\n tokens.nextToken();\n }\n const token = tokens.currentToken();\n if (token.type !== tt.name) {\n throw new Error(\"Expected identifier after access modifiers in constructor arg.\");\n }\n const name = tokens.identifierNameForToken(token);\n constructorInitializerStatements.push(`this.${name} = ${name}`);\n }\n } else {\n tokens.nextToken();\n }\n }\n // )\n tokens.nextToken();\n // Constructor type annotations are invalid, but skip them anyway since\n // they're easy to skip.\n while (tokens.currentToken().isType) {\n tokens.nextToken();\n }\n let constructorInsertPos = tokens.currentIndex();\n\n // Advance through body looking for a super call.\n let foundSuperCall = false;\n while (!tokens.matchesContextIdAndLabel(tt.braceR, constructorContextId)) {\n if (!foundSuperCall && tokens.matches2(tt._super, tt.parenL)) {\n tokens.nextToken();\n const superCallContextId = tokens.currentToken().contextId;\n if (superCallContextId == null) {\n throw new Error(\"Expected a context ID on the super call\");\n }\n while (!tokens.matchesContextIdAndLabel(tt.parenR, superCallContextId)) {\n tokens.nextToken();\n }\n constructorInsertPos = tokens.currentIndex();\n foundSuperCall = true;\n }\n tokens.nextToken();\n }\n // }\n tokens.nextToken();\n\n return {constructorInitializerStatements, constructorInsertPos};\n}\n\n/**\n * Determine if this is any token that can go before the name in a method/field.\n */\nfunction isAccessModifier(token) {\n return [\n tt._async,\n tt._get,\n tt._set,\n tt.plus,\n tt.minus,\n tt._readonly,\n tt._static,\n tt._public,\n tt._private,\n tt._protected,\n tt._override,\n tt._abstract,\n tt.star,\n tt._declare,\n tt.hash,\n ].includes(token.type);\n}\n\n/**\n * The next token or set of tokens is either an identifier or an expression in square brackets, for\n * a method or field name.\n */\nfunction skipFieldName(tokens) {\n if (tokens.matches1(tt.bracketL)) {\n const startToken = tokens.currentToken();\n const classContextId = startToken.contextId;\n if (classContextId == null) {\n throw new Error(\"Expected class context ID on computed name open bracket.\");\n }\n while (!tokens.matchesContextIdAndLabel(tt.bracketR, classContextId)) {\n tokens.nextToken();\n }\n tokens.nextToken();\n } else {\n tokens.nextToken();\n }\n}\n", "import {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\nexport default function elideImportEquals(tokens) {\n // import\n tokens.removeInitialToken();\n // name\n tokens.removeToken();\n // =\n tokens.removeToken();\n // name or require\n tokens.removeToken();\n // Handle either `import A = require('A')` or `import A = B.C.D`.\n if (tokens.matches1(tt.parenL)) {\n // (\n tokens.removeToken();\n // path string\n tokens.removeToken();\n // )\n tokens.removeToken();\n } else {\n while (tokens.matches1(tt.dot)) {\n // .\n tokens.removeToken();\n // name\n tokens.removeToken();\n }\n }\n}\n", "import {isTopLevelDeclaration} from \"../parser/tokenizer\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n\n\n\n\n\nexport const EMPTY_DECLARATION_INFO = {\n typeDeclarations: new Set(),\n valueDeclarations: new Set(),\n};\n\n/**\n * Get all top-level identifiers that should be preserved when exported in TypeScript.\n *\n * Examples:\n * - If an identifier is declared as `const x`, then `export {x}` should be preserved.\n * - If it's declared as `type x`, then `export {x}` should be removed.\n * - If it's declared as both `const x` and `type x`, then the export should be preserved.\n * - Classes and enums should be preserved (even though they also introduce types).\n * - Imported identifiers should be preserved since we don't have enough information to\n * rule them out. --isolatedModules disallows re-exports, which catches errors here.\n */\nexport default function getDeclarationInfo(tokens) {\n const typeDeclarations = new Set();\n const valueDeclarations = new Set();\n for (let i = 0; i < tokens.tokens.length; i++) {\n const token = tokens.tokens[i];\n if (token.type === tt.name && isTopLevelDeclaration(token)) {\n if (token.isType) {\n typeDeclarations.add(tokens.identifierNameForToken(token));\n } else {\n valueDeclarations.add(tokens.identifierNameForToken(token));\n }\n }\n }\n return {typeDeclarations, valueDeclarations};\n}\n", "import {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n/**\n * Starting at `export {`, look ahead and return `true` if this is an\n * `export {...} from` statement and `false` if this is a plain multi-export.\n */\nexport default function isExportFrom(tokens) {\n let closeBraceIndex = tokens.currentIndex();\n while (!tokens.matches1AtIndex(closeBraceIndex, tt.braceR)) {\n closeBraceIndex++;\n }\n return (\n tokens.matchesContextualAtIndex(closeBraceIndex + 1, ContextualKeyword._from) &&\n tokens.matches1AtIndex(closeBraceIndex + 2, tt.string)\n );\n}\n", "import {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n/**\n * Starting at a potential `with` or (legacy) `assert` token, remove the import\n * attributes if they exist.\n */\nexport function removeMaybeImportAttributes(tokens) {\n if (\n tokens.matches2(tt._with, tt.braceL) ||\n (tokens.matches2(tt.name, tt.braceL) && tokens.matchesContextual(ContextualKeyword._assert))\n ) {\n // assert\n tokens.removeToken();\n // {\n tokens.removeToken();\n tokens.removeBalancedCode();\n // }\n tokens.removeToken();\n }\n}\n", "import {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n\n/**\n * Common method sharing code between CJS and ESM cases, since they're the same here.\n */\nexport default function shouldElideDefaultExport(\n isTypeScriptTransformEnabled,\n keepUnusedImports,\n tokens,\n declarationInfo,\n) {\n if (!isTypeScriptTransformEnabled || keepUnusedImports) {\n return false;\n }\n const exportToken = tokens.currentToken();\n if (exportToken.rhsEndIndex == null) {\n throw new Error(\"Expected non-null rhsEndIndex on export token.\");\n }\n // The export must be of the form `export default a` or `export default a;`.\n const numTokens = exportToken.rhsEndIndex - tokens.currentIndex();\n if (\n numTokens !== 3 &&\n !(numTokens === 4 && tokens.matches1AtIndex(exportToken.rhsEndIndex - 1, tt.semi))\n ) {\n return false;\n }\n const identifierToken = tokens.tokenAtRelativeIndex(2);\n if (identifierToken.type !== tt.name) {\n return false;\n }\n const exportedName = tokens.identifierNameForToken(identifierToken);\n return (\n declarationInfo.typeDeclarations.has(exportedName) &&\n !declarationInfo.valueDeclarations.has(exportedName)\n );\n}\n", "\n\n\nimport {IdentifierRole, isDeclaration, isObjectShorthandDeclaration} from \"../parser/tokenizer\";\nimport {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport elideImportEquals from \"../util/elideImportEquals\";\nimport getDeclarationInfo, {\n\n EMPTY_DECLARATION_INFO,\n} from \"../util/getDeclarationInfo\";\nimport getImportExportSpecifierInfo from \"../util/getImportExportSpecifierInfo\";\nimport isExportFrom from \"../util/isExportFrom\";\nimport {removeMaybeImportAttributes} from \"../util/removeMaybeImportAttributes\";\nimport shouldElideDefaultExport from \"../util/shouldElideDefaultExport\";\n\n\nimport Transformer from \"./Transformer\";\n\n/**\n * Class for editing import statements when we are transforming to commonjs.\n */\nexport default class CJSImportTransformer extends Transformer {\n __init() {this.hadExport = false}\n __init2() {this.hadNamedExport = false}\n __init3() {this.hadDefaultExport = false}\n \n\n constructor(\n rootTransformer,\n tokens,\n importProcessor,\n nameManager,\n helperManager,\n reactHotLoaderTransformer,\n enableLegacyBabel5ModuleInterop,\n enableLegacyTypeScriptModuleInterop,\n isTypeScriptTransformEnabled,\n isFlowTransformEnabled,\n preserveDynamicImport,\n keepUnusedImports,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.importProcessor = importProcessor;this.nameManager = nameManager;this.helperManager = helperManager;this.reactHotLoaderTransformer = reactHotLoaderTransformer;this.enableLegacyBabel5ModuleInterop = enableLegacyBabel5ModuleInterop;this.enableLegacyTypeScriptModuleInterop = enableLegacyTypeScriptModuleInterop;this.isTypeScriptTransformEnabled = isTypeScriptTransformEnabled;this.isFlowTransformEnabled = isFlowTransformEnabled;this.preserveDynamicImport = preserveDynamicImport;this.keepUnusedImports = keepUnusedImports;CJSImportTransformer.prototype.__init.call(this);CJSImportTransformer.prototype.__init2.call(this);CJSImportTransformer.prototype.__init3.call(this);;\n this.declarationInfo = isTypeScriptTransformEnabled\n ? getDeclarationInfo(tokens)\n : EMPTY_DECLARATION_INFO;\n }\n\n getPrefixCode() {\n let prefix = \"\";\n if (this.hadExport) {\n prefix += 'Object.defineProperty(exports, \"__esModule\", {value: true});';\n }\n return prefix;\n }\n\n getSuffixCode() {\n if (this.enableLegacyBabel5ModuleInterop && this.hadDefaultExport && !this.hadNamedExport) {\n return \"\\nmodule.exports = exports.default;\\n\";\n }\n return \"\";\n }\n\n process() {\n // TypeScript `import foo = require('foo');` should always just be translated to plain require.\n if (this.tokens.matches3(tt._import, tt.name, tt.eq)) {\n return this.processImportEquals();\n }\n if (this.tokens.matches1(tt._import)) {\n this.processImport();\n return true;\n }\n if (this.tokens.matches2(tt._export, tt.eq)) {\n this.tokens.replaceToken(\"module.exports\");\n return true;\n }\n if (this.tokens.matches1(tt._export) && !this.tokens.currentToken().isType) {\n this.hadExport = true;\n return this.processExport();\n }\n if (this.tokens.matches2(tt.name, tt.postIncDec)) {\n // Fall through to normal identifier matching if this doesn't apply.\n if (this.processPostIncDec()) {\n return true;\n }\n }\n if (this.tokens.matches1(tt.name) || this.tokens.matches1(tt.jsxName)) {\n return this.processIdentifier();\n }\n if (this.tokens.matches1(tt.eq)) {\n return this.processAssignment();\n }\n if (this.tokens.matches1(tt.assign)) {\n return this.processComplexAssignment();\n }\n if (this.tokens.matches1(tt.preIncDec)) {\n return this.processPreIncDec();\n }\n return false;\n }\n\n processImportEquals() {\n const importName = this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 1);\n if (this.importProcessor.shouldAutomaticallyElideImportedName(importName)) {\n // If this name is only used as a type, elide the whole import.\n elideImportEquals(this.tokens);\n } else {\n // Otherwise, switch `import` to `const`.\n this.tokens.replaceToken(\"const\");\n }\n return true;\n }\n\n /**\n * Transform this:\n * import foo, {bar} from 'baz';\n * into\n * var _baz = require('baz'); var _baz2 = _interopRequireDefault(_baz);\n *\n * The import code was already generated in the import preprocessing step, so\n * we just need to look it up.\n */\n processImport() {\n if (this.tokens.matches2(tt._import, tt.parenL)) {\n if (this.preserveDynamicImport) {\n // Bail out, only making progress for this one token.\n this.tokens.copyToken();\n return;\n }\n const requireWrapper = this.enableLegacyTypeScriptModuleInterop\n ? \"\"\n : `${this.helperManager.getHelperName(\"interopRequireWildcard\")}(`;\n this.tokens.replaceToken(`Promise.resolve().then(() => ${requireWrapper}require`);\n const contextId = this.tokens.currentToken().contextId;\n if (contextId == null) {\n throw new Error(\"Expected context ID on dynamic import invocation.\");\n }\n this.tokens.copyToken();\n while (!this.tokens.matchesContextIdAndLabel(tt.parenR, contextId)) {\n this.rootTransformer.processToken();\n }\n this.tokens.replaceToken(requireWrapper ? \")))\" : \"))\");\n return;\n }\n\n const shouldElideImport = this.removeImportAndDetectIfShouldElide();\n if (shouldElideImport) {\n this.tokens.removeToken();\n } else {\n const path = this.tokens.stringValue();\n this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(path));\n this.tokens.appendCode(this.importProcessor.claimImportCode(path));\n }\n removeMaybeImportAttributes(this.tokens);\n if (this.tokens.matches1(tt.semi)) {\n this.tokens.removeToken();\n }\n }\n\n /**\n * Erase this import (since any CJS output would be completely different), and\n * return true if this import is should be elided due to being a type-only\n * import. Such imports will not be emitted at all to avoid side effects.\n *\n * Import elision only happens with the TypeScript or Flow transforms enabled.\n *\n * TODO: This function has some awkward overlap with\n * CJSImportProcessor.pruneTypeOnlyImports , and the two should be unified.\n * That function handles TypeScript implicit import name elision, and removes\n * an import if all typical imported names (without `type`) are removed due\n * to being type-only imports. This function handles Flow import removal and\n * properly distinguishes `import 'foo'` from `import {} from 'foo'` for TS\n * purposes.\n *\n * The position should end at the import string.\n */\n removeImportAndDetectIfShouldElide() {\n this.tokens.removeInitialToken();\n if (\n this.tokens.matchesContextual(ContextualKeyword._type) &&\n !this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, tt.comma) &&\n !this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, ContextualKeyword._from)\n ) {\n // This is an \"import type\" statement, so exit early.\n this.removeRemainingImport();\n return true;\n }\n\n if (this.tokens.matches1(tt.name) || this.tokens.matches1(tt.star)) {\n // We have a default import or namespace import, so there must be some\n // non-type import.\n this.removeRemainingImport();\n return false;\n }\n\n if (this.tokens.matches1(tt.string)) {\n // This is a bare import, so we should proceed with the import.\n return false;\n }\n\n let foundNonTypeImport = false;\n let foundAnyNamedImport = false;\n while (!this.tokens.matches1(tt.string)) {\n // Check if any named imports are of the form \"foo\" or \"foo as bar\", with\n // no leading \"type\".\n if (\n (!foundNonTypeImport && this.tokens.matches1(tt.braceL)) ||\n this.tokens.matches1(tt.comma)\n ) {\n this.tokens.removeToken();\n if (!this.tokens.matches1(tt.braceR)) {\n foundAnyNamedImport = true;\n }\n if (\n this.tokens.matches2(tt.name, tt.comma) ||\n this.tokens.matches2(tt.name, tt.braceR) ||\n this.tokens.matches4(tt.name, tt.name, tt.name, tt.comma) ||\n this.tokens.matches4(tt.name, tt.name, tt.name, tt.braceR)\n ) {\n foundNonTypeImport = true;\n }\n }\n this.tokens.removeToken();\n }\n if (this.keepUnusedImports) {\n return false;\n }\n if (this.isTypeScriptTransformEnabled) {\n return !foundNonTypeImport;\n } else if (this.isFlowTransformEnabled) {\n // In Flow, unlike TS, `import {} from 'foo';` preserves the import.\n return foundAnyNamedImport && !foundNonTypeImport;\n } else {\n return false;\n }\n }\n\n removeRemainingImport() {\n while (!this.tokens.matches1(tt.string)) {\n this.tokens.removeToken();\n }\n }\n\n processIdentifier() {\n const token = this.tokens.currentToken();\n if (token.shadowsGlobal) {\n return false;\n }\n\n if (token.identifierRole === IdentifierRole.ObjectShorthand) {\n return this.processObjectShorthand();\n }\n\n if (token.identifierRole !== IdentifierRole.Access) {\n return false;\n }\n const replacement = this.importProcessor.getIdentifierReplacement(\n this.tokens.identifierNameForToken(token),\n );\n if (!replacement) {\n return false;\n }\n // Tolerate any number of closing parens while looking for an opening paren\n // that indicates a function call.\n let possibleOpenParenIndex = this.tokens.currentIndex() + 1;\n while (\n possibleOpenParenIndex < this.tokens.tokens.length &&\n this.tokens.tokens[possibleOpenParenIndex].type === tt.parenR\n ) {\n possibleOpenParenIndex++;\n }\n // Avoid treating imported functions as methods of their `exports` object\n // by using `(0, f)` when the identifier is in a paren expression. Else\n // use `Function.prototype.call` when the identifier is a guaranteed\n // function call. When using `call`, pass undefined as the context.\n if (this.tokens.tokens[possibleOpenParenIndex].type === tt.parenL) {\n if (\n this.tokens.tokenAtRelativeIndex(1).type === tt.parenL &&\n this.tokens.tokenAtRelativeIndex(-1).type !== tt._new\n ) {\n this.tokens.replaceToken(`${replacement}.call(void 0, `);\n // Remove the old paren.\n this.tokens.removeToken();\n // Balance out the new paren.\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n } else {\n // See here: http://2ality.com/2015/12/references.html\n this.tokens.replaceToken(`(0, ${replacement})`);\n }\n } else {\n this.tokens.replaceToken(replacement);\n }\n return true;\n }\n\n processObjectShorthand() {\n const identifier = this.tokens.identifierName();\n const replacement = this.importProcessor.getIdentifierReplacement(identifier);\n if (!replacement) {\n return false;\n }\n this.tokens.replaceToken(`${identifier}: ${replacement}`);\n return true;\n }\n\n processExport() {\n if (\n this.tokens.matches2(tt._export, tt._enum) ||\n this.tokens.matches3(tt._export, tt._const, tt._enum)\n ) {\n this.hadNamedExport = true;\n // Let the TypeScript transform handle it.\n return false;\n }\n if (this.tokens.matches2(tt._export, tt._default)) {\n if (this.tokens.matches3(tt._export, tt._default, tt._enum)) {\n this.hadDefaultExport = true;\n // Flow export default enums need some special handling, so handle them\n // in that tranform rather than this one.\n return false;\n }\n this.processExportDefault();\n return true;\n } else if (this.tokens.matches2(tt._export, tt.braceL)) {\n this.processExportBindings();\n return true;\n } else if (\n this.tokens.matches2(tt._export, tt.name) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, ContextualKeyword._type)\n ) {\n // export type {a};\n // export type {a as b};\n // export type {a} from './b';\n // export type * from './b';\n // export type * as ns from './b';\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n if (this.tokens.matches1(tt.braceL)) {\n while (!this.tokens.matches1(tt.braceR)) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n } else {\n // *\n this.tokens.removeToken();\n if (this.tokens.matches1(tt._as)) {\n // as\n this.tokens.removeToken();\n // ns\n this.tokens.removeToken();\n }\n }\n // Remove type re-export `... } from './T'`\n if (\n this.tokens.matchesContextual(ContextualKeyword._from) &&\n this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, tt.string)\n ) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n removeMaybeImportAttributes(this.tokens);\n }\n return true;\n }\n this.hadNamedExport = true;\n if (\n this.tokens.matches2(tt._export, tt._var) ||\n this.tokens.matches2(tt._export, tt._let) ||\n this.tokens.matches2(tt._export, tt._const)\n ) {\n this.processExportVar();\n return true;\n } else if (\n this.tokens.matches2(tt._export, tt._function) ||\n // export async function\n this.tokens.matches3(tt._export, tt.name, tt._function)\n ) {\n this.processExportFunction();\n return true;\n } else if (\n this.tokens.matches2(tt._export, tt._class) ||\n this.tokens.matches3(tt._export, tt._abstract, tt._class) ||\n this.tokens.matches2(tt._export, tt.at)\n ) {\n this.processExportClass();\n return true;\n } else if (this.tokens.matches2(tt._export, tt.star)) {\n this.processExportStar();\n return true;\n } else {\n throw new Error(\"Unrecognized export syntax.\");\n }\n }\n\n processAssignment() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index - 1];\n // If the LHS is a type identifier, this must be a declaration like `let a: b = c;`,\n // with `b` as the identifier, so nothing needs to be done in that case.\n if (identifierToken.isType || identifierToken.type !== tt.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n if (index >= 2 && this.tokens.matches1AtIndex(index - 2, tt.dot)) {\n return false;\n }\n if (index >= 2 && [tt._var, tt._let, tt._const].includes(this.tokens.tokens[index - 2].type)) {\n // Declarations don't need an extra assignment. This doesn't avoid the\n // assignment for comma-separated declarations, but it's still correct\n // since the assignment is just redundant.\n return false;\n }\n const assignmentSnippet = this.importProcessor.resolveExportBinding(\n this.tokens.identifierNameForToken(identifierToken),\n );\n if (!assignmentSnippet) {\n return false;\n }\n this.tokens.copyToken();\n this.tokens.appendCode(` ${assignmentSnippet} =`);\n return true;\n }\n\n /**\n * Process something like `a += 3`, where `a` might be an exported value.\n */\n processComplexAssignment() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index - 1];\n if (identifierToken.type !== tt.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n if (index >= 2 && this.tokens.matches1AtIndex(index - 2, tt.dot)) {\n return false;\n }\n const assignmentSnippet = this.importProcessor.resolveExportBinding(\n this.tokens.identifierNameForToken(identifierToken),\n );\n if (!assignmentSnippet) {\n return false;\n }\n this.tokens.appendCode(` = ${assignmentSnippet}`);\n this.tokens.copyToken();\n return true;\n }\n\n /**\n * Process something like `++a`, where `a` might be an exported value.\n */\n processPreIncDec() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index + 1];\n if (identifierToken.type !== tt.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n // Ignore things like ++a.b and ++a[b] and ++a().b.\n if (\n index + 2 < this.tokens.tokens.length &&\n (this.tokens.matches1AtIndex(index + 2, tt.dot) ||\n this.tokens.matches1AtIndex(index + 2, tt.bracketL) ||\n this.tokens.matches1AtIndex(index + 2, tt.parenL))\n ) {\n return false;\n }\n const identifierName = this.tokens.identifierNameForToken(identifierToken);\n const assignmentSnippet = this.importProcessor.resolveExportBinding(identifierName);\n if (!assignmentSnippet) {\n return false;\n }\n this.tokens.appendCode(`${assignmentSnippet} = `);\n this.tokens.copyToken();\n return true;\n }\n\n /**\n * Process something like `a++`, where `a` might be an exported value.\n * This starts at the `a`, not at the `++`.\n */\n processPostIncDec() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index];\n const operatorToken = this.tokens.tokens[index + 1];\n if (identifierToken.type !== tt.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n if (index >= 1 && this.tokens.matches1AtIndex(index - 1, tt.dot)) {\n return false;\n }\n const identifierName = this.tokens.identifierNameForToken(identifierToken);\n const assignmentSnippet = this.importProcessor.resolveExportBinding(identifierName);\n if (!assignmentSnippet) {\n return false;\n }\n const operatorCode = this.tokens.rawCodeForToken(operatorToken);\n // We might also replace the identifier with something like exports.x, so\n // do that replacement here as well.\n const base = this.importProcessor.getIdentifierReplacement(identifierName) || identifierName;\n if (operatorCode === \"++\") {\n this.tokens.replaceToken(`(${base} = ${assignmentSnippet} = ${base} + 1, ${base} - 1)`);\n } else if (operatorCode === \"--\") {\n this.tokens.replaceToken(`(${base} = ${assignmentSnippet} = ${base} - 1, ${base} + 1)`);\n } else {\n throw new Error(`Unexpected operator: ${operatorCode}`);\n }\n this.tokens.removeToken();\n return true;\n }\n\n processExportDefault() {\n let exportedRuntimeValue = true;\n if (\n this.tokens.matches4(tt._export, tt._default, tt._function, tt.name) ||\n // export default async function\n (this.tokens.matches5(tt._export, tt._default, tt.name, tt._function, tt.name) &&\n this.tokens.matchesContextualAtIndex(\n this.tokens.currentIndex() + 2,\n ContextualKeyword._async,\n ))\n ) {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n // Named function export case: change it to a top-level function\n // declaration followed by exports statement.\n const name = this.processNamedFunction();\n this.tokens.appendCode(` exports.default = ${name};`);\n } else if (\n this.tokens.matches4(tt._export, tt._default, tt._class, tt.name) ||\n this.tokens.matches5(tt._export, tt._default, tt._abstract, tt._class, tt.name) ||\n this.tokens.matches3(tt._export, tt._default, tt.at)\n ) {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n this.copyDecorators();\n if (this.tokens.matches1(tt._abstract)) {\n this.tokens.removeToken();\n }\n const name = this.rootTransformer.processNamedClass();\n this.tokens.appendCode(` exports.default = ${name};`);\n // After this point, this is a plain \"export default E\" statement.\n } else if (\n shouldElideDefaultExport(\n this.isTypeScriptTransformEnabled,\n this.keepUnusedImports,\n this.tokens,\n this.declarationInfo,\n )\n ) {\n // If the exported value is just an identifier and should be elided by TypeScript\n // rules, then remove it entirely. It will always have the form `export default e`,\n // where `e` is an identifier.\n exportedRuntimeValue = false;\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n } else if (this.reactHotLoaderTransformer) {\n // We need to assign E to a variable. Change \"export default E\" to\n // \"let _default; exports.default = _default = E\"\n const defaultVarName = this.nameManager.claimFreeName(\"_default\");\n this.tokens.replaceToken(`let ${defaultVarName}; exports.`);\n this.tokens.copyToken();\n this.tokens.appendCode(` = ${defaultVarName} =`);\n this.reactHotLoaderTransformer.setExtractedDefaultExportName(defaultVarName);\n } else {\n // Change \"export default E\" to \"exports.default = E\"\n this.tokens.replaceToken(\"exports.\");\n this.tokens.copyToken();\n this.tokens.appendCode(\" =\");\n }\n if (exportedRuntimeValue) {\n this.hadDefaultExport = true;\n }\n }\n\n copyDecorators() {\n while (this.tokens.matches1(tt.at)) {\n this.tokens.copyToken();\n if (this.tokens.matches1(tt.parenL)) {\n this.tokens.copyExpectedToken(tt.parenL);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n } else {\n this.tokens.copyExpectedToken(tt.name);\n while (this.tokens.matches1(tt.dot)) {\n this.tokens.copyExpectedToken(tt.dot);\n this.tokens.copyExpectedToken(tt.name);\n }\n if (this.tokens.matches1(tt.parenL)) {\n this.tokens.copyExpectedToken(tt.parenL);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n }\n }\n }\n }\n\n /**\n * Transform a declaration like `export var`, `export let`, or `export const`.\n */\n processExportVar() {\n if (this.isSimpleExportVar()) {\n this.processSimpleExportVar();\n } else {\n this.processComplexExportVar();\n }\n }\n\n /**\n * Determine if the export is of the form:\n * export var/let/const [varName] = [expr];\n * In other words, determine if function name inference might apply.\n */\n isSimpleExportVar() {\n let tokenIndex = this.tokens.currentIndex();\n // export\n tokenIndex++;\n // var/let/const\n tokenIndex++;\n if (!this.tokens.matches1AtIndex(tokenIndex, tt.name)) {\n return false;\n }\n tokenIndex++;\n while (tokenIndex < this.tokens.tokens.length && this.tokens.tokens[tokenIndex].isType) {\n tokenIndex++;\n }\n if (!this.tokens.matches1AtIndex(tokenIndex, tt.eq)) {\n return false;\n }\n return true;\n }\n\n /**\n * Transform an `export var` declaration initializing a single variable.\n *\n * For example, this:\n * export const f = () => {};\n * becomes this:\n * const f = () => {}; exports.f = f;\n *\n * The variable is unused (e.g. exports.f has the true value of the export).\n * We need to produce an assignment of this form so that the function will\n * have an inferred name of \"f\", which wouldn't happen in the more general\n * case below.\n */\n processSimpleExportVar() {\n // export\n this.tokens.removeInitialToken();\n // var/let/const\n this.tokens.copyToken();\n const varName = this.tokens.identifierName();\n // x: number -> x\n while (!this.tokens.matches1(tt.eq)) {\n this.rootTransformer.processToken();\n }\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n while (this.tokens.currentIndex() < endIndex) {\n this.rootTransformer.processToken();\n }\n this.tokens.appendCode(`; exports.${varName} = ${varName}`);\n }\n\n /**\n * Transform normal declaration exports, including handling destructuring.\n * For example, this:\n * export const {x: [a = 2, b], c} = d;\n * becomes this:\n * ({x: [exports.a = 2, exports.b], c: exports.c} = d;)\n */\n processComplexExportVar() {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n const needsParens = this.tokens.matches1(tt.braceL);\n if (needsParens) {\n this.tokens.appendCode(\"(\");\n }\n\n let depth = 0;\n while (true) {\n if (\n this.tokens.matches1(tt.braceL) ||\n this.tokens.matches1(tt.dollarBraceL) ||\n this.tokens.matches1(tt.bracketL)\n ) {\n depth++;\n this.tokens.copyToken();\n } else if (this.tokens.matches1(tt.braceR) || this.tokens.matches1(tt.bracketR)) {\n depth--;\n this.tokens.copyToken();\n } else if (\n depth === 0 &&\n !this.tokens.matches1(tt.name) &&\n !this.tokens.currentToken().isType\n ) {\n break;\n } else if (this.tokens.matches1(tt.eq)) {\n // Default values might have assignments in the RHS that we want to ignore, so skip past\n // them.\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n while (this.tokens.currentIndex() < endIndex) {\n this.rootTransformer.processToken();\n }\n } else {\n const token = this.tokens.currentToken();\n if (isDeclaration(token)) {\n const name = this.tokens.identifierName();\n let replacement = this.importProcessor.getIdentifierReplacement(name);\n if (replacement === null) {\n throw new Error(`Expected a replacement for ${name} in \\`export var\\` syntax.`);\n }\n if (isObjectShorthandDeclaration(token)) {\n replacement = `${name}: ${replacement}`;\n }\n this.tokens.replaceToken(replacement);\n } else {\n this.rootTransformer.processToken();\n }\n }\n }\n\n if (needsParens) {\n // Seek to the end of the RHS.\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n while (this.tokens.currentIndex() < endIndex) {\n this.rootTransformer.processToken();\n }\n this.tokens.appendCode(\")\");\n }\n }\n\n /**\n * Transform this:\n * export function foo() {}\n * into this:\n * function foo() {} exports.foo = foo;\n */\n processExportFunction() {\n this.tokens.replaceToken(\"\");\n const name = this.processNamedFunction();\n this.tokens.appendCode(` exports.${name} = ${name};`);\n }\n\n /**\n * Skip past a function with a name and return that name.\n */\n processNamedFunction() {\n if (this.tokens.matches1(tt._function)) {\n this.tokens.copyToken();\n } else if (this.tokens.matches2(tt.name, tt._function)) {\n if (!this.tokens.matchesContextual(ContextualKeyword._async)) {\n throw new Error(\"Expected async keyword in function export.\");\n }\n this.tokens.copyToken();\n this.tokens.copyToken();\n }\n if (this.tokens.matches1(tt.star)) {\n this.tokens.copyToken();\n }\n if (!this.tokens.matches1(tt.name)) {\n throw new Error(\"Expected identifier for exported function name.\");\n }\n const name = this.tokens.identifierName();\n this.tokens.copyToken();\n if (this.tokens.currentToken().isType) {\n this.tokens.removeInitialToken();\n while (this.tokens.currentToken().isType) {\n this.tokens.removeToken();\n }\n }\n this.tokens.copyExpectedToken(tt.parenL);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n this.rootTransformer.processPossibleTypeRange();\n this.tokens.copyExpectedToken(tt.braceL);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.braceR);\n return name;\n }\n\n /**\n * Transform this:\n * export class A {}\n * into this:\n * class A {} exports.A = A;\n */\n processExportClass() {\n this.tokens.removeInitialToken();\n this.copyDecorators();\n if (this.tokens.matches1(tt._abstract)) {\n this.tokens.removeToken();\n }\n const name = this.rootTransformer.processNamedClass();\n this.tokens.appendCode(` exports.${name} = ${name};`);\n }\n\n /**\n * Transform this:\n * export {a, b as c};\n * into this:\n * exports.a = a; exports.c = b;\n *\n * OR\n *\n * Transform this:\n * export {a, b as c} from './foo';\n * into the pre-generated Object.defineProperty code from the ImportProcessor.\n *\n * For the first case, if the TypeScript transform is enabled, we need to skip\n * exports that are only defined as types.\n */\n processExportBindings() {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n\n const isReExport = isExportFrom(this.tokens);\n\n const exportStatements = [];\n while (true) {\n if (this.tokens.matches1(tt.braceR)) {\n this.tokens.removeToken();\n break;\n }\n\n const specifierInfo = getImportExportSpecifierInfo(this.tokens);\n\n while (this.tokens.currentIndex() < specifierInfo.endIndex) {\n this.tokens.removeToken();\n }\n\n const shouldRemoveExport =\n specifierInfo.isType ||\n (!isReExport && this.shouldElideExportedIdentifier(specifierInfo.leftName));\n if (!shouldRemoveExport) {\n const exportedName = specifierInfo.rightName;\n if (exportedName === \"default\") {\n this.hadDefaultExport = true;\n } else {\n this.hadNamedExport = true;\n }\n const localName = specifierInfo.leftName;\n const newLocalName = this.importProcessor.getIdentifierReplacement(localName);\n exportStatements.push(`exports.${exportedName} = ${newLocalName || localName};`);\n }\n\n if (this.tokens.matches1(tt.braceR)) {\n this.tokens.removeToken();\n break;\n }\n if (this.tokens.matches2(tt.comma, tt.braceR)) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n break;\n } else if (this.tokens.matches1(tt.comma)) {\n this.tokens.removeToken();\n } else {\n throw new Error(`Unexpected token: ${JSON.stringify(this.tokens.currentToken())}`);\n }\n }\n\n if (this.tokens.matchesContextual(ContextualKeyword._from)) {\n // This is an export...from, so throw away the normal named export code\n // and use the Object.defineProperty code from ImportProcessor.\n this.tokens.removeToken();\n const path = this.tokens.stringValue();\n this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(path));\n removeMaybeImportAttributes(this.tokens);\n } else {\n // This is a normal named export, so use that.\n this.tokens.appendCode(exportStatements.join(\" \"));\n }\n\n if (this.tokens.matches1(tt.semi)) {\n this.tokens.removeToken();\n }\n }\n\n processExportStar() {\n this.tokens.removeInitialToken();\n while (!this.tokens.matches1(tt.string)) {\n this.tokens.removeToken();\n }\n const path = this.tokens.stringValue();\n this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(path));\n removeMaybeImportAttributes(this.tokens);\n if (this.tokens.matches1(tt.semi)) {\n this.tokens.removeToken();\n }\n }\n\n shouldElideExportedIdentifier(name) {\n return (\n this.isTypeScriptTransformEnabled &&\n !this.keepUnusedImports &&\n !this.declarationInfo.valueDeclarations.has(name)\n );\n }\n}\n", "\n\n\nimport {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport elideImportEquals from \"../util/elideImportEquals\";\nimport getDeclarationInfo, {\n\n EMPTY_DECLARATION_INFO,\n} from \"../util/getDeclarationInfo\";\nimport getImportExportSpecifierInfo from \"../util/getImportExportSpecifierInfo\";\nimport {getNonTypeIdentifiers} from \"../util/getNonTypeIdentifiers\";\nimport isExportFrom from \"../util/isExportFrom\";\nimport {removeMaybeImportAttributes} from \"../util/removeMaybeImportAttributes\";\nimport shouldElideDefaultExport from \"../util/shouldElideDefaultExport\";\n\nimport Transformer from \"./Transformer\";\n\n/**\n * Class for editing import statements when we are keeping the code as ESM. We still need to remove\n * type-only imports in TypeScript and Flow.\n */\nexport default class ESMImportTransformer extends Transformer {\n \n \n \n\n constructor(\n tokens,\n nameManager,\n helperManager,\n reactHotLoaderTransformer,\n isTypeScriptTransformEnabled,\n isFlowTransformEnabled,\n keepUnusedImports,\n options,\n ) {\n super();this.tokens = tokens;this.nameManager = nameManager;this.helperManager = helperManager;this.reactHotLoaderTransformer = reactHotLoaderTransformer;this.isTypeScriptTransformEnabled = isTypeScriptTransformEnabled;this.isFlowTransformEnabled = isFlowTransformEnabled;this.keepUnusedImports = keepUnusedImports;;\n this.nonTypeIdentifiers =\n isTypeScriptTransformEnabled && !keepUnusedImports\n ? getNonTypeIdentifiers(tokens, options)\n : new Set();\n this.declarationInfo =\n isTypeScriptTransformEnabled && !keepUnusedImports\n ? getDeclarationInfo(tokens)\n : EMPTY_DECLARATION_INFO;\n this.injectCreateRequireForImportRequire = Boolean(options.injectCreateRequireForImportRequire);\n }\n\n process() {\n // TypeScript `import foo = require('foo');` should always just be translated to plain require.\n if (this.tokens.matches3(tt._import, tt.name, tt.eq)) {\n return this.processImportEquals();\n }\n if (\n this.tokens.matches4(tt._import, tt.name, tt.name, tt.eq) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, ContextualKeyword._type)\n ) {\n // import type T = require('T')\n this.tokens.removeInitialToken();\n // This construct is always exactly 8 tokens long, so remove the 7 remaining tokens.\n for (let i = 0; i < 7; i++) {\n this.tokens.removeToken();\n }\n return true;\n }\n if (this.tokens.matches2(tt._export, tt.eq)) {\n this.tokens.replaceToken(\"module.exports\");\n return true;\n }\n if (\n this.tokens.matches5(tt._export, tt._import, tt.name, tt.name, tt.eq) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 2, ContextualKeyword._type)\n ) {\n // export import type T = require('T')\n this.tokens.removeInitialToken();\n // This construct is always exactly 9 tokens long, so remove the 8 remaining tokens.\n for (let i = 0; i < 8; i++) {\n this.tokens.removeToken();\n }\n return true;\n }\n if (this.tokens.matches1(tt._import)) {\n return this.processImport();\n }\n if (this.tokens.matches2(tt._export, tt._default)) {\n return this.processExportDefault();\n }\n if (this.tokens.matches2(tt._export, tt.braceL)) {\n return this.processNamedExports();\n }\n if (\n this.tokens.matches2(tt._export, tt.name) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, ContextualKeyword._type)\n ) {\n // export type {a};\n // export type {a as b};\n // export type {a} from './b';\n // export type * from './b';\n // export type * as ns from './b';\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n if (this.tokens.matches1(tt.braceL)) {\n while (!this.tokens.matches1(tt.braceR)) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n } else {\n // *\n this.tokens.removeToken();\n if (this.tokens.matches1(tt._as)) {\n // as\n this.tokens.removeToken();\n // ns\n this.tokens.removeToken();\n }\n }\n // Remove type re-export `... } from './T'`\n if (\n this.tokens.matchesContextual(ContextualKeyword._from) &&\n this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, tt.string)\n ) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n removeMaybeImportAttributes(this.tokens);\n }\n return true;\n }\n return false;\n }\n\n processImportEquals() {\n const importName = this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 1);\n if (this.shouldAutomaticallyElideImportedName(importName)) {\n // If this name is only used as a type, elide the whole import.\n elideImportEquals(this.tokens);\n } else if (this.injectCreateRequireForImportRequire) {\n // We're using require in an environment (Node ESM) that doesn't provide\n // it as a global, so generate a helper to import it.\n // import -> const\n this.tokens.replaceToken(\"const\");\n // Foo\n this.tokens.copyToken();\n // =\n this.tokens.copyToken();\n // require\n this.tokens.replaceToken(this.helperManager.getHelperName(\"require\"));\n } else {\n // Otherwise, just switch `import` to `const`.\n this.tokens.replaceToken(\"const\");\n }\n return true;\n }\n\n processImport() {\n if (this.tokens.matches2(tt._import, tt.parenL)) {\n // Dynamic imports don't need to be transformed.\n return false;\n }\n\n const snapshot = this.tokens.snapshot();\n const allImportsRemoved = this.removeImportTypeBindings();\n if (allImportsRemoved) {\n this.tokens.restoreToSnapshot(snapshot);\n while (!this.tokens.matches1(tt.string)) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n removeMaybeImportAttributes(this.tokens);\n if (this.tokens.matches1(tt.semi)) {\n this.tokens.removeToken();\n }\n }\n return true;\n }\n\n /**\n * Remove type bindings from this import, leaving the rest of the import intact.\n *\n * Return true if this import was ONLY types, and thus is eligible for removal. This will bail out\n * of the replacement operation, so we can return early here.\n */\n removeImportTypeBindings() {\n this.tokens.copyExpectedToken(tt._import);\n if (\n this.tokens.matchesContextual(ContextualKeyword._type) &&\n !this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, tt.comma) &&\n !this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, ContextualKeyword._from)\n ) {\n // This is an \"import type\" statement, so exit early.\n return true;\n }\n\n if (this.tokens.matches1(tt.string)) {\n // This is a bare import, so we should proceed with the import.\n this.tokens.copyToken();\n return false;\n }\n\n // Skip the \"module\" token in import reflection.\n if (\n this.tokens.matchesContextual(ContextualKeyword._module) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 2, ContextualKeyword._from)\n ) {\n this.tokens.copyToken();\n }\n\n let foundNonTypeImport = false;\n let foundAnyNamedImport = false;\n let needsComma = false;\n\n // Handle default import.\n if (this.tokens.matches1(tt.name)) {\n if (this.shouldAutomaticallyElideImportedName(this.tokens.identifierName())) {\n this.tokens.removeToken();\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.removeToken();\n }\n } else {\n foundNonTypeImport = true;\n this.tokens.copyToken();\n if (this.tokens.matches1(tt.comma)) {\n // We're in a statement like:\n // import A, * as B from './A';\n // or\n // import A, {foo} from './A';\n // where the `A` is being kept. The comma should be removed if an only\n // if the next part of the import statement is elided, but that's hard\n // to determine at this point in the code. Instead, always remove it\n // and set a flag to add it back if necessary.\n needsComma = true;\n this.tokens.removeToken();\n }\n }\n }\n\n if (this.tokens.matches1(tt.star)) {\n if (this.shouldAutomaticallyElideImportedName(this.tokens.identifierNameAtRelativeIndex(2))) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n } else {\n if (needsComma) {\n this.tokens.appendCode(\",\");\n }\n foundNonTypeImport = true;\n this.tokens.copyExpectedToken(tt.star);\n this.tokens.copyExpectedToken(tt.name);\n this.tokens.copyExpectedToken(tt.name);\n }\n } else if (this.tokens.matches1(tt.braceL)) {\n if (needsComma) {\n this.tokens.appendCode(\",\");\n }\n this.tokens.copyToken();\n while (!this.tokens.matches1(tt.braceR)) {\n foundAnyNamedImport = true;\n const specifierInfo = getImportExportSpecifierInfo(this.tokens);\n if (\n specifierInfo.isType ||\n this.shouldAutomaticallyElideImportedName(specifierInfo.rightName)\n ) {\n while (this.tokens.currentIndex() < specifierInfo.endIndex) {\n this.tokens.removeToken();\n }\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.removeToken();\n }\n } else {\n foundNonTypeImport = true;\n while (this.tokens.currentIndex() < specifierInfo.endIndex) {\n this.tokens.copyToken();\n }\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.copyToken();\n }\n }\n }\n this.tokens.copyExpectedToken(tt.braceR);\n }\n\n if (this.keepUnusedImports) {\n return false;\n }\n if (this.isTypeScriptTransformEnabled) {\n return !foundNonTypeImport;\n } else if (this.isFlowTransformEnabled) {\n // In Flow, unlike TS, `import {} from 'foo';` preserves the import.\n return foundAnyNamedImport && !foundNonTypeImport;\n } else {\n return false;\n }\n }\n\n shouldAutomaticallyElideImportedName(name) {\n return (\n this.isTypeScriptTransformEnabled &&\n !this.keepUnusedImports &&\n !this.nonTypeIdentifiers.has(name)\n );\n }\n\n processExportDefault() {\n if (\n shouldElideDefaultExport(\n this.isTypeScriptTransformEnabled,\n this.keepUnusedImports,\n this.tokens,\n this.declarationInfo,\n )\n ) {\n // If the exported value is just an identifier and should be elided by TypeScript\n // rules, then remove it entirely. It will always have the form `export default e`,\n // where `e` is an identifier.\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n return true;\n }\n\n const alreadyHasName =\n this.tokens.matches4(tt._export, tt._default, tt._function, tt.name) ||\n // export default async function\n (this.tokens.matches5(tt._export, tt._default, tt.name, tt._function, tt.name) &&\n this.tokens.matchesContextualAtIndex(\n this.tokens.currentIndex() + 2,\n ContextualKeyword._async,\n )) ||\n this.tokens.matches4(tt._export, tt._default, tt._class, tt.name) ||\n this.tokens.matches5(tt._export, tt._default, tt._abstract, tt._class, tt.name);\n\n if (!alreadyHasName && this.reactHotLoaderTransformer) {\n // This is a plain \"export default E\" statement and we need to assign E to a variable.\n // Change \"export default E\" to \"let _default; export default _default = E\"\n const defaultVarName = this.nameManager.claimFreeName(\"_default\");\n this.tokens.replaceToken(`let ${defaultVarName}; export`);\n this.tokens.copyToken();\n this.tokens.appendCode(` ${defaultVarName} =`);\n this.reactHotLoaderTransformer.setExtractedDefaultExportName(defaultVarName);\n return true;\n }\n return false;\n }\n\n /**\n * Handle a statement with one of these forms:\n * export {a, type b};\n * export {c, type d} from 'foo';\n *\n * In both cases, any explicit type exports should be removed. In the first\n * case, we also need to handle implicit export elision for names declared as\n * types. In the second case, we must NOT do implicit named export elision,\n * but we must remove the runtime import if all exports are type exports.\n */\n processNamedExports() {\n if (!this.isTypeScriptTransformEnabled) {\n return false;\n }\n this.tokens.copyExpectedToken(tt._export);\n this.tokens.copyExpectedToken(tt.braceL);\n\n const isReExport = isExportFrom(this.tokens);\n let foundNonTypeExport = false;\n while (!this.tokens.matches1(tt.braceR)) {\n const specifierInfo = getImportExportSpecifierInfo(this.tokens);\n if (\n specifierInfo.isType ||\n (!isReExport && this.shouldElideExportedName(specifierInfo.leftName))\n ) {\n // Type export, so remove all tokens, including any comma.\n while (this.tokens.currentIndex() < specifierInfo.endIndex) {\n this.tokens.removeToken();\n }\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.removeToken();\n }\n } else {\n // Non-type export, so copy all tokens, including any comma.\n foundNonTypeExport = true;\n while (this.tokens.currentIndex() < specifierInfo.endIndex) {\n this.tokens.copyToken();\n }\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.copyToken();\n }\n }\n }\n this.tokens.copyExpectedToken(tt.braceR);\n\n if (!this.keepUnusedImports && isReExport && !foundNonTypeExport) {\n // This is a type-only re-export, so skip evaluating the other module. Technically this\n // leaves the statement as `export {}`, but that's ok since that's a no-op.\n this.tokens.removeToken();\n this.tokens.removeToken();\n removeMaybeImportAttributes(this.tokens);\n }\n\n return true;\n }\n\n /**\n * ESM elides all imports with the rule that we only elide if we see that it's\n * a type and never see it as a value. This is in contrast to CJS, which\n * elides imports that are completely unknown.\n */\n shouldElideExportedName(name) {\n return (\n this.isTypeScriptTransformEnabled &&\n !this.keepUnusedImports &&\n this.declarationInfo.typeDeclarations.has(name) &&\n !this.declarationInfo.valueDeclarations.has(name)\n );\n }\n}\n", "import {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\nimport Transformer from \"./Transformer\";\n\nexport default class FlowTransformer extends Transformer {\n constructor(\n rootTransformer,\n tokens,\n isImportsTransformEnabled,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.isImportsTransformEnabled = isImportsTransformEnabled;;\n }\n\n process() {\n if (\n this.rootTransformer.processPossibleArrowParamEnd() ||\n this.rootTransformer.processPossibleAsyncArrowWithTypeParams() ||\n this.rootTransformer.processPossibleTypeRange()\n ) {\n return true;\n }\n if (this.tokens.matches1(tt._enum)) {\n this.processEnum();\n return true;\n }\n if (this.tokens.matches2(tt._export, tt._enum)) {\n this.processNamedExportEnum();\n return true;\n }\n if (this.tokens.matches3(tt._export, tt._default, tt._enum)) {\n this.processDefaultExportEnum();\n return true;\n }\n return false;\n }\n\n /**\n * Handle a declaration like:\n * export enum E ...\n *\n * With this imports transform, this becomes:\n * const E = [[enum]]; exports.E = E;\n *\n * otherwise, it becomes:\n * export const E = [[enum]];\n */\n processNamedExportEnum() {\n if (this.isImportsTransformEnabled) {\n // export\n this.tokens.removeInitialToken();\n const enumName = this.tokens.identifierNameAtRelativeIndex(1);\n this.processEnum();\n this.tokens.appendCode(` exports.${enumName} = ${enumName};`);\n } else {\n this.tokens.copyToken();\n this.processEnum();\n }\n }\n\n /**\n * Handle a declaration like:\n * export default enum E\n *\n * With the imports transform, this becomes:\n * const E = [[enum]]; exports.default = E;\n *\n * otherwise, it becomes:\n * const E = [[enum]]; export default E;\n */\n processDefaultExportEnum() {\n // export\n this.tokens.removeInitialToken();\n // default\n this.tokens.removeToken();\n const enumName = this.tokens.identifierNameAtRelativeIndex(1);\n this.processEnum();\n if (this.isImportsTransformEnabled) {\n this.tokens.appendCode(` exports.default = ${enumName};`);\n } else {\n this.tokens.appendCode(` export default ${enumName};`);\n }\n }\n\n /**\n * Transpile flow enums to invoke the \"flow-enums-runtime\" library.\n *\n * Currently, the transpiled code always uses `require(\"flow-enums-runtime\")`,\n * but if future flexibility is needed, we could expose a config option for\n * this string (similar to configurable JSX). Even when targeting ESM, the\n * default behavior of babel-plugin-transform-flow-enums is to use require\n * rather than injecting an import.\n *\n * Flow enums are quite a bit simpler than TS enums and have some convenient\n * constraints:\n * - Element initializers must be either always present or always absent. That\n * means that we can use fixed lookahead on the first element (if any) and\n * assume that all elements are like that.\n * - The right-hand side of an element initializer must be a literal value,\n * not a complex expression and not referencing other elements. That means\n * we can simply copy a single token.\n *\n * Enums can be broken up into three basic cases:\n *\n * Mirrored enums:\n * enum E {A, B}\n * ->\n * const E = require(\"flow-enums-runtime\").Mirrored([\"A\", \"B\"]);\n *\n * Initializer enums:\n * enum E {A = 1, B = 2}\n * ->\n * const E = require(\"flow-enums-runtime\")({A: 1, B: 2});\n *\n * Symbol enums:\n * enum E of symbol {A, B}\n * ->\n * const E = require(\"flow-enums-runtime\")({A: Symbol(\"A\"), B: Symbol(\"B\")});\n *\n * We can statically detect which of the three cases this is by looking at the\n * \"of\" declaration (if any) and seeing if the first element has an initializer.\n * Since the other transform details are so similar between the three cases, we\n * use a single implementation and vary the transform within processEnumElement\n * based on case.\n */\n processEnum() {\n // enum E -> const E\n this.tokens.replaceToken(\"const\");\n this.tokens.copyExpectedToken(tt.name);\n\n let isSymbolEnum = false;\n if (this.tokens.matchesContextual(ContextualKeyword._of)) {\n this.tokens.removeToken();\n isSymbolEnum = this.tokens.matchesContextual(ContextualKeyword._symbol);\n this.tokens.removeToken();\n }\n const hasInitializers = this.tokens.matches3(tt.braceL, tt.name, tt.eq);\n this.tokens.appendCode(' = require(\"flow-enums-runtime\")');\n\n const isMirrored = !isSymbolEnum && !hasInitializers;\n this.tokens.replaceTokenTrimmingLeftWhitespace(isMirrored ? \".Mirrored([\" : \"({\");\n\n while (!this.tokens.matches1(tt.braceR)) {\n // ... is allowed at the end and has no runtime behavior.\n if (this.tokens.matches1(tt.ellipsis)) {\n this.tokens.removeToken();\n break;\n }\n this.processEnumElement(isSymbolEnum, hasInitializers);\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.copyToken();\n }\n }\n\n this.tokens.replaceToken(isMirrored ? \"]);\" : \"});\");\n }\n\n /**\n * Process an individual enum element, producing either an array element or an\n * object element based on what type of enum this is.\n */\n processEnumElement(isSymbolEnum, hasInitializers) {\n if (isSymbolEnum) {\n // Symbol enums never have initializers and are expanded to object elements.\n // A, -> A: Symbol(\"A\"),\n const elementName = this.tokens.identifierName();\n this.tokens.copyToken();\n this.tokens.appendCode(`: Symbol(\"${elementName}\")`);\n } else if (hasInitializers) {\n // Initializers are expanded to object elements.\n // A = 1, -> A: 1,\n this.tokens.copyToken();\n this.tokens.replaceTokenTrimmingLeftWhitespace(\":\");\n this.tokens.copyToken();\n } else {\n // Enum elements without initializers become string literal array elements.\n // A, -> \"A\",\n this.tokens.replaceToken(`\"${this.tokens.identifierName()}\"`);\n }\n }\n}\n", " function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\n\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\nimport Transformer from \"./Transformer\";\n\nconst JEST_GLOBAL_NAME = \"jest\";\nconst HOISTED_METHODS = [\"mock\", \"unmock\", \"enableAutomock\", \"disableAutomock\"];\n\n/**\n * Implementation of babel-plugin-jest-hoist, which hoists up some jest method\n * calls above the imports to allow them to override other imports.\n *\n * To preserve line numbers, rather than directly moving the jest.mock code, we\n * wrap each invocation in a function statement and then call the function from\n * the top of the file.\n */\nexport default class JestHoistTransformer extends Transformer {\n __init() {this.hoistedFunctionNames = []}\n\n constructor(\n rootTransformer,\n tokens,\n nameManager,\n importProcessor,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.nameManager = nameManager;this.importProcessor = importProcessor;JestHoistTransformer.prototype.__init.call(this);;\n }\n\n process() {\n if (\n this.tokens.currentToken().scopeDepth === 0 &&\n this.tokens.matches4(tt.name, tt.dot, tt.name, tt.parenL) &&\n this.tokens.identifierName() === JEST_GLOBAL_NAME\n ) {\n // TODO: This only works if imports transform is active, which it will be for jest.\n // But if jest adds module support and we no longer need the import transform, this needs fixing.\n if (_optionalChain([this, 'access', _ => _.importProcessor, 'optionalAccess', _2 => _2.getGlobalNames, 'call', _3 => _3(), 'optionalAccess', _4 => _4.has, 'call', _5 => _5(JEST_GLOBAL_NAME)])) {\n return false;\n }\n return this.extractHoistedCalls();\n }\n\n return false;\n }\n\n getHoistedCode() {\n if (this.hoistedFunctionNames.length > 0) {\n // This will be placed before module interop code, but that's fine since\n // imports aren't allowed in module mock factories.\n return this.hoistedFunctionNames.map((name) => `${name}();`).join(\"\");\n }\n return \"\";\n }\n\n /**\n * Extracts any methods calls on the jest-object that should be hoisted.\n *\n * According to the jest docs, https://jestjs.io/docs/en/jest-object#jestmockmodulename-factory-options,\n * mock, unmock, enableAutomock, disableAutomock, are the methods that should be hoisted.\n *\n * We do not apply the same checks of the arguments as babel-plugin-jest-hoist does.\n */\n extractHoistedCalls() {\n // We're handling a chain of calls where `jest` may or may not need to be inserted for each call\n // in the chain, so remove the initial `jest` to make the loop implementation cleaner.\n this.tokens.removeToken();\n // Track some state so that multiple non-hoisted chained calls in a row keep their chaining\n // syntax.\n let followsNonHoistedJestCall = false;\n\n // Iterate through all chained calls on the jest object.\n while (this.tokens.matches3(tt.dot, tt.name, tt.parenL)) {\n const methodName = this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 1);\n const shouldHoist = HOISTED_METHODS.includes(methodName);\n if (shouldHoist) {\n // We've matched e.g. `.mock(...)` or similar call.\n // Replace the initial `.` with `function __jestHoist(){jest.`\n const hoistedFunctionName = this.nameManager.claimFreeName(\"__jestHoist\");\n this.hoistedFunctionNames.push(hoistedFunctionName);\n this.tokens.replaceToken(`function ${hoistedFunctionName}(){${JEST_GLOBAL_NAME}.`);\n this.tokens.copyToken();\n this.tokens.copyToken();\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n this.tokens.appendCode(\";}\");\n followsNonHoistedJestCall = false;\n } else {\n // This is a non-hoisted method, so just transform the code as usual.\n if (followsNonHoistedJestCall) {\n // If we didn't hoist the previous call, we can leave the code as-is to chain off of the\n // previous method call. It's important to preserve the code here because we don't know\n // for sure that the method actually returned the jest object for chaining.\n this.tokens.copyToken();\n } else {\n // If we hoisted the previous call, we know it returns the jest object back, so we insert\n // the identifier `jest` to continue the chain.\n this.tokens.replaceToken(`${JEST_GLOBAL_NAME}.`);\n }\n this.tokens.copyToken();\n this.tokens.copyToken();\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n followsNonHoistedJestCall = true;\n }\n }\n\n return true;\n }\n}\n", "import {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport Transformer from \"./Transformer\";\n\nexport default class NumericSeparatorTransformer extends Transformer {\n constructor( tokens) {\n super();this.tokens = tokens;;\n }\n\n process() {\n if (this.tokens.matches1(tt.num)) {\n const code = this.tokens.currentTokenCode();\n if (code.includes(\"_\")) {\n this.tokens.replaceToken(code.replace(/_/g, \"\"));\n return true;\n }\n }\n return false;\n }\n}\n", "\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport Transformer from \"./Transformer\";\n\nexport default class OptionalCatchBindingTransformer extends Transformer {\n constructor( tokens, nameManager) {\n super();this.tokens = tokens;this.nameManager = nameManager;;\n }\n\n process() {\n if (this.tokens.matches2(tt._catch, tt.braceL)) {\n this.tokens.copyToken();\n this.tokens.appendCode(` (${this.nameManager.claimFreeName(\"e\")})`);\n return true;\n }\n return false;\n }\n}\n", "\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport Transformer from \"./Transformer\";\n\n/**\n * Transformer supporting the optional chaining and nullish coalescing operators.\n *\n * Tech plan here:\n * https://github.com/alangpierce/sucrase/wiki/Sucrase-Optional-Chaining-and-Nullish-Coalescing-Technical-Plan\n *\n * The prefix and suffix code snippets are handled by TokenProcessor, and this transformer handles\n * the operators themselves.\n */\nexport default class OptionalChainingNullishTransformer extends Transformer {\n constructor( tokens, nameManager) {\n super();this.tokens = tokens;this.nameManager = nameManager;;\n }\n\n process() {\n if (this.tokens.matches1(tt.nullishCoalescing)) {\n const token = this.tokens.currentToken();\n if (this.tokens.tokens[token.nullishStartIndex].isAsyncOperation) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(\", async () => (\");\n } else {\n this.tokens.replaceTokenTrimmingLeftWhitespace(\", () => (\");\n }\n return true;\n }\n if (this.tokens.matches1(tt._delete)) {\n const nextToken = this.tokens.tokenAtRelativeIndex(1);\n if (nextToken.isOptionalChainStart) {\n this.tokens.removeInitialToken();\n return true;\n }\n }\n const token = this.tokens.currentToken();\n const chainStart = token.subscriptStartIndex;\n if (\n chainStart != null &&\n this.tokens.tokens[chainStart].isOptionalChainStart &&\n // Super subscripts can't be optional (since super is never null/undefined), and the syntax\n // relies on the subscript being intact, so leave this token alone.\n this.tokens.tokenAtRelativeIndex(-1).type !== tt._super\n ) {\n const param = this.nameManager.claimFreeName(\"_\");\n let arrowStartSnippet;\n if (\n chainStart > 0 &&\n this.tokens.matches1AtIndex(chainStart - 1, tt._delete) &&\n this.isLastSubscriptInChain()\n ) {\n // Delete operations are special: we already removed the delete keyword, and to still\n // perform a delete, we need to insert a delete in the very last part of the chain, which\n // in correct code will always be a property access.\n arrowStartSnippet = `${param} => delete ${param}`;\n } else {\n arrowStartSnippet = `${param} => ${param}`;\n }\n if (this.tokens.tokens[chainStart].isAsyncOperation) {\n arrowStartSnippet = `async ${arrowStartSnippet}`;\n }\n if (\n this.tokens.matches2(tt.questionDot, tt.parenL) ||\n this.tokens.matches2(tt.questionDot, tt.lessThan)\n ) {\n if (this.justSkippedSuper()) {\n this.tokens.appendCode(\".bind(this)\");\n }\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalCall', ${arrowStartSnippet}`);\n } else if (this.tokens.matches2(tt.questionDot, tt.bracketL)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalAccess', ${arrowStartSnippet}`);\n } else if (this.tokens.matches1(tt.questionDot)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalAccess', ${arrowStartSnippet}.`);\n } else if (this.tokens.matches1(tt.dot)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'access', ${arrowStartSnippet}.`);\n } else if (this.tokens.matches1(tt.bracketL)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'access', ${arrowStartSnippet}[`);\n } else if (this.tokens.matches1(tt.parenL)) {\n if (this.justSkippedSuper()) {\n this.tokens.appendCode(\".bind(this)\");\n }\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'call', ${arrowStartSnippet}(`);\n } else {\n throw new Error(\"Unexpected subscript operator in optional chain.\");\n }\n return true;\n }\n return false;\n }\n\n /**\n * Determine if the current token is the last of its chain, so that we know whether it's eligible\n * to have a delete op inserted.\n *\n * We can do this by walking forward until we determine one way or another. Each\n * isOptionalChainStart token must be paired with exactly one isOptionalChainEnd token after it in\n * a nesting way, so we can track depth and walk to the end of the chain (the point where the\n * depth goes negative) and see if any other subscript token is after us in the chain.\n */\n isLastSubscriptInChain() {\n let depth = 0;\n for (let i = this.tokens.currentIndex() + 1; ; i++) {\n if (i >= this.tokens.tokens.length) {\n throw new Error(\"Reached the end of the code while finding the end of the access chain.\");\n }\n if (this.tokens.tokens[i].isOptionalChainStart) {\n depth++;\n } else if (this.tokens.tokens[i].isOptionalChainEnd) {\n depth--;\n }\n if (depth < 0) {\n return true;\n }\n\n // This subscript token is a later one in the same chain.\n if (depth === 0 && this.tokens.tokens[i].subscriptStartIndex != null) {\n return false;\n }\n }\n }\n\n /**\n * Determine if we are the open-paren in an expression like super.a()?.b.\n *\n * We can do this by walking backward to find the previous subscript. If that subscript was\n * preceded by a super, then we must be the subscript after it, so if this is a call expression,\n * we'll need to attach the right context.\n */\n justSkippedSuper() {\n let depth = 0;\n let index = this.tokens.currentIndex() - 1;\n while (true) {\n if (index < 0) {\n throw new Error(\n \"Reached the start of the code while finding the start of the access chain.\",\n );\n }\n if (this.tokens.tokens[index].isOptionalChainStart) {\n depth--;\n } else if (this.tokens.tokens[index].isOptionalChainEnd) {\n depth++;\n }\n if (depth < 0) {\n return false;\n }\n\n // This subscript token is a later one in the same chain.\n if (depth === 0 && this.tokens.tokens[index].subscriptStartIndex != null) {\n return this.tokens.tokens[index - 1].type === tt._super;\n }\n index--;\n }\n }\n}\n", "\n\nimport {IdentifierRole} from \"../parser/tokenizer\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\nimport Transformer from \"./Transformer\";\n\n/**\n * Implementation of babel-plugin-transform-react-display-name, which adds a\n * display name to usages of React.createClass and createReactClass.\n */\nexport default class ReactDisplayNameTransformer extends Transformer {\n constructor(\n rootTransformer,\n tokens,\n importProcessor,\n options,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.importProcessor = importProcessor;this.options = options;;\n }\n\n process() {\n const startIndex = this.tokens.currentIndex();\n if (this.tokens.identifierName() === \"createReactClass\") {\n const newName =\n this.importProcessor && this.importProcessor.getIdentifierReplacement(\"createReactClass\");\n if (newName) {\n this.tokens.replaceToken(`(0, ${newName})`);\n } else {\n this.tokens.copyToken();\n }\n this.tryProcessCreateClassCall(startIndex);\n return true;\n }\n if (\n this.tokens.matches3(tt.name, tt.dot, tt.name) &&\n this.tokens.identifierName() === \"React\" &&\n this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 2) === \"createClass\"\n ) {\n const newName = this.importProcessor\n ? this.importProcessor.getIdentifierReplacement(\"React\") || \"React\"\n : \"React\";\n if (newName) {\n this.tokens.replaceToken(newName);\n this.tokens.copyToken();\n this.tokens.copyToken();\n } else {\n this.tokens.copyToken();\n this.tokens.copyToken();\n this.tokens.copyToken();\n }\n this.tryProcessCreateClassCall(startIndex);\n return true;\n }\n return false;\n }\n\n /**\n * This is called with the token position at the open-paren.\n */\n tryProcessCreateClassCall(startIndex) {\n const displayName = this.findDisplayName(startIndex);\n if (!displayName) {\n return;\n }\n\n if (this.classNeedsDisplayName()) {\n this.tokens.copyExpectedToken(tt.parenL);\n this.tokens.copyExpectedToken(tt.braceL);\n this.tokens.appendCode(`displayName: '${displayName}',`);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.braceR);\n this.tokens.copyExpectedToken(tt.parenR);\n }\n }\n\n findDisplayName(startIndex) {\n if (startIndex < 2) {\n return null;\n }\n if (this.tokens.matches2AtIndex(startIndex - 2, tt.name, tt.eq)) {\n // This is an assignment (or declaration) and the LHS is either an identifier or a member\n // expression ending in an identifier, so use that identifier name.\n return this.tokens.identifierNameAtIndex(startIndex - 2);\n }\n if (\n startIndex >= 2 &&\n this.tokens.tokens[startIndex - 2].identifierRole === IdentifierRole.ObjectKey\n ) {\n // This is an object literal value.\n return this.tokens.identifierNameAtIndex(startIndex - 2);\n }\n if (this.tokens.matches2AtIndex(startIndex - 2, tt._export, tt._default)) {\n return this.getDisplayNameFromFilename();\n }\n return null;\n }\n\n getDisplayNameFromFilename() {\n const filePath = this.options.filePath || \"unknown\";\n const pathSegments = filePath.split(\"/\");\n const filename = pathSegments[pathSegments.length - 1];\n const dotIndex = filename.lastIndexOf(\".\");\n const baseFilename = dotIndex === -1 ? filename : filename.slice(0, dotIndex);\n if (baseFilename === \"index\" && pathSegments[pathSegments.length - 2]) {\n return pathSegments[pathSegments.length - 2];\n } else {\n return baseFilename;\n }\n }\n\n /**\n * We only want to add a display name when this is a function call containing\n * one argument, which is an object literal without `displayName` as an\n * existing key.\n */\n classNeedsDisplayName() {\n let index = this.tokens.currentIndex();\n if (!this.tokens.matches2(tt.parenL, tt.braceL)) {\n return false;\n }\n // The block starts on the {, and we expect any displayName key to be in\n // that context. We need to ignore other other contexts to avoid matching\n // nested displayName keys.\n const objectStartIndex = index + 1;\n const objectContextId = this.tokens.tokens[objectStartIndex].contextId;\n if (objectContextId == null) {\n throw new Error(\"Expected non-null context ID on object open-brace.\");\n }\n\n for (; index < this.tokens.tokens.length; index++) {\n const token = this.tokens.tokens[index];\n if (token.type === tt.braceR && token.contextId === objectContextId) {\n index++;\n break;\n }\n\n if (\n this.tokens.identifierNameAtIndex(index) === \"displayName\" &&\n this.tokens.tokens[index].identifierRole === IdentifierRole.ObjectKey &&\n token.contextId === objectContextId\n ) {\n // We found a displayName key, so bail out.\n return false;\n }\n }\n\n if (index === this.tokens.tokens.length) {\n throw new Error(\"Unexpected end of input when processing React class.\");\n }\n\n // If we got this far, we know we have createClass with an object with no\n // display name, so we want to proceed as long as that was the only argument.\n return (\n this.tokens.matches1AtIndex(index, tt.parenR) ||\n this.tokens.matches2AtIndex(index, tt.comma, tt.parenR)\n );\n }\n}\n", "import {IdentifierRole, isTopLevelDeclaration} from \"../parser/tokenizer\";\n\nimport Transformer from \"./Transformer\";\n\nexport default class ReactHotLoaderTransformer extends Transformer {\n __init() {this.extractedDefaultExportName = null}\n\n constructor( tokens, filePath) {\n super();this.tokens = tokens;this.filePath = filePath;ReactHotLoaderTransformer.prototype.__init.call(this);;\n }\n\n setExtractedDefaultExportName(extractedDefaultExportName) {\n this.extractedDefaultExportName = extractedDefaultExportName;\n }\n\n getPrefixCode() {\n return `\n (function () {\n var enterModule = require('react-hot-loader').enterModule;\n enterModule && enterModule(module);\n })();`\n .replace(/\\s+/g, \" \")\n .trim();\n }\n\n getSuffixCode() {\n const topLevelNames = new Set();\n for (const token of this.tokens.tokens) {\n if (\n !token.isType &&\n isTopLevelDeclaration(token) &&\n token.identifierRole !== IdentifierRole.ImportDeclaration\n ) {\n topLevelNames.add(this.tokens.identifierNameForToken(token));\n }\n }\n const namesToRegister = Array.from(topLevelNames).map((name) => ({\n variableName: name,\n uniqueLocalName: name,\n }));\n if (this.extractedDefaultExportName) {\n namesToRegister.push({\n variableName: this.extractedDefaultExportName,\n uniqueLocalName: \"default\",\n });\n }\n return `\n;(function () {\n var reactHotLoader = require('react-hot-loader').default;\n var leaveModule = require('react-hot-loader').leaveModule;\n if (!reactHotLoader) {\n return;\n }\n${namesToRegister\n .map(\n ({variableName, uniqueLocalName}) =>\n ` reactHotLoader.register(${variableName}, \"${uniqueLocalName}\", ${JSON.stringify(\n this.filePath || \"\",\n )});`,\n )\n .join(\"\\n\")}\n leaveModule(module);\n})();`;\n }\n\n process() {\n return false;\n }\n}\n", "import {IS_IDENTIFIER_CHAR, IS_IDENTIFIER_START} from \"../parser/util/identifier\";\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar\n// Hard-code a list of reserved words rather than trying to use keywords or contextual keywords\n// from the parser, since currently there are various exceptions, like `package` being reserved\n// but unused and various contextual keywords being reserved. Note that we assume that all code\n// compiled by Sucrase is in a module, so strict mode words and await are all considered reserved\n// here.\nconst RESERVED_WORDS = new Set([\n // Reserved keywords as of ECMAScript 2015\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"export\",\n \"extends\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n // Future reserved keywords\n \"enum\",\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"await\",\n // Literals that cannot be used as identifiers\n \"false\",\n \"null\",\n \"true\",\n]);\n\n/**\n * Determine if the given name is a legal variable name.\n *\n * This is needed when transforming TypeScript enums; if an enum key is a valid\n * variable name, it might be referenced later in the enum, so we need to\n * declare a variable.\n */\nexport default function isIdentifier(name) {\n if (name.length === 0) {\n return false;\n }\n if (!IS_IDENTIFIER_START[name.charCodeAt(0)]) {\n return false;\n }\n for (let i = 1; i < name.length; i++) {\n if (!IS_IDENTIFIER_CHAR[name.charCodeAt(i)]) {\n return false;\n }\n }\n return !RESERVED_WORDS.has(name);\n}\n", "\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport isIdentifier from \"../util/isIdentifier\";\n\nimport Transformer from \"./Transformer\";\n\nexport default class TypeScriptTransformer extends Transformer {\n constructor(\n rootTransformer,\n tokens,\n isImportsTransformEnabled,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.isImportsTransformEnabled = isImportsTransformEnabled;;\n }\n\n process() {\n if (\n this.rootTransformer.processPossibleArrowParamEnd() ||\n this.rootTransformer.processPossibleAsyncArrowWithTypeParams() ||\n this.rootTransformer.processPossibleTypeRange()\n ) {\n return true;\n }\n if (\n this.tokens.matches1(tt._public) ||\n this.tokens.matches1(tt._protected) ||\n this.tokens.matches1(tt._private) ||\n this.tokens.matches1(tt._abstract) ||\n this.tokens.matches1(tt._readonly) ||\n this.tokens.matches1(tt._override) ||\n this.tokens.matches1(tt.nonNullAssertion)\n ) {\n this.tokens.removeInitialToken();\n return true;\n }\n if (this.tokens.matches1(tt._enum) || this.tokens.matches2(tt._const, tt._enum)) {\n this.processEnum();\n return true;\n }\n if (\n this.tokens.matches2(tt._export, tt._enum) ||\n this.tokens.matches3(tt._export, tt._const, tt._enum)\n ) {\n this.processEnum(true);\n return true;\n }\n return false;\n }\n\n processEnum(isExport = false) {\n // We might have \"export const enum\", so just remove all relevant tokens.\n this.tokens.removeInitialToken();\n while (this.tokens.matches1(tt._const) || this.tokens.matches1(tt._enum)) {\n this.tokens.removeToken();\n }\n const enumName = this.tokens.identifierName();\n this.tokens.removeToken();\n if (isExport && !this.isImportsTransformEnabled) {\n this.tokens.appendCode(\"export \");\n }\n this.tokens.appendCode(`var ${enumName}; (function (${enumName})`);\n this.tokens.copyExpectedToken(tt.braceL);\n this.processEnumBody(enumName);\n this.tokens.copyExpectedToken(tt.braceR);\n if (isExport && this.isImportsTransformEnabled) {\n this.tokens.appendCode(`)(${enumName} || (exports.${enumName} = ${enumName} = {}));`);\n } else {\n this.tokens.appendCode(`)(${enumName} || (${enumName} = {}));`);\n }\n }\n\n /**\n * Transform an enum into equivalent JS. This has complexity in a few places:\n * - TS allows string enums, numeric enums, and a mix of the two styles within an enum.\n * - Enum keys are allowed to be referenced in later enum values.\n * - Enum keys are allowed to be strings.\n * - When enum values are omitted, they should follow an auto-increment behavior.\n */\n processEnumBody(enumName) {\n // Code that can be used to reference the previous enum member, or null if this is the first\n // enum member.\n let previousValueCode = null;\n while (true) {\n if (this.tokens.matches1(tt.braceR)) {\n break;\n }\n const {nameStringCode, variableName} = this.extractEnumKeyInfo(this.tokens.currentToken());\n this.tokens.removeInitialToken();\n\n if (\n this.tokens.matches3(tt.eq, tt.string, tt.comma) ||\n this.tokens.matches3(tt.eq, tt.string, tt.braceR)\n ) {\n this.processStringLiteralEnumMember(enumName, nameStringCode, variableName);\n } else if (this.tokens.matches1(tt.eq)) {\n this.processExplicitValueEnumMember(enumName, nameStringCode, variableName);\n } else {\n this.processImplicitValueEnumMember(\n enumName,\n nameStringCode,\n variableName,\n previousValueCode,\n );\n }\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.removeToken();\n }\n\n if (variableName != null) {\n previousValueCode = variableName;\n } else {\n previousValueCode = `${enumName}[${nameStringCode}]`;\n }\n }\n }\n\n /**\n * Detect name information about this enum key, which will be used to determine which code to emit\n * and whether we should declare a variable as part of this declaration.\n *\n * Some cases to keep in mind:\n * - Enum keys can be implicitly referenced later, e.g. `X = 1, Y = X`. In Sucrase, we implement\n * this by declaring a variable `X` so that later expressions can use it.\n * - In addition to the usual identifier key syntax, enum keys are allowed to be string literals,\n * e.g. `\"hello world\" = 3,`. Template literal syntax is NOT allowed.\n * - Even if the enum key is defined as a string literal, it may still be referenced by identifier\n * later, e.g. `\"X\" = 1, Y = X`. That means that we need to detect whether or not a string\n * literal is identifier-like and emit a variable if so, even if the declaration did not use an\n * identifier.\n * - Reserved keywords like `break` are valid enum keys, but are not valid to be referenced later\n * and would be a syntax error if we emitted a variable, so we need to skip the variable\n * declaration in those cases.\n *\n * The variableName return value captures these nuances: if non-null, we can and must emit a\n * variable declaration, and if null, we can't and shouldn't.\n */\n extractEnumKeyInfo(nameToken) {\n if (nameToken.type === tt.name) {\n const name = this.tokens.identifierNameForToken(nameToken);\n return {\n nameStringCode: `\"${name}\"`,\n variableName: isIdentifier(name) ? name : null,\n };\n } else if (nameToken.type === tt.string) {\n const name = this.tokens.stringValueForToken(nameToken);\n return {\n nameStringCode: this.tokens.code.slice(nameToken.start, nameToken.end),\n variableName: isIdentifier(name) ? name : null,\n };\n } else {\n throw new Error(\"Expected name or string at beginning of enum element.\");\n }\n }\n\n /**\n * Handle an enum member where the RHS is just a string literal (not omitted, not a number, and\n * not a complex expression). This is the typical form for TS string enums, and in this case, we\n * do *not* create a reverse mapping.\n *\n * This is called after deleting the key token, when the token processor is at the equals sign.\n *\n * Example 1:\n * someKey = \"some value\"\n * ->\n * const someKey = \"some value\"; MyEnum[\"someKey\"] = someKey;\n *\n * Example 2:\n * \"some key\" = \"some value\"\n * ->\n * MyEnum[\"some key\"] = \"some value\";\n */\n processStringLiteralEnumMember(\n enumName,\n nameStringCode,\n variableName,\n ) {\n if (variableName != null) {\n this.tokens.appendCode(`const ${variableName}`);\n // =\n this.tokens.copyToken();\n // value string\n this.tokens.copyToken();\n this.tokens.appendCode(`; ${enumName}[${nameStringCode}] = ${variableName};`);\n } else {\n this.tokens.appendCode(`${enumName}[${nameStringCode}]`);\n // =\n this.tokens.copyToken();\n // value string\n this.tokens.copyToken();\n this.tokens.appendCode(\";\");\n }\n }\n\n /**\n * Handle an enum member initialized with an expression on the right-hand side (other than a\n * string literal). In these cases, we should transform the expression and emit code that sets up\n * a reverse mapping.\n *\n * The TypeScript implementation of this operation distinguishes between expressions that can be\n * \"constant folded\" at compile time (i.e. consist of number literals and simple math operations\n * on those numbers) and ones that are dynamic. For constant expressions, it emits the resolved\n * numeric value, and auto-incrementing is only allowed in that case. Evaluating expressions at\n * compile time would add significant complexity to Sucrase, so Sucrase instead leaves the\n * expression as-is, and will later emit something like `MyEnum[\"previousKey\"] + 1` to implement\n * auto-incrementing.\n *\n * This is called after deleting the key token, when the token processor is at the equals sign.\n *\n * Example 1:\n * someKey = 1 + 1\n * ->\n * const someKey = 1 + 1; MyEnum[MyEnum[\"someKey\"] = someKey] = \"someKey\";\n *\n * Example 2:\n * \"some key\" = 1 + 1\n * ->\n * MyEnum[MyEnum[\"some key\"] = 1 + 1] = \"some key\";\n */\n processExplicitValueEnumMember(\n enumName,\n nameStringCode,\n variableName,\n ) {\n const rhsEndIndex = this.tokens.currentToken().rhsEndIndex;\n if (rhsEndIndex == null) {\n throw new Error(\"Expected rhsEndIndex on enum assign.\");\n }\n\n if (variableName != null) {\n this.tokens.appendCode(`const ${variableName}`);\n this.tokens.copyToken();\n while (this.tokens.currentIndex() < rhsEndIndex) {\n this.rootTransformer.processToken();\n }\n this.tokens.appendCode(\n `; ${enumName}[${enumName}[${nameStringCode}] = ${variableName}] = ${nameStringCode};`,\n );\n } else {\n this.tokens.appendCode(`${enumName}[${enumName}[${nameStringCode}]`);\n this.tokens.copyToken();\n while (this.tokens.currentIndex() < rhsEndIndex) {\n this.rootTransformer.processToken();\n }\n this.tokens.appendCode(`] = ${nameStringCode};`);\n }\n }\n\n /**\n * Handle an enum member with no right-hand side expression. In this case, the value is the\n * previous value plus 1, or 0 if there was no previous value. We should also always emit a\n * reverse mapping.\n *\n * Example 1:\n * someKey2\n * ->\n * const someKey2 = someKey1 + 1; MyEnum[MyEnum[\"someKey2\"] = someKey2] = \"someKey2\";\n *\n * Example 2:\n * \"some key 2\"\n * ->\n * MyEnum[MyEnum[\"some key 2\"] = someKey1 + 1] = \"some key 2\";\n */\n processImplicitValueEnumMember(\n enumName,\n nameStringCode,\n variableName,\n previousValueCode,\n ) {\n let valueCode = previousValueCode != null ? `${previousValueCode} + 1` : \"0\";\n if (variableName != null) {\n this.tokens.appendCode(`const ${variableName} = ${valueCode}; `);\n valueCode = variableName;\n }\n this.tokens.appendCode(\n `${enumName}[${enumName}[${nameStringCode}] = ${valueCode}] = ${nameStringCode};`,\n );\n }\n}\n", "\n\n\nimport {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport getClassInfo, {} from \"../util/getClassInfo\";\nimport CJSImportTransformer from \"./CJSImportTransformer\";\nimport ESMImportTransformer from \"./ESMImportTransformer\";\nimport FlowTransformer from \"./FlowTransformer\";\nimport JestHoistTransformer from \"./JestHoistTransformer\";\nimport JSXTransformer from \"./JSXTransformer\";\nimport NumericSeparatorTransformer from \"./NumericSeparatorTransformer\";\nimport OptionalCatchBindingTransformer from \"./OptionalCatchBindingTransformer\";\nimport OptionalChainingNullishTransformer from \"./OptionalChainingNullishTransformer\";\nimport ReactDisplayNameTransformer from \"./ReactDisplayNameTransformer\";\nimport ReactHotLoaderTransformer from \"./ReactHotLoaderTransformer\";\n\nimport TypeScriptTransformer from \"./TypeScriptTransformer\";\n\n\n\n\n\n\n\n\nexport default class RootTransformer {\n __init() {this.transformers = []}\n \n \n __init2() {this.generatedVariables = []}\n \n \n \n \n\n constructor(\n sucraseContext,\n transforms,\n enableLegacyBabel5ModuleInterop,\n options,\n ) {;RootTransformer.prototype.__init.call(this);RootTransformer.prototype.__init2.call(this);\n this.nameManager = sucraseContext.nameManager;\n this.helperManager = sucraseContext.helperManager;\n const {tokenProcessor, importProcessor} = sucraseContext;\n this.tokens = tokenProcessor;\n this.isImportsTransformEnabled = transforms.includes(\"imports\");\n this.isReactHotLoaderTransformEnabled = transforms.includes(\"react-hot-loader\");\n this.disableESTransforms = Boolean(options.disableESTransforms);\n\n if (!options.disableESTransforms) {\n this.transformers.push(\n new OptionalChainingNullishTransformer(tokenProcessor, this.nameManager),\n );\n this.transformers.push(new NumericSeparatorTransformer(tokenProcessor));\n this.transformers.push(new OptionalCatchBindingTransformer(tokenProcessor, this.nameManager));\n }\n\n if (transforms.includes(\"jsx\")) {\n if (options.jsxRuntime !== \"preserve\") {\n this.transformers.push(\n new JSXTransformer(this, tokenProcessor, importProcessor, this.nameManager, options),\n );\n }\n this.transformers.push(\n new ReactDisplayNameTransformer(this, tokenProcessor, importProcessor, options),\n );\n }\n\n let reactHotLoaderTransformer = null;\n if (transforms.includes(\"react-hot-loader\")) {\n if (!options.filePath) {\n throw new Error(\"filePath is required when using the react-hot-loader transform.\");\n }\n reactHotLoaderTransformer = new ReactHotLoaderTransformer(tokenProcessor, options.filePath);\n this.transformers.push(reactHotLoaderTransformer);\n }\n\n // Note that we always want to enable the imports transformer, even when the import transform\n // itself isn't enabled, since we need to do type-only import pruning for both Flow and\n // TypeScript.\n if (transforms.includes(\"imports\")) {\n if (importProcessor === null) {\n throw new Error(\"Expected non-null importProcessor with imports transform enabled.\");\n }\n this.transformers.push(\n new CJSImportTransformer(\n this,\n tokenProcessor,\n importProcessor,\n this.nameManager,\n this.helperManager,\n reactHotLoaderTransformer,\n enableLegacyBabel5ModuleInterop,\n Boolean(options.enableLegacyTypeScriptModuleInterop),\n transforms.includes(\"typescript\"),\n transforms.includes(\"flow\"),\n Boolean(options.preserveDynamicImport),\n Boolean(options.keepUnusedImports),\n ),\n );\n } else {\n this.transformers.push(\n new ESMImportTransformer(\n tokenProcessor,\n this.nameManager,\n this.helperManager,\n reactHotLoaderTransformer,\n transforms.includes(\"typescript\"),\n transforms.includes(\"flow\"),\n Boolean(options.keepUnusedImports),\n options,\n ),\n );\n }\n\n if (transforms.includes(\"flow\")) {\n this.transformers.push(\n new FlowTransformer(this, tokenProcessor, transforms.includes(\"imports\")),\n );\n }\n if (transforms.includes(\"typescript\")) {\n this.transformers.push(\n new TypeScriptTransformer(this, tokenProcessor, transforms.includes(\"imports\")),\n );\n }\n if (transforms.includes(\"jest\")) {\n this.transformers.push(\n new JestHoistTransformer(this, tokenProcessor, this.nameManager, importProcessor),\n );\n }\n }\n\n transform() {\n this.tokens.reset();\n this.processBalancedCode();\n const shouldAddUseStrict = this.isImportsTransformEnabled;\n // \"use strict\" always needs to be first, so override the normal transformer order.\n let prefix = shouldAddUseStrict ? '\"use strict\";' : \"\";\n for (const transformer of this.transformers) {\n prefix += transformer.getPrefixCode();\n }\n prefix += this.helperManager.emitHelpers();\n prefix += this.generatedVariables.map((v) => ` var ${v};`).join(\"\");\n for (const transformer of this.transformers) {\n prefix += transformer.getHoistedCode();\n }\n let suffix = \"\";\n for (const transformer of this.transformers) {\n suffix += transformer.getSuffixCode();\n }\n const result = this.tokens.finish();\n let {code} = result;\n if (code.startsWith(\"#!\")) {\n let newlineIndex = code.indexOf(\"\\n\");\n if (newlineIndex === -1) {\n newlineIndex = code.length;\n code += \"\\n\";\n }\n return {\n code: code.slice(0, newlineIndex + 1) + prefix + code.slice(newlineIndex + 1) + suffix,\n // The hashbang line has no tokens, so shifting the tokens to account\n // for prefix can happen normally.\n mappings: this.shiftMappings(result.mappings, prefix.length),\n };\n } else {\n return {\n code: prefix + code + suffix,\n mappings: this.shiftMappings(result.mappings, prefix.length),\n };\n }\n }\n\n processBalancedCode() {\n let braceDepth = 0;\n let parenDepth = 0;\n while (!this.tokens.isAtEnd()) {\n if (this.tokens.matches1(tt.braceL) || this.tokens.matches1(tt.dollarBraceL)) {\n braceDepth++;\n } else if (this.tokens.matches1(tt.braceR)) {\n if (braceDepth === 0) {\n return;\n }\n braceDepth--;\n }\n if (this.tokens.matches1(tt.parenL)) {\n parenDepth++;\n } else if (this.tokens.matches1(tt.parenR)) {\n if (parenDepth === 0) {\n return;\n }\n parenDepth--;\n }\n this.processToken();\n }\n }\n\n processToken() {\n if (this.tokens.matches1(tt._class)) {\n this.processClass();\n return;\n }\n for (const transformer of this.transformers) {\n const wasProcessed = transformer.process();\n if (wasProcessed) {\n return;\n }\n }\n this.tokens.copyToken();\n }\n\n /**\n * Skip past a class with a name and return that name.\n */\n processNamedClass() {\n if (!this.tokens.matches2(tt._class, tt.name)) {\n throw new Error(\"Expected identifier for exported class name.\");\n }\n const name = this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 1);\n this.processClass();\n return name;\n }\n\n processClass() {\n const classInfo = getClassInfo(this, this.tokens, this.nameManager, this.disableESTransforms);\n\n // Both static and instance initializers need a class name to use to invoke the initializer, so\n // assign to one if necessary.\n const needsCommaExpression =\n (classInfo.headerInfo.isExpression || !classInfo.headerInfo.className) &&\n classInfo.staticInitializerNames.length + classInfo.instanceInitializerNames.length > 0;\n\n let className = classInfo.headerInfo.className;\n if (needsCommaExpression) {\n className = this.nameManager.claimFreeName(\"_class\");\n this.generatedVariables.push(className);\n this.tokens.appendCode(` (${className} =`);\n }\n\n const classToken = this.tokens.currentToken();\n const contextId = classToken.contextId;\n if (contextId == null) {\n throw new Error(\"Expected class to have a context ID.\");\n }\n this.tokens.copyExpectedToken(tt._class);\n while (!this.tokens.matchesContextIdAndLabel(tt.braceL, contextId)) {\n this.processToken();\n }\n\n this.processClassBody(classInfo, className);\n\n const staticInitializerStatements = classInfo.staticInitializerNames.map(\n (name) => `${className}.${name}()`,\n );\n if (needsCommaExpression) {\n this.tokens.appendCode(\n `, ${staticInitializerStatements.map((s) => `${s}, `).join(\"\")}${className})`,\n );\n } else if (classInfo.staticInitializerNames.length > 0) {\n this.tokens.appendCode(` ${staticInitializerStatements.map((s) => `${s};`).join(\" \")}`);\n }\n }\n\n /**\n * We want to just handle class fields in all contexts, since TypeScript supports them. Later,\n * when some JS implementations support class fields, this should be made optional.\n */\n processClassBody(classInfo, className) {\n const {\n headerInfo,\n constructorInsertPos,\n constructorInitializerStatements,\n fields,\n instanceInitializerNames,\n rangesToRemove,\n } = classInfo;\n let fieldIndex = 0;\n let rangeToRemoveIndex = 0;\n const classContextId = this.tokens.currentToken().contextId;\n if (classContextId == null) {\n throw new Error(\"Expected non-null context ID on class.\");\n }\n this.tokens.copyExpectedToken(tt.braceL);\n if (this.isReactHotLoaderTransformEnabled) {\n this.tokens.appendCode(\n \"__reactstandin__regenerateByEval(key, code) {this[key] = eval(code);}\",\n );\n }\n\n const needsConstructorInit =\n constructorInitializerStatements.length + instanceInitializerNames.length > 0;\n\n if (constructorInsertPos === null && needsConstructorInit) {\n const constructorInitializersCode = this.makeConstructorInitCode(\n constructorInitializerStatements,\n instanceInitializerNames,\n className,\n );\n if (headerInfo.hasSuperclass) {\n const argsName = this.nameManager.claimFreeName(\"args\");\n this.tokens.appendCode(\n `constructor(...${argsName}) { super(...${argsName}); ${constructorInitializersCode}; }`,\n );\n } else {\n this.tokens.appendCode(`constructor() { ${constructorInitializersCode}; }`);\n }\n }\n\n while (!this.tokens.matchesContextIdAndLabel(tt.braceR, classContextId)) {\n if (fieldIndex < fields.length && this.tokens.currentIndex() === fields[fieldIndex].start) {\n let needsCloseBrace = false;\n if (this.tokens.matches1(tt.bracketL)) {\n this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this`);\n } else if (this.tokens.matches1(tt.string) || this.tokens.matches1(tt.num)) {\n this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this[`);\n needsCloseBrace = true;\n } else {\n this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this.`);\n }\n while (this.tokens.currentIndex() < fields[fieldIndex].end) {\n if (needsCloseBrace && this.tokens.currentIndex() === fields[fieldIndex].equalsIndex) {\n this.tokens.appendCode(\"]\");\n }\n this.processToken();\n }\n this.tokens.appendCode(\"}\");\n fieldIndex++;\n } else if (\n rangeToRemoveIndex < rangesToRemove.length &&\n this.tokens.currentIndex() >= rangesToRemove[rangeToRemoveIndex].start\n ) {\n if (this.tokens.currentIndex() < rangesToRemove[rangeToRemoveIndex].end) {\n this.tokens.removeInitialToken();\n }\n while (this.tokens.currentIndex() < rangesToRemove[rangeToRemoveIndex].end) {\n this.tokens.removeToken();\n }\n rangeToRemoveIndex++;\n } else if (this.tokens.currentIndex() === constructorInsertPos) {\n this.tokens.copyToken();\n if (needsConstructorInit) {\n this.tokens.appendCode(\n `;${this.makeConstructorInitCode(\n constructorInitializerStatements,\n instanceInitializerNames,\n className,\n )};`,\n );\n }\n this.processToken();\n } else {\n this.processToken();\n }\n }\n this.tokens.copyExpectedToken(tt.braceR);\n }\n\n makeConstructorInitCode(\n constructorInitializerStatements,\n instanceInitializerNames,\n className,\n ) {\n return [\n ...constructorInitializerStatements,\n ...instanceInitializerNames.map((name) => `${className}.prototype.${name}.call(this)`),\n ].join(\";\");\n }\n\n /**\n * Normally it's ok to simply remove type tokens, but we need to be more careful when dealing with\n * arrow function return types since they can confuse the parser. In that case, we want to move\n * the close-paren to the same line as the arrow.\n *\n * See https://github.com/alangpierce/sucrase/issues/391 for more details.\n */\n processPossibleArrowParamEnd() {\n if (this.tokens.matches2(tt.parenR, tt.colon) && this.tokens.tokenAtRelativeIndex(1).isType) {\n let nextNonTypeIndex = this.tokens.currentIndex() + 1;\n // Look ahead to see if this is an arrow function or something else.\n while (this.tokens.tokens[nextNonTypeIndex].isType) {\n nextNonTypeIndex++;\n }\n if (this.tokens.matches1AtIndex(nextNonTypeIndex, tt.arrow)) {\n this.tokens.removeInitialToken();\n while (this.tokens.currentIndex() < nextNonTypeIndex) {\n this.tokens.removeToken();\n }\n this.tokens.replaceTokenTrimmingLeftWhitespace(\") =>\");\n return true;\n }\n }\n return false;\n }\n\n /**\n * An async arrow function might be of the form:\n *\n * async <\n * T\n * >() => {}\n *\n * in which case, removing the type parameters will cause a syntax error. Detect this case and\n * move the open-paren earlier.\n */\n processPossibleAsyncArrowWithTypeParams() {\n if (\n !this.tokens.matchesContextual(ContextualKeyword._async) &&\n !this.tokens.matches1(tt._async)\n ) {\n return false;\n }\n const nextToken = this.tokens.tokenAtRelativeIndex(1);\n if (nextToken.type !== tt.lessThan || !nextToken.isType) {\n return false;\n }\n\n let nextNonTypeIndex = this.tokens.currentIndex() + 1;\n // Look ahead to see if this is an arrow function or something else.\n while (this.tokens.tokens[nextNonTypeIndex].isType) {\n nextNonTypeIndex++;\n }\n if (this.tokens.matches1AtIndex(nextNonTypeIndex, tt.parenL)) {\n this.tokens.replaceToken(\"async (\");\n this.tokens.removeInitialToken();\n while (this.tokens.currentIndex() < nextNonTypeIndex) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n // We ate a ( token, so we need to process the tokens in between and then the ) token so that\n // we remain balanced.\n this.processBalancedCode();\n this.processToken();\n return true;\n }\n return false;\n }\n\n processPossibleTypeRange() {\n if (this.tokens.currentToken().isType) {\n this.tokens.removeInitialToken();\n while (this.tokens.currentToken().isType) {\n this.tokens.removeToken();\n }\n return true;\n }\n return false;\n }\n\n shiftMappings(\n mappings,\n prefixLength,\n ) {\n for (let i = 0; i < mappings.length; i++) {\n const mapping = mappings[i];\n if (mapping !== undefined) {\n mappings[i] = mapping + prefixLength;\n }\n }\n return mappings;\n }\n}\n", "import LinesAndColumns from \"lines-and-columns\";\n\n\nimport {formatTokenType} from \"../parser/tokenizer/types\";\n\nexport default function formatTokens(code, tokens) {\n if (tokens.length === 0) {\n return \"\";\n }\n\n const tokenKeys = Object.keys(tokens[0]).filter(\n (k) => k !== \"type\" && k !== \"value\" && k !== \"start\" && k !== \"end\" && k !== \"loc\",\n );\n const typeKeys = Object.keys(tokens[0].type).filter((k) => k !== \"label\" && k !== \"keyword\");\n\n const headings = [\"Location\", \"Label\", \"Raw\", ...tokenKeys, ...typeKeys];\n\n const lines = new LinesAndColumns(code);\n const rows = [headings, ...tokens.map(getTokenComponents)];\n const padding = headings.map(() => 0);\n for (const components of rows) {\n for (let i = 0; i < components.length; i++) {\n padding[i] = Math.max(padding[i], components[i].length);\n }\n }\n return rows\n .map((components) => components.map((component, i) => component.padEnd(padding[i])).join(\" \"))\n .join(\"\\n\");\n\n function getTokenComponents(token) {\n const raw = code.slice(token.start, token.end);\n return [\n formatRange(token.start, token.end),\n formatTokenType(token.type),\n truncate(String(raw), 14),\n // @ts-ignore: Intentional dynamic access by key.\n ...tokenKeys.map((key) => formatValue(token[key], key)),\n // @ts-ignore: Intentional dynamic access by key.\n ...typeKeys.map((key) => formatValue(token.type[key], key)),\n ];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function formatValue(value, key) {\n if (value === true) {\n return key;\n } else if (value === false || value === null) {\n return \"\";\n } else {\n return String(value);\n }\n }\n\n function formatRange(start, end) {\n return `${formatPos(start)}-${formatPos(end)}`;\n }\n\n function formatPos(pos) {\n const location = lines.locationForIndex(pos);\n if (!location) {\n return \"Unknown\";\n } else {\n return `${location.line + 1}:${location.column + 1}`;\n }\n }\n}\n\nfunction truncate(s, length) {\n if (s.length > length) {\n return `${s.slice(0, length - 3)}...`;\n } else {\n return s;\n }\n}\n", "import {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport getImportExportSpecifierInfo from \"./getImportExportSpecifierInfo\";\n\n/**\n * Special case code to scan for imported names in ESM TypeScript. We need to do this so we can\n * properly get globals so we can compute shadowed globals.\n *\n * This is similar to logic in CJSImportProcessor, but trimmed down to avoid logic with CJS\n * replacement and flow type imports.\n */\nexport default function getTSImportedNames(tokens) {\n const importedNames = new Set();\n for (let i = 0; i < tokens.tokens.length; i++) {\n if (\n tokens.matches1AtIndex(i, tt._import) &&\n !tokens.matches3AtIndex(i, tt._import, tt.name, tt.eq)\n ) {\n collectNamesForImport(tokens, i, importedNames);\n }\n }\n return importedNames;\n}\n\nfunction collectNamesForImport(\n tokens,\n index,\n importedNames,\n) {\n index++;\n\n if (tokens.matches1AtIndex(index, tt.parenL)) {\n // Dynamic import, so nothing to do\n return;\n }\n\n if (tokens.matches1AtIndex(index, tt.name)) {\n importedNames.add(tokens.identifierNameAtIndex(index));\n index++;\n if (tokens.matches1AtIndex(index, tt.comma)) {\n index++;\n }\n }\n\n if (tokens.matches1AtIndex(index, tt.star)) {\n // * as\n index += 2;\n importedNames.add(tokens.identifierNameAtIndex(index));\n index++;\n }\n\n if (tokens.matches1AtIndex(index, tt.braceL)) {\n index++;\n collectNamesForNamedImport(tokens, index, importedNames);\n }\n}\n\nfunction collectNamesForNamedImport(\n tokens,\n index,\n importedNames,\n) {\n while (true) {\n if (tokens.matches1AtIndex(index, tt.braceR)) {\n return;\n }\n\n const specifierInfo = getImportExportSpecifierInfo(tokens, index);\n index = specifierInfo.endIndex;\n if (!specifierInfo.isType) {\n importedNames.add(specifierInfo.rightName);\n }\n\n if (tokens.matches2AtIndex(index, tt.comma, tt.braceR)) {\n return;\n } else if (tokens.matches1AtIndex(index, tt.braceR)) {\n return;\n } else if (tokens.matches1AtIndex(index, tt.comma)) {\n index++;\n } else {\n throw new Error(`Unexpected token: ${JSON.stringify(tokens.tokens[index])}`);\n }\n }\n}\n", "import CJSImportProcessor from \"./CJSImportProcessor\";\nimport computeSourceMap, {} from \"./computeSourceMap\";\nimport {HelperManager} from \"./HelperManager\";\nimport identifyShadowedGlobals from \"./identifyShadowedGlobals\";\nimport NameManager from \"./NameManager\";\nimport {validateOptions} from \"./Options\";\n\nimport {parse} from \"./parser\";\n\nimport TokenProcessor from \"./TokenProcessor\";\nimport RootTransformer from \"./transformers/RootTransformer\";\nimport formatTokens from \"./util/formatTokens\";\nimport getTSImportedNames from \"./util/getTSImportedNames\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n;\n\nexport function getVersion() {\n /* istanbul ignore next */\n return \"3.35.1\";\n}\n\nexport function transform(code, options) {\n validateOptions(options);\n try {\n const sucraseContext = getSucraseContext(code, options);\n const transformer = new RootTransformer(\n sucraseContext,\n options.transforms,\n Boolean(options.enableLegacyBabel5ModuleInterop),\n options,\n );\n const transformerResult = transformer.transform();\n let result = {code: transformerResult.code};\n if (options.sourceMapOptions) {\n if (!options.filePath) {\n throw new Error(\"filePath must be specified when generating a source map.\");\n }\n result = {\n ...result,\n sourceMap: computeSourceMap(\n transformerResult,\n options.filePath,\n options.sourceMapOptions,\n code,\n sucraseContext.tokenProcessor.tokens,\n ),\n };\n }\n return result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e) {\n if (options.filePath) {\n e.message = `Error transforming ${options.filePath}: ${e.message}`;\n }\n throw e;\n }\n}\n\n/**\n * Return a string representation of the sucrase tokens, mostly useful for\n * diagnostic purposes.\n */\nexport function getFormattedTokens(code, options) {\n const tokens = getSucraseContext(code, options).tokenProcessor.tokens;\n return formatTokens(code, tokens);\n}\n\n/**\n * Call into the parser/tokenizer and do some further preprocessing:\n * - Come up with a set of used names so that we can assign new names.\n * - Preprocess all import/export statements so we know which globals we are interested in.\n * - Compute situations where any of those globals are shadowed.\n *\n * In the future, some of these preprocessing steps can be skipped based on what actual work is\n * being done.\n */\nfunction getSucraseContext(code, options) {\n const isJSXEnabled = options.transforms.includes(\"jsx\");\n const isTypeScriptEnabled = options.transforms.includes(\"typescript\");\n const isFlowEnabled = options.transforms.includes(\"flow\");\n const disableESTransforms = options.disableESTransforms === true;\n const file = parse(code, isJSXEnabled, isTypeScriptEnabled, isFlowEnabled);\n const tokens = file.tokens;\n const scopes = file.scopes;\n\n const nameManager = new NameManager(code, tokens);\n const helperManager = new HelperManager(nameManager);\n const tokenProcessor = new TokenProcessor(\n code,\n tokens,\n isFlowEnabled,\n disableESTransforms,\n helperManager,\n );\n const enableLegacyTypeScriptModuleInterop = Boolean(options.enableLegacyTypeScriptModuleInterop);\n\n let importProcessor = null;\n if (options.transforms.includes(\"imports\")) {\n importProcessor = new CJSImportProcessor(\n nameManager,\n tokenProcessor,\n enableLegacyTypeScriptModuleInterop,\n options,\n options.transforms.includes(\"typescript\"),\n Boolean(options.keepUnusedImports),\n helperManager,\n );\n importProcessor.preprocessTokens();\n // We need to mark shadowed globals after processing imports so we know that the globals are,\n // but before type-only import pruning, since that relies on shadowing information.\n identifyShadowedGlobals(tokenProcessor, scopes, importProcessor.getGlobalNames());\n if (options.transforms.includes(\"typescript\") && !options.keepUnusedImports) {\n importProcessor.pruneTypeOnlyImports();\n }\n } else if (options.transforms.includes(\"typescript\") && !options.keepUnusedImports) {\n // Shadowed global detection is needed for TS implicit elision of imported names.\n identifyShadowedGlobals(tokenProcessor, scopes, getTSImportedNames(tokenProcessor));\n }\n return {tokenProcessor, scopes, nameManager, importProcessor, helperManager};\n}\n", "// Use the asm.js version to avoid WASM (works in workerd)\nimport { parse } from \"es-module-lexer/js\";\nimport * as resolveExports from \"resolve.exports\";\nimport type { Files } from \"./types\";\n\nexport interface ResolveOptions {\n /**\n * All files in the virtual file system\n */\n files: Files;\n\n /**\n * Directory of the importing file (relative to root)\n */\n importer?: string;\n\n /**\n * Conditions for exports resolution (e.g., 'import', 'require', 'browser')\n */\n conditions?: string[];\n\n /**\n * Extensions to try when resolving\n */\n extensions?: string[];\n}\n\nexport interface ResolveResult {\n /**\n * Resolved path (relative to root)\n */\n path: string;\n\n /**\n * Whether this is an external module (npm package not in files)\n */\n external: boolean;\n}\n\nconst DEFAULT_EXTENSIONS = [\n \".ts\",\n \".tsx\",\n \".js\",\n \".jsx\",\n \".mts\",\n \".mjs\",\n \".json\"\n];\n\n/**\n * Resolve a module specifier to a file path in the virtual file system.\n *\n * Handles:\n * - Relative imports (./foo, ../bar)\n * - Package imports (lodash, @scope/pkg)\n * - Package.json exports field\n * - Extension resolution (.ts, .tsx, .js, etc.)\n * - Index file resolution (foo/index.ts)\n *\n * @param specifier - The import specifier (e.g., './utils', 'lodash')\n * @param options - Resolution options\n * @returns Resolved path or external marker\n */\nexport function resolveModule(\n specifier: string,\n options: ResolveOptions\n): ResolveResult {\n const {\n files,\n importer = \"\",\n conditions = [\"import\", \"browser\"],\n extensions = DEFAULT_EXTENSIONS\n } = options;\n\n // Handle relative imports\n if (specifier.startsWith(\".\") || specifier.startsWith(\"/\")) {\n const resolved = resolveRelative(specifier, importer, files, extensions);\n if (resolved) {\n return { path: resolved, external: false };\n }\n // Relative import not found\n throw new Error(\n `Cannot resolve relative import '${specifier}' from '${importer}'`\n );\n }\n\n // Handle bare specifiers (npm packages)\n return resolvePackage(specifier, files, conditions, extensions);\n}\n\n/**\n * Resolve a relative import\n */\nfunction resolveRelative(\n specifier: string,\n importer: string,\n files: Files,\n extensions: string[]\n): string | undefined {\n // Get the directory of the importer\n const importerDir = getDirectory(importer);\n\n // Resolve the path\n const resolved = joinPaths(importerDir, specifier);\n\n return resolveWithExtensions(resolved, files, extensions);\n}\n\n/**\n * Resolve a package specifier\n */\nfunction resolvePackage(\n specifier: string,\n files: Files,\n conditions: string[],\n extensions: string[]\n): ResolveResult {\n // Parse the specifier\n const { packageName, subpath } = parsePackageSpecifier(specifier);\n\n // Look for the package in node_modules\n const packageJsonPath = `node_modules/${packageName}/package.json`;\n const packageJson = files[packageJsonPath];\n\n if (!packageJson) {\n // Package not found in files, mark as external\n return { path: specifier, external: true };\n }\n\n // Parse package.json\n let pkg: Record<string, unknown>;\n try {\n pkg = JSON.parse(packageJson) as Record<string, unknown>;\n } catch {\n throw new Error(`Invalid package.json for ${packageName}`);\n }\n\n // Use resolve.exports to handle the exports field\n const entrySubpath = subpath ? `./${subpath}` : \".\";\n\n try {\n const resolved = resolveExports.resolve(pkg, entrySubpath, { conditions });\n if (resolved && resolved.length > 0) {\n // resolve.exports returns relative paths like './dist/index.js'\n const resolvedPath = resolved[0];\n if (resolvedPath) {\n const fullPath = `node_modules/${packageName}/${normalizeRelativePath(resolvedPath)}`;\n if (fullPath in files) {\n return { path: fullPath, external: false };\n }\n }\n }\n } catch {\n // resolve.exports failed, try legacy resolution\n }\n\n // Fall back to legacy resolution (main, module fields)\n const legacyEntry = resolveExports.legacy(pkg, {\n fields: [\"module\", \"main\"]\n });\n if (legacyEntry && typeof legacyEntry === \"string\") {\n const fullPath = `node_modules/${packageName}/${normalizeRelativePath(legacyEntry)}`;\n if (fullPath in files) {\n return { path: fullPath, external: false };\n }\n }\n\n // Try index files directly\n const indexPath = resolveWithExtensions(\n `node_modules/${packageName}${subpath ? `/${subpath}` : \"\"}`,\n files,\n extensions\n );\n if (indexPath) {\n return { path: indexPath, external: false };\n }\n\n // Package found but entry point not resolved, mark as external\n return { path: specifier, external: true };\n}\n\n/**\n * Try to resolve a path with various extensions and index files\n */\nfunction resolveWithExtensions(\n path: string,\n files: Files,\n extensions: string[]\n): string | undefined {\n // Normalize the path\n const normalized = normalizePath(path);\n\n // Try exact match first\n if (normalized in files) {\n return normalized;\n }\n\n // Try adding extensions\n for (const ext of extensions) {\n const withExt = normalized + ext;\n if (withExt in files) {\n return withExt;\n }\n }\n\n // Try index files\n for (const ext of extensions) {\n const indexPath = `${normalized}/index${ext}`;\n if (indexPath in files) {\n return indexPath;\n }\n }\n\n return undefined;\n}\n\n/**\n * Parse a package specifier into package name and subpath\n */\nfunction parsePackageSpecifier(specifier: string): {\n packageName: string;\n subpath: string | undefined;\n} {\n // Handle scoped packages (@scope/pkg)\n if (specifier.startsWith(\"@\")) {\n const parts = specifier.split(\"/\");\n if (parts.length >= 2) {\n const packageName = `${parts[0]}/${parts[1]}`;\n const subpath = parts.slice(2).join(\"/\") || undefined;\n return { packageName, subpath };\n }\n }\n\n // Handle regular packages\n const slashIndex = specifier.indexOf(\"/\");\n if (slashIndex === -1) {\n return { packageName: specifier, subpath: undefined };\n }\n\n return {\n packageName: specifier.slice(0, slashIndex),\n subpath: specifier.slice(slashIndex + 1)\n };\n}\n\n/**\n * Get the directory of a file path\n */\nfunction getDirectory(filePath: string): string {\n const lastSlash = filePath.lastIndexOf(\"/\");\n if (lastSlash === -1) {\n return \"\";\n }\n return filePath.slice(0, lastSlash);\n}\n\n/**\n * Join two paths\n */\nfunction joinPaths(base: string, relative: string): string {\n if (relative.startsWith(\"/\")) {\n return relative.slice(1);\n }\n\n const baseParts = base ? base.split(\"/\") : [];\n const relativeParts = relative.split(\"/\");\n\n for (const part of relativeParts) {\n if (part === \"..\") {\n baseParts.pop();\n } else if (part !== \".\") {\n baseParts.push(part);\n }\n }\n\n return baseParts.join(\"/\");\n}\n\n/**\n * Normalize a path (remove ./ prefix, handle multiple slashes)\n */\nfunction normalizePath(path: string): string {\n return path.replace(/^\\.\\//, \"\").replace(/\\/+/g, \"/\").replace(/\\/$/, \"\");\n}\n\n/**\n * Normalize a relative path from package.json\n */\nfunction normalizeRelativePath(path: string): string {\n if (path.startsWith(\"./\")) {\n return path.slice(2);\n }\n if (path.startsWith(\"/\")) {\n return path.slice(1);\n }\n return path;\n}\n\n/**\n * Parse imports from a JavaScript/TypeScript source file.\n *\n * Uses es-module-lexer for accurate parsing of ES module syntax.\n * Falls back to regex for JSX files since es-module-lexer doesn't\n * handle JSX syntax (e.g., `<div>` is not valid JavaScript).\n */\nexport function parseImports(code: string): string[] {\n try {\n const [imports] = parse(code);\n const specifiers: string[] = [];\n\n for (const imp of imports) {\n // imp.n is the resolved module specifier (handles escape sequences)\n // imp.n is undefined for dynamic imports with non-string arguments\n if (imp.n !== undefined) {\n specifiers.push(imp.n);\n }\n }\n\n return [...new Set(specifiers)]; // Deduplicate\n } catch {\n // es-module-lexer fails on JSX syntax (<Component />) and malformed code\n // Fall back to regex-based parsing\n return parseImportsRegex(code);\n }\n}\n\n/**\n * Regex-based fallback for parsing imports.\n * Used when es-module-lexer fails (e.g., on JSX/TSX files).\n */\nfunction parseImportsRegex(code: string): string[] {\n const imports: string[] = [];\n\n // Match ES module imports\n // import foo from 'bar'\n // import { foo } from 'bar'\n // import * as foo from 'bar'\n // import 'bar'\n const importRegex =\n /import\\s+(?:(?:[\\w*{}\\s,]+)\\s+from\\s+)?['\"]([^'\"]+)['\"]/g;\n for (const match of code.matchAll(importRegex)) {\n const specifier = match[1];\n if (specifier) {\n imports.push(specifier);\n }\n }\n\n // Match dynamic imports\n // import('bar')\n // await import('bar')\n const dynamicImportRegex = /import\\s*\\(\\s*['\"]([^'\"]+)['\"]\\s*\\)/g;\n for (const match of code.matchAll(dynamicImportRegex)) {\n const specifier = match[1];\n if (specifier) {\n imports.push(specifier);\n }\n }\n\n // Match export from\n // export { foo } from 'bar'\n // export * from 'bar'\n const exportFromRegex =\n /export\\s+(?:[\\w*{}\\s,]+\\s+)?from\\s+['\"]([^'\"]+)['\"]/g;\n for (const match of code.matchAll(exportFromRegex)) {\n const specifier = match[1];\n if (specifier) {\n imports.push(specifier);\n }\n }\n\n return [...new Set(imports)]; // Deduplicate\n}\n", "/**\n * esbuild-wasm bundling functionality.\n */\n\n// Use the browser entry directly — the default \"main\" entry rejects\n// wasmModule in Workers with nodejs_compat (it thinks it's Node.js).\nimport * as esbuild from \"esbuild-wasm/lib/browser.js\";\n\n// @ts-expect-error - WASM module import\nimport esbuildWasm from \"./esbuild.wasm\";\nimport { resolveModule } from \"./resolver\";\nimport type { CreateWorkerResult, Files, Modules } from \"./types\";\n\n/**\n * Bundle files using esbuild-wasm\n */\nexport async function bundleWithEsbuild(\n files: Files,\n entryPoint: string,\n externals: string[],\n target: string,\n minify: boolean,\n sourcemap: boolean,\n nodejsCompat: boolean\n): Promise<CreateWorkerResult> {\n // Ensure esbuild is initialized (happens lazily on first use)\n await initializeEsbuild();\n\n // Create a virtual file system plugin for esbuild\n const virtualFsPlugin: esbuild.Plugin = {\n name: \"virtual-fs\",\n setup(build) {\n // Resolve all paths to our virtual file system\n build.onResolve({ filter: /.*/ }, (args) => {\n // Handle entry point - it's passed directly without ./ prefix\n if (args.kind === \"entry-point\") {\n return { path: args.path, namespace: \"virtual\" };\n }\n\n // Handle relative imports\n if (args.path.startsWith(\".\")) {\n const resolved = resolveRelativePath(\n args.resolveDir,\n args.path,\n files\n );\n if (resolved) {\n return { path: resolved, namespace: \"virtual\" };\n }\n }\n\n // Handle bare imports (npm packages)\n if (!args.path.startsWith(\"/\") && !args.path.startsWith(\".\")) {\n // Check if it's in externals\n if (\n externals.includes(args.path) ||\n externals.some(\n (e) => args.path.startsWith(`${e}/`) || args.path.startsWith(e)\n )\n ) {\n return { path: args.path, external: true };\n }\n\n // Try to resolve from node_modules in virtual fs\n try {\n const result = resolveModule(args.path, { files });\n if (!result.external) {\n return { path: result.path, namespace: \"virtual\" };\n }\n } catch {\n // Resolution failed\n }\n\n // Mark as external (package not found in node_modules)\n return { path: args.path, external: true };\n }\n\n // Absolute paths in virtual fs\n const normalizedPath = args.path.startsWith(\"/\")\n ? args.path.slice(1)\n : args.path;\n if (normalizedPath in files) {\n return { path: normalizedPath, namespace: \"virtual\" };\n }\n\n return { path: args.path, external: true };\n });\n\n // Load files from virtual file system\n build.onLoad({ filter: /.*/, namespace: \"virtual\" }, (args) => {\n const content = files[args.path];\n if (content === undefined) {\n return { errors: [{ text: `File not found: ${args.path}` }] };\n }\n\n const loader = getLoader(args.path);\n // Set resolveDir so relative imports within this file resolve correctly\n const lastSlash = args.path.lastIndexOf(\"/\");\n const resolveDir = lastSlash >= 0 ? args.path.slice(0, lastSlash) : \"\";\n return { contents: content, loader, resolveDir };\n });\n }\n };\n\n const result = await esbuild.build({\n entryPoints: [entryPoint],\n bundle: true,\n write: false,\n format: \"esm\",\n platform: nodejsCompat ? \"node\" : \"browser\",\n target,\n minify,\n sourcemap: sourcemap ? \"inline\" : false,\n plugins: [virtualFsPlugin],\n outfile: \"bundle.js\"\n });\n\n const output = result.outputFiles?.[0];\n if (!output) {\n throw new Error(\"No output generated from esbuild\");\n }\n\n const modules: Modules = {\n \"bundle.js\": output.text\n };\n\n const warnings = result.warnings.map((w) => w.text);\n if (warnings.length > 0) {\n return { mainModule: \"bundle.js\", modules, warnings };\n }\n return { mainModule: \"bundle.js\", modules };\n}\n\n/**\n * Resolve a relative path against a directory within the virtual filesystem.\n */\nfunction resolveRelativePath(\n resolveDir: string,\n relativePath: string,\n files: Files\n): string | undefined {\n // Normalize the resolve directory\n const dir = resolveDir.replace(/^\\//, \"\");\n\n // Resolve the relative path\n const parts = dir ? dir.split(\"/\") : [];\n const relParts = relativePath.split(\"/\");\n\n for (const part of relParts) {\n if (part === \"..\") {\n parts.pop();\n } else if (part !== \".\") {\n parts.push(part);\n }\n }\n\n const resolved = parts.join(\"/\");\n\n // Try exact match\n if (resolved in files) {\n return resolved;\n }\n\n // Try adding extensions\n const extensions = [\".ts\", \".tsx\", \".js\", \".jsx\", \".mts\", \".mjs\"];\n for (const ext of extensions) {\n if (resolved + ext in files) {\n return resolved + ext;\n }\n }\n\n // Try index files\n for (const ext of extensions) {\n const indexPath = `${resolved}/index${ext}`;\n if (indexPath in files) {\n return indexPath;\n }\n }\n\n return undefined;\n}\n\nfunction getLoader(path: string): esbuild.Loader {\n if (path.endsWith(\".ts\") || path.endsWith(\".mts\")) return \"ts\";\n if (path.endsWith(\".tsx\")) return \"tsx\";\n if (path.endsWith(\".jsx\")) return \"jsx\";\n if (path.endsWith(\".json\")) return \"json\";\n if (path.endsWith(\".css\")) return \"css\";\n return \"js\";\n}\n\n// Track esbuild initialization state\nlet esbuildInitialized = false;\nlet esbuildInitializePromise: Promise<void> | null = null;\n\n/**\n * Initialize the esbuild bundler.\n * This is called automatically when needed.\n */\nasync function initializeEsbuild(): Promise<void> {\n // If already initialized, return immediately\n if (esbuildInitialized) return;\n\n // If initialization is in progress, wait for it\n if (esbuildInitializePromise) {\n return esbuildInitializePromise;\n }\n\n // Start initialization\n esbuildInitializePromise = (async () => {\n try {\n await esbuild.initialize({\n wasmModule: esbuildWasm,\n worker: false\n });\n\n esbuildInitialized = true;\n } catch (error) {\n // If initialization fails, esbuild may already be initialized\n if (\n error instanceof Error &&\n error.message.includes('Cannot call \"initialize\" more than once')\n ) {\n esbuildInitialized = true;\n return;\n }\n throw error;\n }\n })();\n\n try {\n await esbuildInitializePromise;\n } catch (error) {\n // Reset promise so caller can try again\n esbuildInitializePromise = null;\n throw error;\n }\n}\n", "/**\n * Wrangler configuration parsing.\n *\n * Parses wrangler.toml, wrangler.json, and wrangler.jsonc files\n * to extract compatibility settings.\n */\n\nimport { parse as parseToml } from \"smol-toml\";\nimport type { Files, WranglerConfig } from \"./types\";\n\n/**\n * Parse wrangler configuration from files.\n *\n * Looks for wrangler.toml, wrangler.json, or wrangler.jsonc in the files\n * and extracts compatibility_date and compatibility_flags.\n *\n * @param files - Virtual file system\n * @returns Parsed wrangler config, or undefined if no config file found\n */\nexport function parseWranglerConfig(files: Files): WranglerConfig | undefined {\n // Try each config file format in order of preference\n const tomlContent = files[\"wrangler.toml\"];\n if (tomlContent) {\n return parseWranglerToml(tomlContent);\n }\n\n const jsonContent = files[\"wrangler.json\"];\n if (jsonContent) {\n return parseWranglerJson(jsonContent);\n }\n\n const jsoncContent = files[\"wrangler.jsonc\"];\n if (jsoncContent) {\n return parseWranglerJsonc(jsoncContent);\n }\n\n return undefined;\n}\n\n/**\n * Parse wrangler.toml content\n */\nfunction parseWranglerToml(content: string): WranglerConfig {\n try {\n const config = parseToml(content) as Record<string, unknown>;\n return extractWranglerConfig(config);\n } catch {\n return {};\n }\n}\n\n/**\n * Parse wrangler.json content\n */\nfunction parseWranglerJson(content: string): WranglerConfig {\n try {\n const config = JSON.parse(content) as Record<string, unknown>;\n return extractWranglerConfig(config);\n } catch {\n return {};\n }\n}\n\n/**\n * Parse wrangler.jsonc content (JSON with comments)\n */\nfunction parseWranglerJsonc(content: string): WranglerConfig {\n try {\n // Strip comments from JSONC\n const jsonContent = stripJsonComments(content);\n const config = JSON.parse(jsonContent) as Record<string, unknown>;\n return extractWranglerConfig(config);\n } catch {\n return {};\n }\n}\n\n/**\n * Extract wrangler config fields from parsed config object.\n * Handles both snake_case (toml) and camelCase (json) formats.\n */\nfunction extractWranglerConfig(\n config: Record<string, unknown>\n): WranglerConfig {\n const result: WranglerConfig = {};\n\n // main entry point\n const main = config[\"main\"];\n if (typeof main === \"string\") {\n result.main = main;\n }\n\n // compatibility_date (toml) or compatibilityDate (json)\n const date = config[\"compatibility_date\"] ?? config[\"compatibilityDate\"];\n if (typeof date === \"string\") {\n result.compatibilityDate = date;\n }\n\n // compatibility_flags (toml) or compatibilityFlags (json)\n const flags = config[\"compatibility_flags\"] ?? config[\"compatibilityFlags\"];\n if (Array.isArray(flags) && flags.every((f) => typeof f === \"string\")) {\n result.compatibilityFlags = flags;\n }\n\n return result;\n}\n\n/**\n * Strip comments from JSONC content.\n * Handles both single-line (//) and multi-line comments.\n */\nfunction stripJsonComments(content: string): string {\n let result = \"\";\n let i = 0;\n let inString = false;\n let stringChar = \"\";\n\n while (i < content.length) {\n const char = content[i];\n const nextChar = content[i + 1];\n\n // Handle string literals (don't strip comments inside strings)\n if (\n (char === '\"' || char === \"'\") &&\n (i === 0 || content[i - 1] !== \"\\\\\")\n ) {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n }\n result += char;\n i++;\n continue;\n }\n\n if (inString) {\n result += char;\n i++;\n continue;\n }\n\n // Handle single-line comments\n if (char === \"/\" && nextChar === \"/\") {\n // Skip until end of line\n while (i < content.length && content[i] !== \"\\n\") {\n i++;\n }\n continue;\n }\n\n // Handle multi-line comments\n if (char === \"/\" && nextChar === \"*\") {\n i += 2;\n // Skip until */\n while (\n i < content.length - 1 &&\n !(content[i] === \"*\" && content[i + 1] === \"/\")\n ) {\n i++;\n }\n i += 2; // Skip */\n continue;\n }\n\n result += char;\n i++;\n }\n\n return result;\n}\n\n/**\n * Check if nodejs_compat flag is enabled in the config.\n */\nexport function hasNodejsCompat(config: WranglerConfig | undefined): boolean {\n return config?.compatibilityFlags?.includes(\"nodejs_compat\") ?? false;\n}\n", "/**\n * NPM package installer for virtual file systems.\n *\n * This module fetches packages from the npm registry and populates\n * a virtual node_modules directory structure.\n */\n\nimport * as semver from \"semver\";\nimport type { Files } from \"./types\";\n\nconst NPM_REGISTRY = \"https://registry.npmjs.org\";\nconst DEFAULT_TIMEOUT_MS = 30000; // 30 seconds\n\n/**\n * Fetch with a timeout.\n * Throws an error if the request takes longer than the specified timeout.\n */\nasync function fetchWithTimeout(\n url: string,\n options: RequestInit = {},\n timeoutMs = DEFAULT_TIMEOUT_MS\n): Promise<Response> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeoutMs);\n\n try {\n return await fetch(url, { ...options, signal: controller.signal });\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new Error(`Request timed out after ${timeoutMs}ms: ${url}`);\n }\n throw error;\n } finally {\n clearTimeout(timeoutId);\n }\n}\n\ninterface PackageJson {\n name: string;\n version: string;\n main?: string;\n module?: string;\n exports?: unknown;\n dependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n dist?: {\n tarball: string;\n integrity?: string;\n };\n}\n\ninterface NpmPackageMetadata {\n name: string;\n \"dist-tags\": Record<string, string>;\n versions: Record<string, PackageJson>;\n}\n\ninterface InstallOptions {\n /**\n * Include devDependencies (default: false)\n */\n dev?: boolean;\n\n /**\n * Registry URL (default: https://registry.npmjs.org)\n */\n registry?: string;\n}\n\ninterface InstallResult {\n /**\n * Files with node_modules populated\n */\n files: Files;\n\n /**\n * Packages that were installed\n */\n installed: string[];\n\n /**\n * Warnings encountered during installation\n */\n warnings: string[];\n}\n\n/**\n * Install npm dependencies into a virtual file system.\n *\n * Reads the package.json from the files, resolves all dependencies,\n * and populates node_modules with the package contents.\n *\n * @param files - Virtual file system containing package.json\n * @param options - Installation options\n * @returns Files with node_modules populated\n */\nexport async function installDependencies(\n files: Files,\n options: InstallOptions = {}\n): Promise<InstallResult> {\n const { dev = false, registry = NPM_REGISTRY } = options;\n\n const result: InstallResult = {\n files: { ...files },\n installed: [],\n warnings: []\n };\n\n // Read package.json\n const packageJsonContent = files[\"package.json\"];\n if (!packageJsonContent) {\n return result; // No package.json, nothing to install\n }\n\n let packageJson: PackageJson;\n try {\n packageJson = JSON.parse(packageJsonContent) as PackageJson;\n } catch {\n result.warnings.push(\"Failed to parse package.json\");\n return result;\n }\n\n // Collect dependencies to install\n const depsToInstall: Record<string, string> = {\n ...packageJson.dependencies,\n ...(dev ? packageJson.devDependencies : {})\n };\n\n if (Object.keys(depsToInstall).length === 0) {\n return result; // No dependencies to install\n }\n\n // Track installed packages to avoid duplicates\n const installedPackages = new Map<string, string>(); // name -> version\n // Track in-progress installations to avoid duplicate work\n const inProgress = new Map<string, Promise<void>>();\n\n // Install all dependencies in parallel\n await Promise.all(\n Object.entries(depsToInstall).map(([name, versionRange]) =>\n installPackage(\n name,\n versionRange,\n result,\n installedPackages,\n inProgress,\n registry\n )\n )\n );\n\n return result;\n}\n\n/**\n * Install a single package and its dependencies recursively.\n */\nasync function installPackage(\n name: string,\n versionRange: string,\n result: InstallResult,\n installedPackages: Map<string, string>,\n inProgress: Map<string, Promise<void>>,\n registry: string\n): Promise<void> {\n // Skip if already installed\n if (installedPackages.has(name)) {\n return;\n }\n\n // If installation is already in progress, wait for it\n const existing = inProgress.get(name);\n if (existing) {\n return existing;\n }\n\n // Create the installation promise\n const installPromise = (async () => {\n try {\n // Fetch package metadata from registry\n const metadata = await fetchPackageMetadata(name, registry);\n\n // Resolve version from range\n const version = resolveVersion(versionRange, metadata);\n if (!version) {\n result.warnings.push(\n `Could not resolve version for ${name}@${versionRange}`\n );\n return;\n }\n\n // Get the specific version metadata\n const versionMetadata = metadata.versions[version];\n if (!versionMetadata) {\n result.warnings.push(`Version ${version} not found for ${name}`);\n return;\n }\n\n // Mark as installed (before fetching to prevent cycles)\n installedPackages.set(name, version);\n result.installed.push(`${name}@${version}`);\n\n // Fetch and extract the package tarball\n const packageFiles = await fetchPackageFiles(name, versionMetadata);\n\n // Add files to node_modules\n for (const [filePath, content] of Object.entries(packageFiles)) {\n result.files[`node_modules/${name}/${filePath}`] = content;\n }\n\n // Install dependencies in parallel\n const deps = versionMetadata.dependencies ?? {};\n await Promise.all(\n Object.entries(deps).map(([depName, depVersion]) =>\n installPackage(\n depName,\n depVersion,\n result,\n installedPackages,\n inProgress,\n registry\n )\n )\n );\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n result.warnings.push(`Failed to install ${name}: ${message}`);\n }\n })();\n\n // Track in progress\n inProgress.set(name, installPromise);\n\n try {\n await installPromise;\n } finally {\n inProgress.delete(name);\n }\n}\n\n/**\n * Fetch package metadata from npm registry.\n */\nasync function fetchPackageMetadata(\n name: string,\n registry: string\n): Promise<NpmPackageMetadata> {\n // Handle scoped packages\n const encodedName = name.startsWith(\"@\")\n ? `@${encodeURIComponent(name.slice(1))}`\n : name;\n const url = `${registry}/${encodedName}`;\n\n const response = await fetchWithTimeout(url, {\n headers: {\n // Use abbreviated metadata to avoid fetching megabytes of version data\n Accept:\n \"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8\"\n }\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch package metadata: ${response.status}`);\n }\n\n return (await response.json()) as NpmPackageMetadata;\n}\n\n/**\n * Resolve a semver range to a specific version.\n */\nfunction resolveVersion(\n range: string,\n metadata: NpmPackageMetadata\n): string | undefined {\n // Handle special cases\n if (range === \"latest\" || range === \"*\") {\n return metadata[\"dist-tags\"][\"latest\"];\n }\n\n // Handle exact versions\n if (metadata.versions[range]) {\n return range;\n }\n\n // Handle dist-tags (e.g., \"next\", \"beta\")\n if (metadata[\"dist-tags\"][range]) {\n return metadata[\"dist-tags\"][range];\n }\n\n // Use semver.maxSatisfying to find the best matching version\n const versions = Object.keys(metadata.versions);\n const match = semver.maxSatisfying(versions, range);\n\n return match ?? undefined;\n}\n\n/**\n * Fetch and extract package files from npm tarball.\n */\nasync function fetchPackageFiles(\n name: string,\n metadata: PackageJson\n): Promise<Record<string, string>> {\n const tarballUrl = metadata.dist?.tarball;\n if (!tarballUrl) {\n throw new Error(`No tarball URL for ${name}`);\n }\n\n // Fetch the tarball (use longer timeout for potentially large packages)\n const response = await fetchWithTimeout(\n tarballUrl,\n {},\n DEFAULT_TIMEOUT_MS * 2\n );\n if (!response.ok) {\n throw new Error(`Failed to fetch tarball: ${response.status}`);\n }\n\n // Get the tarball as array buffer\n const buffer = await response.arrayBuffer();\n\n // Extract the tarball (npm tarballs are gzipped tar files)\n return extractTarball(new Uint8Array(buffer));\n}\n\n/**\n * Extract files from a gzipped tarball.\n *\n * npm packages are distributed as .tgz files (gzipped tar).\n * The contents are in a \"package/\" directory.\n */\nasync function extractTarball(\n data: Uint8Array\n): Promise<Record<string, string>> {\n // Decompress gzip\n const decompressed = await decompress(data);\n\n // Parse tar\n return parseTar(decompressed);\n}\n\n/**\n * Decompress gzip data using DecompressionStream.\n */\nasync function decompress(data: Uint8Array): Promise<Uint8Array> {\n // Use DecompressionStream (available in Workers and modern browsers)\n const ds = new DecompressionStream(\"gzip\");\n const writer = ds.writable.getWriter();\n const reader = ds.readable.getReader();\n\n // Write compressed data\n writer.write(data as Uint8Array<ArrayBuffer>).catch(() => {});\n writer.close().catch(() => {});\n\n // Read decompressed data\n const chunks: Uint8Array[] = [];\n let totalLength = 0;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n chunks.push(value);\n totalLength += value.length;\n }\n\n // Concatenate chunks\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.length;\n }\n\n return result;\n}\n\n/**\n * Parse a tar archive and extract text files.\n *\n * TAR format:\n * - 512-byte header blocks\n * - File content (padded to 512 bytes)\n * - Two empty blocks at the end\n */\nfunction parseTar(data: Uint8Array): Record<string, string> {\n const files: Record<string, string> = {};\n const textDecoder = new TextDecoder();\n let offset = 0;\n\n while (offset < data.length - 512) {\n // Read header\n const header = data.slice(offset, offset + 512);\n\n // Check for empty block (end of archive)\n if (header.every((b) => b === 0)) {\n break;\n }\n\n // Parse header fields\n const name = readString(header, 0, 100);\n const sizeStr = readString(header, 124, 12);\n const typeFlag = header[156];\n\n // Parse size (octal)\n const size = parseInt(sizeStr.trim(), 8) || 0;\n\n // Move past header\n offset += 512;\n\n // Only process regular files (type '0' or '\\0')\n if ((typeFlag === 48 || typeFlag === 0) && size > 0) {\n // Read file content\n const content = data.slice(offset, offset + size);\n\n // Remove \"package/\" prefix from npm tarballs\n let filePath = name;\n if (filePath.startsWith(\"package/\")) {\n filePath = filePath.slice(8);\n }\n\n // Only include text files (skip binary files)\n if (isTextFile(filePath)) {\n try {\n files[filePath] = textDecoder.decode(content);\n } catch {\n // Skip files that can't be decoded as text\n }\n }\n }\n\n // Move to next block (content is padded to 512 bytes)\n offset += Math.ceil(size / 512) * 512;\n }\n\n return files;\n}\n\n/**\n * Read a null-terminated string from a buffer.\n */\nfunction readString(\n buffer: Uint8Array,\n offset: number,\n length: number\n): string {\n const bytes = buffer.slice(offset, offset + length);\n const nullIndex = bytes.indexOf(0);\n const relevantBytes = nullIndex >= 0 ? bytes.slice(0, nullIndex) : bytes;\n return new TextDecoder().decode(relevantBytes);\n}\n\n/**\n * Check if a file path is likely a text file.\n */\nfunction isTextFile(path: string): boolean {\n const textExtensions = [\n \".js\",\n \".mjs\",\n \".cjs\",\n \".ts\",\n \".mts\",\n \".cts\",\n \".tsx\",\n \".jsx\",\n \".json\",\n \".md\",\n \".txt\",\n \".css\",\n \".html\",\n \".yml\",\n \".yaml\",\n \".toml\",\n \".xml\",\n \".svg\",\n \".map\",\n \".d.ts\",\n \".d.mts\",\n \".d.cts\"\n ];\n\n // Check common config files without extensions\n const configFiles = [\n \"LICENSE\",\n \"README\",\n \"CHANGELOG\",\n \"package.json\",\n \"tsconfig.json\",\n \".npmignore\",\n \".gitignore\"\n ];\n\n const fileName = path.split(\"/\").pop() ?? \"\";\n\n if (\n configFiles.some((f) => fileName.toUpperCase().startsWith(f.toUpperCase()))\n ) {\n return true;\n }\n\n return textExtensions.some((ext) => path.toLowerCase().endsWith(ext));\n}\n\n/**\n * Check if files contain a package.json with dependencies that need installing.\n */\nexport function hasDependencies(files: Files): boolean {\n const packageJson = files[\"package.json\"];\n if (!packageJson) return false;\n\n try {\n const pkg = JSON.parse(packageJson);\n const deps = pkg.dependencies ?? {};\n return Object.keys(deps).length > 0;\n } catch {\n return false;\n }\n}\n", "import { transform } from \"sucrase\";\nimport { parseImports, resolveModule } from \"./resolver\";\nimport type { CreateWorkerResult, Files, Modules } from \"./types\";\n\nexport interface TransformResult {\n code: string;\n sourceMap?: string;\n}\n\nexport interface TransformOptions {\n /**\n * Source file path (for source maps and error messages)\n */\n filePath: string;\n\n /**\n * Whether to generate source maps\n */\n sourceMap?: boolean;\n\n /**\n * Whether to preserve JSX (don't transform to createElement calls)\n */\n preserveJsx?: boolean;\n\n /**\n * JSX runtime ('automatic' for new JSX transform, 'classic' for React.createElement)\n */\n jsxRuntime?: \"automatic\" | \"classic\" | \"preserve\";\n\n /**\n * JSX import source for automatic runtime (default: 'react')\n */\n jsxImportSource?: string;\n\n /**\n * Whether this is a production build\n */\n production?: boolean;\n}\n\n/**\n * Transform TypeScript/JSX code to JavaScript using Sucrase.\n *\n * Sucrase is a super-fast TypeScript transformer that:\n * - Strips type annotations\n * - Transforms JSX\n * - Is ~20x faster than Babel\n * - Works in any JS environment (no WASM needed)\n *\n * @param code - Source code to transform\n * @param options - Transform options\n * @returns Transformed code\n */\nexport function transformCode(\n code: string,\n options: TransformOptions\n): TransformResult {\n const {\n filePath,\n sourceMap = false,\n jsxRuntime = \"automatic\",\n jsxImportSource = \"react\",\n production = false\n } = options;\n\n const transforms: Array<\"typescript\" | \"jsx\" | \"flow\"> = [];\n\n // Determine transforms based on file extension\n if (isTypeScriptFile(filePath)) {\n transforms.push(\"typescript\");\n }\n\n if (isJsxFile(filePath)) {\n if (jsxRuntime !== \"preserve\") {\n transforms.push(\"jsx\");\n }\n }\n\n if (transforms.length === 0) {\n // No transforms needed, return as-is\n return { code };\n }\n\n const transformOptions: Parameters<typeof transform>[1] = {\n transforms,\n filePath,\n jsxRuntime,\n jsxImportSource,\n production,\n // Keep ESM imports/exports as-is\n preserveDynamicImport: true,\n // Disable ES transforms since Workers support modern JS\n disableESTransforms: true\n };\n\n if (sourceMap) {\n transformOptions.sourceMapOptions = {\n compiledFilename: filePath.replace(/\\.(tsx?|mts)$/, \".js\")\n };\n }\n\n const result = transform(code, transformOptions);\n\n if (result.sourceMap) {\n return {\n code: result.code,\n sourceMap: JSON.stringify(result.sourceMap)\n };\n }\n return { code: result.code };\n}\n\n/**\n * Check if a file path is a TypeScript file\n */\nexport function isTypeScriptFile(filePath: string): boolean {\n return /\\.(ts|tsx|mts)$/.test(filePath);\n}\n\n/**\n * Check if a file path is a JSX file\n */\nexport function isJsxFile(filePath: string): boolean {\n return /\\.(jsx|tsx)$/.test(filePath);\n}\n\n/**\n * Check if a file path is any JavaScript/TypeScript file\n */\nexport function isJavaScriptFile(filePath: string): boolean {\n return /\\.(js|jsx|ts|tsx|mjs|mts)$/.test(filePath);\n}\n\n/**\n * Get the output path for a transformed file\n */\nexport function getOutputPath(filePath: string): string {\n // .ts -> .js, .tsx -> .js, .mts -> .mjs\n return filePath.replace(/\\.tsx?$/, \".js\").replace(/\\.mts$/, \".mjs\");\n}\n\n/**\n * Transform all files and resolve their dependencies.\n * This produces multiple modules instead of a single bundle.\n */\nexport async function transformAndResolve(\n files: Files,\n entryPoint: string,\n externals: string[]\n): Promise<CreateWorkerResult> {\n const modules: Modules = {};\n const warnings: string[] = [];\n const processed = new Set<string>();\n const toProcess = [entryPoint];\n\n // Map from source path to output path\n const pathMap = new Map<string, string>();\n\n // First pass: collect all files and their output paths\n while (toProcess.length > 0) {\n const filePath = toProcess.pop();\n if (!filePath || processed.has(filePath)) continue;\n processed.add(filePath);\n\n const content = files[filePath];\n if (content === undefined) {\n warnings.push(`File not found: ${filePath}`);\n continue;\n }\n\n // Calculate output path\n const outputPath = isTypeScriptFile(filePath)\n ? getOutputPath(filePath)\n : filePath;\n pathMap.set(filePath, outputPath);\n\n // Handle non-JS files\n if (!isJavaScriptFile(filePath)) {\n if (filePath.endsWith(\".json\")) {\n try {\n modules[filePath] = { json: JSON.parse(content) };\n } catch {\n warnings.push(`Failed to parse JSON file: ${filePath}`);\n }\n } else {\n // Include as text\n modules[filePath] = { text: content };\n }\n continue;\n }\n\n // Parse imports and queue them for processing\n const imports = parseImports(content);\n for (const specifier of imports) {\n // Skip external modules\n if (\n externals.includes(specifier) ||\n externals.some(\n (e) => specifier.startsWith(`${e}/`) || specifier.startsWith(e)\n )\n ) {\n continue;\n }\n\n try {\n const resolved = resolveModule(specifier, {\n files,\n importer: filePath\n });\n\n if (!resolved.external && !processed.has(resolved.path)) {\n toProcess.push(resolved.path);\n }\n } catch (error) {\n warnings.push(\n `Failed to resolve '${specifier}' from ${filePath}: ${error instanceof Error ? error.message : error}`\n );\n }\n }\n }\n\n // Second pass: transform files and rewrite imports\n for (const [sourcePath, outputPath] of pathMap) {\n const content = files[sourcePath];\n if (content === undefined || !isJavaScriptFile(sourcePath)) continue;\n\n let transformedCode: string;\n\n if (isTypeScriptFile(sourcePath)) {\n try {\n const result = transformCode(content, {\n filePath: sourcePath\n });\n transformedCode = result.code;\n } catch (error) {\n warnings.push(\n `Failed to transform ${sourcePath}: ${error instanceof Error ? error.message : error}`\n );\n continue;\n }\n } else {\n transformedCode = content;\n }\n\n // Rewrite imports to use the full output paths\n transformedCode = rewriteImports(\n transformedCode,\n sourcePath,\n files,\n pathMap,\n externals\n );\n\n // Add to output modules\n modules[outputPath] = transformedCode;\n }\n\n // Calculate the main module path (transformed entry point)\n const mainModule = isTypeScriptFile(entryPoint)\n ? getOutputPath(entryPoint)\n : entryPoint;\n\n if (warnings.length > 0) {\n return { mainModule, modules, warnings };\n }\n return { mainModule, modules };\n}\n\n/**\n * Rewrite import specifiers to use full output paths.\n * This is necessary because the Worker Loader expects imports to match registered module names.\n */\nfunction rewriteImports(\n code: string,\n importer: string,\n files: Files,\n pathMap: Map<string, string>,\n externals: string[]\n): string {\n // Match import/export statements with string specifiers\n // Handles: import x from 'y', import { x } from 'y', import 'y', export { x } from 'y', export * from 'y'\n const importExportRegex =\n /(import\\s+(?:[\\w*{}\\s,]+\\s+from\\s+)?|export\\s+(?:[\\w*{}\\s,]+\\s+)?from\\s+)(['\"])([^'\"]+)\\2/g;\n\n // Get importer's output path to use as the base for resolving\n const importerOutputPath = pathMap.get(importer) ?? importer;\n\n return code.replace(\n importExportRegex,\n (match, prefix: string, quote: string, specifier: string) => {\n // Skip external modules\n if (\n externals.includes(specifier) ||\n externals.some(\n (e) => specifier.startsWith(`${e}/`) || specifier.startsWith(e)\n )\n ) {\n return match;\n }\n\n // Skip non-relative imports that aren't in our files (bare imports to npm packages)\n if (!specifier.startsWith(\".\") && !specifier.startsWith(\"/\")) {\n // Try to resolve it - if it resolves to node_modules, rewrite the path\n try {\n const resolved = resolveModule(specifier, {\n files,\n importer\n });\n\n if (resolved.external) {\n return match;\n }\n\n // Get the output path for the resolved module\n const resolvedOutputPath =\n pathMap.get(resolved.path) ?? resolved.path;\n\n // For node_modules imports, use the full path\n if (resolved.path.startsWith(\"node_modules/\")) {\n return `${prefix}${quote}/${resolvedOutputPath}${quote}`;\n }\n\n // Calculate relative path for non-node_modules\n const relativePath = calculateRelativePath(\n importerOutputPath,\n resolvedOutputPath\n );\n return `${prefix}${quote}${relativePath}${quote}`;\n } catch {\n // Resolution failed, keep original\n return match;\n }\n }\n\n try {\n const resolved = resolveModule(specifier, {\n files,\n importer\n });\n\n if (resolved.external) {\n return match;\n }\n\n // Get the output path for the resolved module\n const resolvedOutputPath = pathMap.get(resolved.path) ?? resolved.path;\n\n // Calculate the relative path from the importer's output location to the resolved output\n const relativePath = calculateRelativePath(\n importerOutputPath,\n resolvedOutputPath\n );\n\n // Return the rewritten import with the relative output path\n return `${prefix}${quote}${relativePath}${quote}`;\n } catch {\n // If resolution fails, keep the original\n return match;\n }\n }\n );\n}\n\n/**\n * Calculate relative path from one file to another.\n */\nfunction calculateRelativePath(from: string, to: string): string {\n const fromDir = getDirectory(from);\n const toDir = getDirectory(to);\n const toFile = to.split(\"/\").pop() ?? to;\n\n if (fromDir === toDir) {\n // Same directory\n return `./${toFile}`;\n }\n\n const fromParts = fromDir ? fromDir.split(\"/\") : [];\n const toParts = toDir ? toDir.split(\"/\") : [];\n\n // Find common prefix\n let commonLength = 0;\n while (\n commonLength < fromParts.length &&\n commonLength < toParts.length &&\n fromParts[commonLength] === toParts[commonLength]\n ) {\n commonLength++;\n }\n\n // Calculate relative path\n const upCount = fromParts.length - commonLength;\n const downParts = toParts.slice(commonLength);\n\n let relativePath = \"\";\n if (upCount === 0) {\n relativePath = \"./\";\n } else {\n relativePath = \"../\".repeat(upCount);\n }\n\n if (downParts.length > 0) {\n relativePath += `${downParts.join(\"/\")}/`;\n }\n\n return relativePath + toFile;\n}\n\nfunction getDirectory(filePath: string): string {\n const lastSlash = filePath.lastIndexOf(\"/\");\n if (lastSlash === -1) {\n return \"\";\n }\n return filePath.slice(0, lastSlash);\n}\n", "/**\n * Utility functions.\n */\n\nimport type { Files, WranglerConfig } from \"./types\";\n\n/**\n * Detect entry point from wrangler config, package.json, or use defaults.\n * Priority: wrangler main > package.json exports/module/main > default paths\n */\nexport function detectEntryPoint(\n files: Files,\n wranglerConfig: WranglerConfig | undefined\n): string | undefined {\n // First, check wrangler config main field\n if (wranglerConfig?.main) {\n return normalizeEntryPath(wranglerConfig.main);\n }\n\n // Try to read package.json\n const packageJsonContent = files[\"package.json\"];\n if (packageJsonContent) {\n try {\n const pkg = JSON.parse(packageJsonContent) as {\n main?: string;\n module?: string;\n exports?: Record<string, unknown> | string;\n };\n\n // Check exports field first\n if (pkg.exports) {\n if (typeof pkg.exports === \"string\") {\n return normalizeEntryPath(pkg.exports);\n }\n // Handle exports object - look for \".\" entry\n const dotExport = pkg.exports[\".\"];\n if (dotExport) {\n if (typeof dotExport === \"string\") {\n return normalizeEntryPath(dotExport);\n }\n // Handle conditional exports\n if (typeof dotExport === \"object\" && dotExport !== null) {\n const exp = dotExport as Record<string, unknown>;\n const entry = exp[\"import\"] ?? exp[\"default\"] ?? exp[\"module\"];\n if (typeof entry === \"string\") {\n return normalizeEntryPath(entry);\n }\n }\n }\n }\n\n // Check module field\n if (pkg.module) {\n return normalizeEntryPath(pkg.module);\n }\n\n // Check main field\n if (pkg.main) {\n return normalizeEntryPath(pkg.main);\n }\n } catch {\n // Invalid JSON, continue to defaults\n }\n }\n\n // Default entry points\n const defaultEntries = [\n \"src/index.ts\",\n \"src/index.js\",\n \"src/index.mts\",\n \"src/index.mjs\",\n \"index.ts\",\n \"index.js\",\n \"src/worker.ts\",\n \"src/worker.js\"\n ];\n\n for (const entry of defaultEntries) {\n if (entry in files) {\n return entry;\n }\n }\n\n return undefined;\n}\n\nfunction normalizeEntryPath(path: string): string {\n // Remove leading ./\n if (path.startsWith(\"./\")) {\n return path.slice(2);\n }\n return path;\n}\n", "let warningShown = false;\n\nexport function showExperimentalWarning(fn: string) {\n if (!warningShown) {\n warningShown = true;\n console.warn(\n `[worker-bundler] ${fn}(): This package is experimental and its API may change without notice.`\n );\n }\n}\n", "/**\n * MIME type inference from file extensions.\n */\n\nconst MIME_TYPES: Record<string, string> = {\n // HTML\n \".html\": \"text/html; charset=utf-8\",\n \".htm\": \"text/html; charset=utf-8\",\n\n // JavaScript\n \".js\": \"application/javascript; charset=utf-8\",\n \".mjs\": \"application/javascript; charset=utf-8\",\n\n // CSS\n \".css\": \"text/css; charset=utf-8\",\n\n // JSON\n \".json\": \"application/json; charset=utf-8\",\n\n // Images\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".gif\": \"image/gif\",\n \".svg\": \"image/svg+xml\",\n \".ico\": \"image/x-icon\",\n \".webp\": \"image/webp\",\n \".avif\": \"image/avif\",\n\n // Fonts\n \".woff\": \"font/woff\",\n \".woff2\": \"font/woff2\",\n \".ttf\": \"font/ttf\",\n \".otf\": \"font/otf\",\n \".eot\": \"application/vnd.ms-fontobject\",\n\n // Media\n \".mp3\": \"audio/mpeg\",\n \".mp4\": \"video/mp4\",\n \".webm\": \"video/webm\",\n \".ogg\": \"audio/ogg\",\n \".wav\": \"audio/wav\",\n\n // Documents\n \".pdf\": \"application/pdf\",\n \".xml\": \"application/xml\",\n \".txt\": \"text/plain; charset=utf-8\",\n \".csv\": \"text/csv; charset=utf-8\",\n\n // Archives\n \".zip\": \"application/zip\",\n \".gz\": \"application/gzip\",\n \".tar\": \"application/x-tar\",\n\n // WebAssembly\n \".wasm\": \"application/wasm\",\n\n // Manifest\n \".webmanifest\": \"application/manifest+json\",\n\n // Source maps\n \".map\": \"application/json\"\n};\n\n/**\n * Get the file extension from a path (including the dot).\n */\nfunction getExtension(path: string): string {\n const lastDot = path.lastIndexOf(\".\");\n if (lastDot === -1) return \"\";\n const lastSlash = path.lastIndexOf(\"/\");\n if (lastDot < lastSlash) return \"\";\n return path.slice(lastDot).toLowerCase();\n}\n\n/**\n * Infer MIME type from a file path.\n * Returns undefined if the type is unknown.\n */\nexport function inferContentType(path: string): string | undefined {\n const ext = getExtension(path);\n return MIME_TYPES[ext];\n}\n\n/**\n * Whether a content type represents a text-based format\n * (used to decide text vs binary module storage).\n */\nexport function isTextContentType(contentType: string): boolean {\n return (\n contentType.startsWith(\"text/\") ||\n contentType.includes(\"json\") ||\n contentType.includes(\"xml\") ||\n contentType.includes(\"javascript\") ||\n contentType.includes(\"svg\")\n );\n}\n", "/**\n * Asset request handler for serving static assets.\n *\n * Key design: the manifest (routing metadata) is separated from the\n * storage (content retrieval). This lets you plug in any backend —\n * in-memory, KV, R2, Workspace, etc.\n *\n * Inspired by Cloudflare's Workers Static Assets behavior and\n * cloudflare-asset-worker by Timo Wilhelm.\n */\n\nimport { inferContentType } from \"./mime\";\n\n// ── Storage interface ───────────────────────────────────────────────\n\n/**\n * Pluggable storage backend for asset content.\n * Implement this to serve assets from KV, R2, Workspace, or any other source.\n */\nexport interface AssetStorage {\n get(pathname: string): Promise<ReadableStream | ArrayBuffer | string | null>;\n}\n\n/**\n * Metadata for a single asset (no content — that comes from storage).\n */\nexport interface AssetMetadata {\n contentType: string | undefined;\n etag: string;\n}\n\n/**\n * The manifest maps pathnames to metadata. Used for routing decisions,\n * ETag checks, and content-type headers — all without touching storage.\n */\nexport type AssetManifest = Map<string, AssetMetadata>;\n\n/**\n * Create an in-memory storage backend from a pathname->content map.\n * This is the zero-config default for small asset sets.\n */\nexport function createMemoryStorage(\n assets: Record<string, string | ArrayBuffer>\n): AssetStorage {\n const map = new Map(Object.entries(assets));\n return {\n get(pathname) {\n return Promise.resolve(map.get(pathname) ?? null);\n }\n };\n}\n\n// ── Configuration ───────────────────────────────────────────────────\n\n/**\n * Configuration for asset serving behavior.\n */\nexport interface AssetConfig {\n /**\n * How to handle HTML file resolution and trailing slashes.\n * @default 'auto-trailing-slash'\n */\n html_handling?:\n | \"auto-trailing-slash\"\n | \"force-trailing-slash\"\n | \"drop-trailing-slash\"\n | \"none\";\n\n /**\n * How to handle requests that don't match any asset.\n * - 'single-page-application': Serve /index.html for 404s\n * - '404-page': Serve nearest 404.html walking up the directory tree\n * - 'none': Return null (fall through)\n * @default 'none'\n */\n not_found_handling?: \"single-page-application\" | \"404-page\" | \"none\";\n\n /**\n * Static redirect rules. Keys are URL pathnames (or https://host/path for cross-host).\n * Supports * glob and :placeholder tokens.\n */\n redirects?: {\n static?: Record<string, { status: number; to: string }>;\n dynamic?: Record<string, { status: number; to: string }>;\n };\n\n /**\n * Custom response headers per pathname pattern (glob syntax).\n */\n headers?: Record<string, { set?: Record<string, string>; unset?: string[] }>;\n}\n\n/**\n * Normalized configuration with all fields required.\n */\ninterface NormalizedConfig {\n html_handling:\n | \"auto-trailing-slash\"\n | \"force-trailing-slash\"\n | \"drop-trailing-slash\"\n | \"none\";\n not_found_handling: \"single-page-application\" | \"404-page\" | \"none\";\n redirects: {\n static: Record<string, { status: number; to: string; lineNumber: number }>;\n dynamic: Record<string, { status: number; to: string }>;\n };\n headers: Record<string, { set?: Record<string, string>; unset?: string[] }>;\n}\n\n/**\n * Normalize user config with defaults.\n */\nexport function normalizeConfig(config?: AssetConfig): NormalizedConfig {\n const staticRedirects: Record<\n string,\n { status: number; to: string; lineNumber: number }\n > = {};\n if (config?.redirects?.static) {\n let lineNumber = 1;\n for (const [path, rule] of Object.entries(config.redirects.static)) {\n staticRedirects[path] = { ...rule, lineNumber: lineNumber++ };\n }\n }\n\n return {\n html_handling: config?.html_handling ?? \"auto-trailing-slash\",\n not_found_handling: config?.not_found_handling ?? \"none\",\n redirects: {\n static: staticRedirects,\n dynamic: config?.redirects?.dynamic ?? {}\n },\n headers: config?.headers ?? {}\n };\n}\n\n// ── ETag / manifest building ────────────────────────────────────────\n\n/**\n * Compute a simple hash for ETag generation.\n * Uses a fast string hash (FNV-1a) for text, or SHA-256 for binary.\n */\nexport async function computeETag(\n content: string | ArrayBuffer\n): Promise<string> {\n if (typeof content === \"string\") {\n // FNV-1a hash for fast text hashing\n let hash = 2166136261;\n for (let i = 0; i < content.length; i++) {\n hash ^= content.charCodeAt(i);\n hash = (hash * 16777619) >>> 0;\n }\n return hash.toString(16).padStart(8, \"0\");\n }\n // SHA-256 for binary\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", content);\n const hashArray = new Uint8Array(hashBuffer);\n return [...hashArray.slice(0, 8)]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\n/**\n * Build an AssetManifest from a pathname->content mapping.\n * Only computes metadata (content types, ETags) — doesn't store content.\n */\nexport async function buildAssetManifest(\n assets: Record<string, string | ArrayBuffer>\n): Promise<AssetManifest> {\n const manifest: AssetManifest = new Map();\n const entries = Object.entries(assets);\n await Promise.all(\n entries.map(async ([pathname, content]) => {\n const contentType = inferContentType(pathname);\n const etag = await computeETag(content);\n manifest.set(pathname, { contentType, etag });\n })\n );\n return manifest;\n}\n\n/**\n * Convenience: build both a manifest and an in-memory storage from assets.\n */\nexport async function buildAssets(\n assets: Record<string, string | ArrayBuffer>\n): Promise<{ manifest: AssetManifest; storage: AssetStorage }> {\n const manifest = await buildAssetManifest(assets);\n const storage = createMemoryStorage(assets);\n return { manifest, storage };\n}\n\n/**\n * Check if a pathname exists in the manifest.\n */\nfunction exists(\n manifest: AssetManifest,\n pathname: string\n): AssetMetadata | undefined {\n return manifest.get(pathname);\n}\n\n// ── Redirect handling ───────────────────────────────────────────────\n\nconst ESCAPE_REGEX_CHARACTERS = /[-/\\\\^$*+?.()|[\\]{}]/g;\nconst escapeRegex = (s: string) =>\n s.replaceAll(ESCAPE_REGEX_CHARACTERS, String.raw`\\$&`);\n\nconst PLACEHOLDER_REGEX = /:([A-Za-z]\\w*)/g;\n\ntype Replacements = Record<string, string>;\n\nfunction replacer(str: string, replacements: Replacements): string {\n for (const [key, value] of Object.entries(replacements)) {\n str = str.replaceAll(`:${key}`, value);\n }\n return str;\n}\n\nfunction generateRuleRegExp(rule: string): RegExp {\n rule = rule\n .split(\"*\")\n .map((s) => escapeRegex(s))\n .join(\"(?<splat>.*)\");\n\n const matches = rule.matchAll(PLACEHOLDER_REGEX);\n for (const match of matches) {\n rule = rule.split(match[0]).join(`(?<${match[1]}>[^/]+)`);\n }\n\n return new RegExp(\"^\" + rule + \"$\");\n}\n\nfunction matchStaticRedirects(\n config: NormalizedConfig,\n host: string,\n pathname: string\n): { status: number; to: string; lineNumber: number } | undefined {\n const withHost = config.redirects.static[`https://${host}${pathname}`];\n const withoutHost = config.redirects.static[pathname];\n if (withHost && withoutHost) {\n return withHost.lineNumber < withoutHost.lineNumber\n ? withHost\n : withoutHost;\n }\n return withHost || withoutHost;\n}\n\nfunction matchDynamicRedirects(\n config: NormalizedConfig,\n request: Request\n): { status: number; to: string } | undefined {\n const { pathname } = new URL(request.url);\n for (const [pattern, rule] of Object.entries(config.redirects.dynamic)) {\n try {\n const re = generateRuleRegExp(pattern);\n const result = re.exec(pathname);\n if (result) {\n const target = replacer(rule.to, result.groups || {}).trim();\n return { status: rule.status, to: target };\n }\n } catch {\n // Skip invalid patterns\n }\n }\n return undefined;\n}\n\nfunction handleRedirects(\n request: Request,\n config: NormalizedConfig\n): Response | { proxied: boolean; pathname: string } {\n const url = new URL(request.url);\n const { search, host } = url;\n let { pathname } = url;\n\n const staticMatch = matchStaticRedirects(config, host, pathname);\n const dynamicMatch = staticMatch\n ? undefined\n : matchDynamicRedirects(config, request);\n const match = staticMatch ?? dynamicMatch;\n\n let proxied = false;\n if (match) {\n if (match.status === 200) {\n pathname = new URL(match.to, request.url).pathname;\n proxied = true;\n } else {\n const destination = new URL(match.to, request.url);\n const location =\n destination.origin === url.origin\n ? `${destination.pathname}${destination.search || search}${destination.hash}`\n : `${destination.href}`;\n return new Response(null, {\n status: match.status,\n headers: { Location: location }\n });\n }\n }\n\n return { proxied, pathname };\n}\n\n// ── Custom headers ──────────────────────────────────────────────────\n\nfunction generateGlobRegExp(pattern: string): RegExp {\n const escaped = pattern\n .split(\"*\")\n .map((s) => escapeRegex(s))\n .join(\".*\");\n return new RegExp(\"^\" + escaped + \"$\");\n}\n\nfunction attachCustomHeaders(\n request: Request,\n response: Response,\n config: NormalizedConfig\n): Response {\n if (Object.keys(config.headers).length === 0) {\n return response;\n }\n\n const { pathname } = new URL(request.url);\n const setMap = new Set<string>();\n\n for (const [pattern, rules] of Object.entries(config.headers)) {\n try {\n const re = generateGlobRegExp(pattern);\n if (!re.test(pathname)) continue;\n } catch {\n continue;\n }\n\n if (rules.unset) {\n for (const key of rules.unset) {\n response.headers.delete(key);\n }\n }\n if (rules.set) {\n for (const [key, value] of Object.entries(rules.set)) {\n if (setMap.has(key.toLowerCase())) {\n response.headers.append(key, value);\n } else {\n response.headers.set(key, value);\n setMap.add(key.toLowerCase());\n }\n }\n }\n }\n\n return response;\n}\n\n// ── Path decoding / encoding ────────────────────────────────────────\n\nfunction decodePath(pathname: string): string {\n return pathname\n .split(\"/\")\n .map((segment) => {\n try {\n return decodeURIComponent(segment);\n } catch {\n return segment;\n }\n })\n .join(\"/\")\n .replaceAll(/\\/+/g, \"/\");\n}\n\nfunction encodePath(pathname: string): string {\n return pathname\n .split(\"/\")\n .map((segment) => {\n try {\n return encodeURIComponent(segment);\n } catch {\n return segment;\n }\n })\n .join(\"/\");\n}\n\n// ── HTML handling modes ─────────────────────────────────────────────\n\ntype Intent =\n | { type: \"asset\"; pathname: string; meta: AssetMetadata; status: number }\n | { type: \"redirect\"; to: string }\n | undefined;\n\nfunction getIntent(\n pathname: string,\n manifest: AssetManifest,\n config: NormalizedConfig,\n skipRedirects = false,\n acceptsHtml = true\n): Intent {\n switch (config.html_handling) {\n case \"auto-trailing-slash\":\n return htmlAutoTrailingSlash(\n pathname,\n manifest,\n config,\n skipRedirects,\n acceptsHtml\n );\n case \"force-trailing-slash\":\n return htmlForceTrailingSlash(\n pathname,\n manifest,\n config,\n skipRedirects,\n acceptsHtml\n );\n case \"drop-trailing-slash\":\n return htmlDropTrailingSlash(\n pathname,\n manifest,\n config,\n skipRedirects,\n acceptsHtml\n );\n case \"none\":\n return htmlNone(pathname, manifest, config, acceptsHtml);\n }\n}\n\nfunction assetIntent(\n pathname: string,\n meta: AssetMetadata,\n status = 200\n): Intent {\n return { type: \"asset\", pathname, meta, status };\n}\n\nfunction redirectIntent(to: string): Intent {\n return { type: \"redirect\", to };\n}\n\n/**\n * Safe redirect: only redirect if the file exists and the destination\n * itself resolves to the same asset (avoids redirect loops).\n */\nfunction safeRedirect(\n file: string,\n destination: string,\n manifest: AssetManifest,\n config: NormalizedConfig,\n skip: boolean\n): Intent {\n if (skip) return undefined;\n if (!exists(manifest, destination)) {\n const intent = getIntent(destination, manifest, config, true);\n if (\n intent?.type === \"asset\" &&\n intent.meta.etag === exists(manifest, file)?.etag\n ) {\n return redirectIntent(destination);\n }\n }\n return undefined;\n}\n\nfunction htmlAutoTrailingSlash(\n pathname: string,\n manifest: AssetManifest,\n config: NormalizedConfig,\n skipRedirects: boolean,\n acceptsHtml: boolean\n): Intent {\n let meta: AssetMetadata | undefined;\n let redirect: Intent;\n const exactMeta = exists(manifest, pathname);\n\n if (pathname.endsWith(\"/index\")) {\n if (exactMeta) {\n return assetIntent(pathname, exactMeta);\n }\n if (\n (redirect = safeRedirect(\n `${pathname}.html`,\n pathname.slice(0, -\"index\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\"/index\".length)}.html`,\n pathname.slice(0, -\"/index\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n } else if (pathname.endsWith(\"/index.html\")) {\n if (\n (redirect = safeRedirect(\n pathname,\n pathname.slice(0, -\"index.html\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\"/index.html\".length)}.html`,\n pathname.slice(0, -\"/index.html\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n } else if (pathname.endsWith(\"/\")) {\n const indexPath = `${pathname}index.html`;\n if ((meta = exists(manifest, indexPath))) {\n return assetIntent(indexPath, meta);\n }\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\"/\".length)}.html`,\n pathname.slice(0, -\"/\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n } else if (pathname.endsWith(\".html\")) {\n if (\n (redirect = safeRedirect(\n pathname,\n pathname.slice(0, -\".html\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\".html\".length)}/index.html`,\n `${pathname.slice(0, -\".html\".length)}/`,\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n }\n\n // Exact match\n if (exactMeta) {\n return assetIntent(pathname, exactMeta);\n }\n // Try .html extension\n const htmlPath = `${pathname}.html`;\n if ((meta = exists(manifest, htmlPath))) {\n return assetIntent(htmlPath, meta);\n }\n // Try /index.html\n if (\n (redirect = safeRedirect(\n `${pathname}/index.html`,\n `${pathname}/`,\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n\n return notFound(pathname, manifest, config, acceptsHtml);\n}\n\nfunction htmlForceTrailingSlash(\n pathname: string,\n manifest: AssetManifest,\n config: NormalizedConfig,\n skipRedirects: boolean,\n acceptsHtml: boolean\n): Intent {\n let meta: AssetMetadata | undefined;\n let redirect: Intent;\n const exactMeta = exists(manifest, pathname);\n\n if (pathname.endsWith(\"/index\")) {\n if (exactMeta) return assetIntent(pathname, exactMeta);\n if (\n (redirect = safeRedirect(\n `${pathname}.html`,\n pathname.slice(0, -\"index\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\"/index\".length)}.html`,\n pathname.slice(0, -\"index\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n } else if (pathname.endsWith(\"/index.html\")) {\n if (\n (redirect = safeRedirect(\n pathname,\n pathname.slice(0, -\"index.html\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\"/index.html\".length)}.html`,\n pathname.slice(0, -\"index.html\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n } else if (pathname.endsWith(\"/\")) {\n let p = `${pathname}index.html`;\n if ((meta = exists(manifest, p))) {\n return assetIntent(p, meta);\n }\n p = `${pathname.slice(0, -\"/\".length)}.html`;\n if ((meta = exists(manifest, p))) {\n return assetIntent(p, meta);\n }\n } else if (pathname.endsWith(\".html\")) {\n if (\n (redirect = safeRedirect(\n pathname,\n `${pathname.slice(0, -\".html\".length)}/`,\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n if (exactMeta) return assetIntent(pathname, exactMeta);\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\".html\".length)}/index.html`,\n `${pathname.slice(0, -\".html\".length)}/`,\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n }\n\n if (exactMeta) return assetIntent(pathname, exactMeta);\n if (\n (redirect = safeRedirect(\n `${pathname}.html`,\n `${pathname}/`,\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n if (\n (redirect = safeRedirect(\n `${pathname}/index.html`,\n `${pathname}/`,\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n\n return notFound(pathname, manifest, config, acceptsHtml);\n}\n\nfunction htmlDropTrailingSlash(\n pathname: string,\n manifest: AssetManifest,\n config: NormalizedConfig,\n skipRedirects: boolean,\n acceptsHtml: boolean\n): Intent {\n let meta: AssetMetadata | undefined;\n let redirect: Intent;\n const exactMeta = exists(manifest, pathname);\n\n if (pathname.endsWith(\"/index\")) {\n if (exactMeta) return assetIntent(pathname, exactMeta);\n if (pathname === \"/index\") {\n if (\n (redirect = safeRedirect(\n \"/index.html\",\n \"/\",\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n } else {\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\"/index\".length)}.html`,\n pathname.slice(0, -\"/index\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n if (\n (redirect = safeRedirect(\n `${pathname}.html`,\n pathname.slice(0, -\"/index\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n }\n } else if (pathname.endsWith(\"/index.html\")) {\n if (pathname === \"/index.html\") {\n if (\n (redirect = safeRedirect(\n \"/index.html\",\n \"/\",\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n } else {\n if (\n (redirect = safeRedirect(\n pathname,\n pathname.slice(0, -\"/index.html\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n if (exactMeta) return assetIntent(pathname, exactMeta);\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\"/index.html\".length)}.html`,\n pathname.slice(0, -\"/index.html\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n }\n } else if (pathname.endsWith(\"/\")) {\n if (pathname === \"/\") {\n if ((meta = exists(manifest, \"/index.html\"))) {\n return assetIntent(\"/index.html\", meta);\n }\n } else {\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\"/\".length)}.html`,\n pathname.slice(0, -\"/\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\"/\".length)}/index.html`,\n pathname.slice(0, -\"/\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n }\n } else if (pathname.endsWith(\".html\")) {\n if (\n (redirect = safeRedirect(\n pathname,\n pathname.slice(0, -\".html\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n if (\n (redirect = safeRedirect(\n `${pathname.slice(0, -\".html\".length)}/index.html`,\n pathname.slice(0, -\".html\".length),\n manifest,\n config,\n skipRedirects\n ))\n )\n return redirect;\n }\n\n if (exactMeta) return assetIntent(pathname, exactMeta);\n let p = `${pathname}.html`;\n if ((meta = exists(manifest, p))) {\n return assetIntent(p, meta);\n }\n p = `${pathname}/index.html`;\n if ((meta = exists(manifest, p))) {\n return assetIntent(p, meta);\n }\n\n return notFound(pathname, manifest, config, acceptsHtml);\n}\n\nfunction htmlNone(\n pathname: string,\n manifest: AssetManifest,\n config: NormalizedConfig,\n acceptsHtml: boolean\n): Intent {\n const meta = exists(manifest, pathname);\n return meta\n ? assetIntent(pathname, meta)\n : notFound(pathname, manifest, config, acceptsHtml);\n}\n\n// ── Not-found handling ──────────────────────────────────────────────\n\nfunction notFound(\n pathname: string,\n manifest: AssetManifest,\n config: NormalizedConfig,\n acceptsHtml = true\n): Intent {\n switch (config.not_found_handling) {\n case \"single-page-application\": {\n // Only serve the SPA fallback for requests that accept HTML\n // (browser navigation). API calls (Accept: */* or application/json)\n // should fall through to the user's server code.\n if (!acceptsHtml) return undefined;\n const meta = exists(manifest, \"/index.html\");\n if (meta) return assetIntent(\"/index.html\", meta, 200);\n return undefined;\n }\n case \"404-page\": {\n let cwd = pathname;\n while (cwd) {\n cwd = cwd.slice(0, cwd.lastIndexOf(\"/\"));\n const p = `${cwd}/404.html`;\n const meta = exists(manifest, p);\n if (meta) return assetIntent(p, meta, 404);\n }\n return undefined;\n }\n default:\n return undefined;\n }\n}\n\n// ── Cache headers ───────────────────────────────────────────────────\n\nconst CACHE_CONTROL_REVALIDATE = \"public, max-age=0, must-revalidate\";\nconst CACHE_CONTROL_IMMUTABLE = \"public, max-age=31536000, immutable\";\n\nfunction getCacheControl(pathname: string): string {\n // Hashed assets (contain content hash in filename) get long-lived caching\n // Common patterns: app.abc123.js, styles.abc123.css, image.abc123.png\n if (/\\.[a-f0-9]{8,}\\.\\w+$/.test(pathname)) {\n return CACHE_CONTROL_IMMUTABLE;\n }\n return CACHE_CONTROL_REVALIDATE;\n}\n\n// ── Main handler ────────────────────────────────────────────────────\n\n/**\n * Handle an asset request. Returns a Response if an asset matches,\n * or null if the request should fall through to the user's Worker.\n *\n * @param request - The incoming HTTP request\n * @param manifest - Asset manifest (pathname -> metadata)\n * @param storage - Storage backend for fetching content\n * @param config - Asset serving configuration\n */\nexport async function handleAssetRequest(\n request: Request,\n manifest: AssetManifest,\n storage: AssetStorage,\n config?: AssetConfig\n): Promise<Response | null> {\n const normalized = normalizeConfig(config);\n\n // Only handle GET and HEAD\n const method = request.method.toUpperCase();\n if (![\"GET\", \"HEAD\"].includes(method)) {\n return null;\n }\n\n // Check redirects first\n const redirectResult = handleRedirects(request, normalized);\n if (redirectResult instanceof Response) {\n return attachCustomHeaders(request, redirectResult, normalized);\n }\n\n const { pathname } = redirectResult;\n const decodedPathname = decodePath(pathname);\n\n // SPA fallback should only apply to navigation requests that explicitly\n // accept HTML, not to API calls (fetch/XHR) which have Accept: */*\n const accept = request.headers.get(\"Accept\") || \"\";\n const acceptsHtml = accept.includes(\"text/html\");\n\n // Resolve intent through HTML handling\n const intent = getIntent(\n decodedPathname,\n manifest,\n normalized,\n false,\n acceptsHtml\n );\n\n if (!intent) {\n return null;\n }\n\n if (intent.type === \"redirect\") {\n const url = new URL(request.url);\n const encodedDest = encodePath(intent.to);\n const response = new Response(null, {\n status: 307,\n headers: { Location: encodedDest + url.search }\n });\n return attachCustomHeaders(request, response, normalized);\n }\n\n // Check if canonical path differs (needs redirect)\n const encodedPathname = encodePath(decodedPathname);\n if (encodedPathname !== pathname) {\n const url = new URL(request.url);\n const response = new Response(null, {\n status: 307,\n headers: { Location: encodedPathname + url.search }\n });\n return attachCustomHeaders(request, response, normalized);\n }\n\n // ETag conditional request\n const { pathname: assetPath, meta, status } = intent;\n const strongETag = `\"${meta.etag}\"`;\n const weakETag = `W/${strongETag}`;\n const ifNoneMatch = request.headers.get(\"If-None-Match\") || \"\";\n const eTags = new Set(ifNoneMatch.split(\",\").map((t) => t.trim()));\n\n const headers = new Headers();\n headers.set(\"ETag\", strongETag);\n if (meta.contentType) {\n headers.set(\"Content-Type\", meta.contentType);\n }\n headers.set(\"Cache-Control\", getCacheControl(decodedPathname));\n\n if (eTags.has(weakETag) || eTags.has(strongETag)) {\n const response = new Response(null, { status: 304, headers });\n return attachCustomHeaders(request, response, normalized);\n }\n\n // Fetch content from storage (only for non-HEAD)\n let body: ReadableStream | ArrayBuffer | string | null = null;\n if (method !== \"HEAD\") {\n body = await storage.get(assetPath);\n }\n\n const response = new Response(body, { status, headers });\n return attachCustomHeaders(request, response, normalized);\n}\n", "/**\n * App bundler: builds a full-stack app (server Worker + client bundle + static assets)\n * for the Worker Loader binding.\n *\n * Assets are returned separately for the host to serve — they are NOT embedded\n * in the dynamic isolate. The caller uses handleAssetRequest() on the host side\n * and only forwards non-asset requests to the isolate.\n */\n\nimport { bundleWithEsbuild } from \"./bundler\";\nimport { hasNodejsCompat, parseWranglerConfig } from \"./config\";\nimport { hasDependencies, installDependencies } from \"./installer\";\nimport { transformAndResolve } from \"./transformer\";\nimport type { AssetConfig, AssetManifest } from \"./asset-handler\";\nimport { buildAssetManifest } from \"./asset-handler\";\nimport type { CreateWorkerResult, Files } from \"./types\";\nimport { detectEntryPoint } from \"./utils\";\nimport { showExperimentalWarning } from \"./experimental\";\n\n/**\n * Options for createApp\n */\nexport interface CreateAppOptions {\n /**\n * Input files — keys are paths relative to project root, values are file contents.\n * Should include both server and client source files.\n */\n files: Files;\n\n /**\n * Server entry point (the Worker fetch handler).\n * If not specified, detected from wrangler config / package.json / defaults.\n */\n server?: string;\n\n /**\n * Client entry point(s) to bundle for the browser.\n * These are bundled with esbuild targeting the browser.\n */\n client?: string | string[];\n\n /**\n * Static assets to serve as-is (pathname -> content).\n * Keys should be URL pathnames (e.g., \"/favicon.ico\", \"/robots.txt\").\n * These are NOT processed by the bundler.\n */\n assets?: Record<string, string | ArrayBuffer>;\n\n /**\n * Asset serving configuration.\n */\n assetConfig?: AssetConfig;\n\n /**\n * Whether to bundle server dependencies.\n * @default true\n */\n bundle?: boolean;\n\n /**\n * External modules that should not be bundled.\n */\n externals?: string[];\n\n /**\n * Target environment for server bundle.\n * @default 'es2022'\n */\n target?: string;\n\n /**\n * Whether to minify the output.\n * @default false\n */\n minify?: boolean;\n\n /**\n * Generate source maps.\n * @default false\n */\n sourcemap?: boolean;\n\n /**\n * npm registry URL for fetching packages.\n */\n registry?: string;\n}\n\n/**\n * Result from createApp\n */\nexport interface CreateAppResult extends CreateWorkerResult {\n /**\n * Combined assets (user-provided + client bundles) for host-side serving.\n * The host should use createMemoryStorage(assets) and handleAssetRequest()\n * to serve these before forwarding requests to the isolate.\n */\n assets: Record<string, string | ArrayBuffer>;\n\n /**\n * The asset manifest for runtime request handling.\n * Contains metadata (content types, ETags) for each asset.\n */\n assetManifest: AssetManifest;\n\n /**\n * The asset config for runtime request handling.\n */\n assetConfig?: AssetConfig;\n\n /**\n * Client bundle output paths (relative to asset root).\n */\n clientBundles?: string[];\n}\n\n/**\n * Creates a full-stack app bundle from source files.\n *\n * This function:\n * 1. Bundles client entry point(s) for the browser (if provided)\n * 2. Collects static assets and builds the asset manifest\n * 3. Bundles the server Worker\n * 4. Returns server modules (for the isolate) and assets (for host-side serving) separately\n *\n * How the output is mounted (module worker, DO class, facet) is the caller's concern.\n */\nexport async function createApp(\n options: CreateAppOptions\n): Promise<CreateAppResult> {\n showExperimentalWarning(\"createApp\");\n let {\n files,\n bundle = true,\n externals = [],\n target = \"es2022\",\n minify = false,\n sourcemap = false,\n registry\n } = options;\n\n // Always treat cloudflare:* as external\n externals = [\"cloudflare:\", ...externals];\n\n // Parse wrangler config\n const wranglerConfig = parseWranglerConfig(files);\n const nodejsCompat = hasNodejsCompat(wranglerConfig);\n\n // Install npm dependencies if needed\n const installWarnings: string[] = [];\n if (hasDependencies(files)) {\n const installResult = await installDependencies(\n files,\n registry ? { registry } : {}\n );\n files = installResult.files;\n installWarnings.push(...installResult.warnings);\n }\n\n // ── Step 1: Build client bundles ──────────────────────────────────\n const clientEntries = options.client\n ? Array.isArray(options.client)\n ? options.client\n : [options.client]\n : [];\n\n const clientOutputs: Record<string, string> = {};\n const clientBundles: string[] = [];\n\n for (const clientEntry of clientEntries) {\n if (!(clientEntry in files)) {\n throw new Error(\n `Client entry point \"${clientEntry}\" not found in files.`\n );\n }\n\n const clientResult = await bundleWithEsbuild(\n files,\n clientEntry,\n externals,\n \"es2022\",\n minify,\n sourcemap,\n false\n );\n\n const bundleModule = clientResult.modules[\"bundle.js\"];\n if (typeof bundleModule === \"string\") {\n const baseName = clientEntry\n .replace(/^src\\//, \"\")\n .replace(/\\.(tsx?|jsx?)$/, \".js\");\n const outputPath = `/${baseName}`;\n clientOutputs[outputPath] = bundleModule;\n clientBundles.push(outputPath);\n }\n }\n\n // ── Step 2: Collect all assets ────────────────────────────────────\n const allAssets: Record<string, string | ArrayBuffer> = {};\n\n if (options.assets) {\n for (const [pathname, content] of Object.entries(options.assets)) {\n const normalizedPath = pathname.startsWith(\"/\")\n ? pathname\n : `/${pathname}`;\n allAssets[normalizedPath] = content;\n }\n }\n\n for (const [pathname, content] of Object.entries(clientOutputs)) {\n allAssets[pathname] = content;\n }\n\n const assetManifest = await buildAssetManifest(allAssets);\n\n // ── Step 3: Build server Worker ───────────────────────────────────\n const serverEntry = options.server ?? detectEntryPoint(files, wranglerConfig);\n\n if (!serverEntry) {\n throw new Error(\n \"Could not determine server entry point. Specify the 'server' option.\"\n );\n }\n\n if (!(serverEntry in files)) {\n throw new Error(`Server entry point \"${serverEntry}\" not found in files.`);\n }\n\n let serverResult: CreateWorkerResult;\n if (bundle) {\n serverResult = await bundleWithEsbuild(\n files,\n serverEntry,\n externals,\n target,\n minify,\n sourcemap,\n nodejsCompat\n );\n } else {\n serverResult = await transformAndResolve(files, serverEntry, externals);\n }\n\n const result: CreateAppResult = {\n mainModule: serverResult.mainModule,\n modules: serverResult.modules,\n assets: allAssets,\n assetManifest,\n assetConfig: options.assetConfig,\n clientBundles: clientBundles.length > 0 ? clientBundles : undefined\n };\n\n if (wranglerConfig !== undefined) {\n result.wranglerConfig = wranglerConfig;\n }\n\n if (installWarnings.length > 0) {\n result.warnings = [...(serverResult.warnings ?? []), ...installWarnings];\n } else if (serverResult.warnings) {\n result.warnings = serverResult.warnings;\n }\n\n return result;\n}\n", "/**\n * Dynamic Worker Bundler\n *\n * Creates worker bundles from source files for Cloudflare's Worker Loader binding.\n */\n\nimport { bundleWithEsbuild } from \"./bundler\";\nimport { hasNodejsCompat, parseWranglerConfig } from \"./config\";\nimport { hasDependencies, installDependencies } from \"./installer\";\nimport { transformAndResolve } from \"./transformer\";\nimport type { CreateWorkerOptions, CreateWorkerResult } from \"./types\";\nimport { detectEntryPoint } from \"./utils\";\nimport { showExperimentalWarning } from \"./experimental\";\n\n// Re-export types\nexport type {\n CreateWorkerOptions,\n CreateWorkerResult,\n Files,\n Modules,\n WranglerConfig\n} from \"./types\";\n\n// Re-export app bundler\nexport { createApp } from \"./app\";\nexport type { CreateAppOptions, CreateAppResult } from \"./app\";\n\n// Re-export asset handler\nexport {\n handleAssetRequest,\n buildAssetManifest,\n buildAssets,\n createMemoryStorage\n} from \"./asset-handler\";\nexport type {\n AssetConfig,\n AssetMetadata,\n AssetManifest,\n AssetStorage\n} from \"./asset-handler\";\n\n// Re-export MIME utilities\nexport { inferContentType, isTextContentType } from \"./mime\";\n\n/**\n * Creates a worker bundle from source files.\n *\n * This function performs:\n * 1. Entry point detection (from package.json or defaults)\n * 2. Auto-installation of npm dependencies (if package.json has dependencies)\n * 3. TypeScript/JSX transformation (via Sucrase)\n * 4. Module resolution (handling imports/exports)\n * 5. Optional bundling (combining all modules into one)\n *\n * @param options - Configuration options\n * @returns The main module path and all modules\n */\nexport async function createWorker(\n options: CreateWorkerOptions\n): Promise<CreateWorkerResult> {\n showExperimentalWarning(\"createWorker\");\n let {\n files,\n bundle = true,\n externals = [],\n target = \"es2022\",\n minify = false,\n sourcemap = false,\n registry\n } = options;\n\n // Always treat cloudflare:* modules as external (runtime-provided)\n externals = [\"cloudflare:\", ...externals];\n\n // Parse wrangler config for compatibility settings\n const wranglerConfig = parseWranglerConfig(files);\n const nodejsCompat = hasNodejsCompat(wranglerConfig);\n\n // Auto-install dependencies if package.json has dependencies\n const installWarnings: string[] = [];\n if (hasDependencies(files)) {\n const installResult = await installDependencies(\n files,\n registry ? { registry } : {}\n );\n files = installResult.files;\n installWarnings.push(...installResult.warnings);\n }\n\n // Detect entry point (priority: explicit option > wrangler main > package.json > defaults)\n const entryPoint =\n options.entryPoint ?? detectEntryPoint(files, wranglerConfig);\n\n if (!entryPoint) {\n throw new Error(\n \"Could not determine entry point. Please specify entryPoint option.\"\n );\n }\n\n if (!(entryPoint in files)) {\n throw new Error(`Entry point \"${entryPoint}\" not found in files.`);\n }\n\n if (bundle) {\n // Try bundling with esbuild-wasm\n const result = await bundleWithEsbuild(\n files,\n entryPoint,\n externals,\n target,\n minify,\n sourcemap,\n nodejsCompat\n );\n\n // Add wrangler config if a config file was found\n if (wranglerConfig !== undefined) {\n result.wranglerConfig = wranglerConfig;\n }\n\n // Add install warnings to result\n if (installWarnings.length > 0) {\n result.warnings = [...(result.warnings ?? []), ...installWarnings];\n }\n\n return result;\n } else {\n // No bundling - transform files and resolve dependencies\n // Note: sourcemaps are not supported in transform mode (output mirrors input structure)\n const result = await transformAndResolve(files, entryPoint, externals);\n\n // Add wrangler config if a config file was found\n if (wranglerConfig !== undefined) {\n result.wranglerConfig = wranglerConfig;\n }\n\n // Add install warnings to result\n if (installWarnings.length > 0) {\n result.warnings = [...(result.warnings ?? []), ...installWarnings];\n }\n\n return result;\n }\n}\n", "import type { FileSystem } from \"@cloudflare/shell\"\nimport type { Git } from \"@cloudflare/shell/git\"\nimport type { AssetConfig } from \"@cloudflare/worker-bundler\"\n\nexport interface DeployContext {\n sql: SqlStorage\n git: Git\n fs: FileSystem\n assetBucket?: R2Bucket\n assetPrefix?: string\n}\n\nexport interface DeploymentBundle {\n branch: string\n commitHash: string\n workerModules: {\n mainModule: string\n modules: Record<string, string | Record<string, unknown>>\n compatibilityDate: string\n }\n staticAssets: DeploymentAsset[]\n assetConfig: AssetConfig | undefined\n runtimeConfig: DeploymentRuntimeConfig | undefined\n}\n\nexport type BranchDeploymentBundle = DeploymentBundle\n\nexport interface DeploymentRuntimeConfig {\n apiBaseUrl: string\n}\n\nexport interface SpaceDeploymentResult {\n branch: string\n commit_hash: string\n main_module: string\n has_assets: boolean\n compatibility_date: string\n deployed_at: string\n asset_root: string | null\n}\n\nexport interface DeploymentAsset {\n path: string\n sourcePath: string | null\n contentType: string | undefined\n etag: string\n size: number\n}\n\nexport const RUNTIME_CONFIG_ASSET_PATH = \"/.springbrand/runtime-config.js\"\n\nexport function deploymentRuntimeConfigSource(config: DeploymentRuntimeConfig): string {\n return `globalThis.__APP_CONFIG__=Object.freeze(${JSON.stringify(config)});`\n}\n", "/**\n * FileInfo adapter for the plain `FileSystem` interface.\n *\n * The SpaceDO overlay used to be a `Workspace`, whose listing methods returned\n * rich `FileInfo` records (mimeType, updatedAt, size). The in-memory overlay\n * only implements the minimal `FileSystem` contract (`glob` -> string[], `stat`\n * -> `FsStat`), so these helpers rebuild `FileInfo` from a path + `FsStat`:\n * MIME is inferred from the extension and timestamps come from `mtime`.\n */\nimport type { FileSystem, FileInfo, FsStat } from \"@cloudflare/shell\"\n\nconst MIME_BY_EXT: Record<string, string> = {\n html: \"text/html\",\n htm: \"text/html\",\n css: \"text/css\",\n js: \"text/javascript\",\n mjs: \"text/javascript\",\n cjs: \"text/javascript\",\n jsx: \"text/javascript\",\n ts: \"text/typescript\",\n tsx: \"text/typescript\",\n json: \"application/json\",\n jsonc: \"application/json\",\n map: \"application/json\",\n txt: \"text/plain\",\n md: \"text/markdown\",\n csv: \"text/csv\",\n xml: \"application/xml\",\n svg: \"image/svg+xml\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n gif: \"image/gif\",\n webp: \"image/webp\",\n avif: \"image/avif\",\n ico: \"image/x-icon\",\n bmp: \"image/bmp\",\n woff: \"font/woff\",\n woff2: \"font/woff2\",\n ttf: \"font/ttf\",\n otf: \"font/otf\",\n eot: \"application/vnd.ms-fontobject\",\n wasm: \"application/wasm\",\n pdf: \"application/pdf\",\n zip: \"application/zip\",\n webmanifest: \"application/manifest+json\",\n mp3: \"audio/mpeg\",\n mp4: \"video/mp4\",\n webm: \"video/webm\",\n ogg: \"audio/ogg\",\n}\n\nconst DEFAULT_MIME = \"application/octet-stream\"\nconst DIR_MIME = \"inode/directory\"\n\nfunction basename(path: string): string {\n const i = path.lastIndexOf(\"/\")\n return i >= 0 ? path.slice(i + 1) : path\n}\n\n/** Infer a MIME type from a path's extension, defaulting to octet-stream. */\nexport function inferMimeType(path: string): string {\n const name = basename(path)\n const dot = name.lastIndexOf(\".\")\n if (dot <= 0) return DEFAULT_MIME\n return MIME_BY_EXT[name.slice(dot + 1).toLowerCase()] ?? DEFAULT_MIME\n}\n\n/** Build a `FileInfo` from a path and its `FsStat`. */\nexport function toFileInfo(path: string, stat: FsStat): FileInfo {\n const ms = stat.mtime.getTime()\n return {\n path,\n name: basename(path),\n type: stat.type,\n mimeType: stat.type === \"file\" ? inferMimeType(path) : DIR_MIME,\n size: stat.size,\n createdAt: ms,\n updatedAt: ms,\n }\n}\n\n/** `glob` + `stat` each match into a `FileInfo[]` (skips paths that vanish). */\nexport async function globInfos(fs: FileSystem, pattern: string): Promise<FileInfo[]> {\n const normalizedPattern = pattern.startsWith(\"/\") ? pattern : `/${pattern}`\n const paths = await fs.glob(normalizedPattern)\n const infos: FileInfo[] = []\n for (const p of paths) {\n try {\n infos.push(toFileInfo(p, await fs.stat(p)))\n } catch {\n // Raced against a concurrent delete, or unreadable \u2014 skip.\n }\n }\n return infos\n}\n\n/** List a directory's immediate children as `FileInfo[]`, with offset/limit. */\nexport async function readDirInfos(\n fs: FileSystem,\n dir?: string,\n opts?: { limit?: number; offset?: number },\n): Promise<FileInfo[]> {\n const base = !dir || dir === \"/\" ? \"/\" : dir.startsWith(\"/\") ? dir : \"/\" + dir\n const entries = await fs.readdirWithFileTypes(base)\n const infos: FileInfo[] = []\n for (const e of entries) {\n const full = base === \"/\" ? \"/\" + e.name : base + \"/\" + e.name\n try {\n infos.push(toFileInfo(full, await fs.stat(full)))\n } catch {\n // skip unreadable entry\n }\n }\n const offset = opts?.offset ?? 0\n return opts?.limit !== undefined ? infos.slice(offset, offset + opts.limit) : infos.slice(offset)\n}\n", "// \u2500\u2500\u2500 Wrangler Config Parser \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Parses the child project's wrangler.toml / wrangler.json / wrangler.jsonc\n// to extract deployment-relevant configuration.\n\nexport interface ParsedDurableObjectBinding {\n name: string\n className: string\n}\n\nexport interface ParsedWranglerConfig {\n main?: string\n compatibilityDate?: string\n compatibilityFlags?: string[]\n assets?: {\n directory?: string\n binding?: string\n htmlHandling?: \"auto-trailing-slash\" | \"force-trailing-slash\" | \"drop-trailing-slash\" | \"none\"\n notFoundHandling?: \"single-page-application\" | \"404-page\" | \"none\"\n }\n /**\n * Durable Object bindings declared by the child project (Tier-2 apps).\n * Each binding must reference a SQLite-backed class exported from `main`.\n * `script_name`-style externals and KV-backed (`new_classes`) DOs are\n * rejected upstream of the parser so we keep this shape minimal.\n */\n durableObjects?: ParsedDurableObjectBinding[]\n}\n\nexport class WranglerConfigError extends Error {\n constructor(message: string) {\n super(message)\n this.name = \"WranglerConfigError\"\n }\n}\n\n/**\n * Try to parse wrangler config from a set of project files.\n * Checks wrangler.json, wrangler.jsonc, then wrangler.toml.\n */\nexport function parseWranglerConfig(files: Record<string, string>): ParsedWranglerConfig {\n const jsonContent = files[\"wrangler.json\"] ?? files[\"wrangler.jsonc\"]\n if (jsonContent) return parseJsonConfig(jsonContent)\n\n const tomlContent = files[\"wrangler.toml\"]\n if (tomlContent) return parseTomlConfig(tomlContent)\n\n return {}\n}\n\nfunction parseJsonConfig(content: string): ParsedWranglerConfig {\n // Strip single-line comments for jsonc support\n const stripped = content.replace(/^\\s*\\/\\/.*$/gm, \"\")\n const raw = JSON.parse(stripped)\n\n const cfg: ParsedWranglerConfig = {}\n if (typeof raw.main === \"string\") cfg.main = raw.main\n if (typeof raw.compatibility_date === \"string\") cfg.compatibilityDate = raw.compatibility_date\n if (Array.isArray(raw.compatibility_flags)) cfg.compatibilityFlags = raw.compatibility_flags\n\n if (raw.assets && typeof raw.assets === \"object\") {\n cfg.assets = {}\n if (typeof raw.assets.directory === \"string\") cfg.assets.directory = raw.assets.directory\n if (typeof raw.assets.binding === \"string\") cfg.assets.binding = raw.assets.binding\n if (typeof raw.assets.html_handling === \"string\") cfg.assets.htmlHandling = raw.assets.html_handling\n if (typeof raw.assets.not_found_handling === \"string\") cfg.assets.notFoundHandling = raw.assets.not_found_handling\n }\n\n // \u2500\u2500 Durable Objects (Tier 2) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const dos = parseDurableObjectsJson(raw)\n if (dos && dos.length > 0) cfg.durableObjects = dos\n\n return cfg\n}\n\nfunction parseDurableObjectsJson(raw: any): ParsedDurableObjectBinding[] | undefined {\n const block = raw?.durable_objects\n if (!block || typeof block !== \"object\") return undefined\n const bindings = block.bindings\n if (!Array.isArray(bindings) || bindings.length === 0) return undefined\n\n // Collect the set of class names allowed by migrations.\n const sqliteClasses = new Set<string>()\n const nonSqliteClasses = new Set<string>()\n const migrations = Array.isArray(raw.migrations) ? raw.migrations : []\n for (const m of migrations) {\n if (!m || typeof m !== \"object\") continue\n if (Array.isArray(m.new_sqlite_classes)) {\n for (const c of m.new_sqlite_classes) {\n if (typeof c === \"string\") sqliteClasses.add(c)\n }\n }\n if (Array.isArray(m.new_classes)) {\n for (const c of m.new_classes) {\n if (typeof c === \"string\") nonSqliteClasses.add(c)\n }\n }\n }\n\n const result: ParsedDurableObjectBinding[] = []\n for (const b of bindings) {\n if (!b || typeof b !== \"object\") continue\n if (typeof b.script_name === \"string\") {\n throw new WranglerConfigError(\n `Durable Object binding \"${b.name ?? \"?\"}\" uses script_name. ` +\n `Generated apps cannot reference Durable Objects from other scripts.`,\n )\n }\n const name = typeof b.name === \"string\" ? b.name : null\n const className = typeof b.class_name === \"string\" ? b.class_name : null\n if (!name || !className) {\n throw new WranglerConfigError(\n `Durable Object binding must have both \"name\" and \"class_name\".`,\n )\n }\n if (nonSqliteClasses.has(className)) {\n throw new WranglerConfigError(\n `Durable Object class \"${className}\" uses new_classes (KV storage). ` +\n `Generated apps must declare it under new_sqlite_classes instead.`,\n )\n }\n if (!sqliteClasses.has(className)) {\n throw new WranglerConfigError(\n `Durable Object class \"${className}\" is not declared in migrations.new_sqlite_classes. ` +\n `Add a migration tag with new_sqlite_classes: [\"${className}\"].`,\n )\n }\n result.push({ name, className })\n }\n\n return result\n}\n\nfunction parseTomlConfig(content: string): ParsedWranglerConfig {\n const cfg: ParsedWranglerConfig = {}\n\n // Top-level fields (before any [section])\n cfg.main = extractTomlString(content, \"main\", true)\n cfg.compatibilityDate = extractTomlString(content, \"compatibility_date\", true)\n\n const flags = extractTomlArray(content, \"compatibility_flags\", true)\n if (flags) cfg.compatibilityFlags = flags\n\n // [assets] section\n const assetsSection = extractTomlSection(content, \"assets\")\n if (assetsSection) {\n cfg.assets = {}\n cfg.assets.directory = extractTomlString(assetsSection, \"directory\")\n cfg.assets.binding = extractTomlString(assetsSection, \"binding\")\n cfg.assets.htmlHandling = extractTomlString(assetsSection, \"html_handling\") as ParsedWranglerConfig[\"assets\"] extends { htmlHandling?: infer T } ? T : never\n cfg.assets.notFoundHandling = extractTomlString(assetsSection, \"not_found_handling\") as ParsedWranglerConfig[\"assets\"] extends { notFoundHandling?: infer T } ? T : never\n }\n\n // TOML DO parsing is intentionally not supported; the space skill\n // tells the LLM to use wrangler.json (the file the bundler emits). If\n // a TOML config declares DOs, we surface a clear error so the user\n // knows to switch to JSON.\n if (/\\[\\[durable_objects\\.bindings\\]\\]/.test(content)) {\n throw new WranglerConfigError(\n \"Durable Object bindings in wrangler.toml are not supported. \" +\n \"Use wrangler.json instead.\",\n )\n }\n\n return cfg\n}\n\n// \u2500\u2500\u2500 TOML Helpers (minimal, field-specific) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction extractTomlSection(content: string, name: string): string | undefined {\n const pattern = new RegExp(`^\\\\[${name}\\\\]\\\\s*\\\\n((?:(?!^\\\\[)[^\\\\n]*\\\\n?)*)`, \"m\")\n const match = content.match(pattern)\n return match?.[1]\n}\n\nfunction extractTomlString(content: string, key: string, topLevelOnly?: boolean): string | undefined {\n // If topLevelOnly, only match before the first [section]\n const scope = topLevelOnly ? content.split(/^\\[/m)[0] : content\n const pattern = new RegExp(`^${key}\\\\s*=\\\\s*\"([^\"]*)\"`, \"m\")\n return scope.match(pattern)?.[1]\n}\n\nfunction extractTomlArray(content: string, key: string, topLevelOnly?: boolean): string[] | undefined {\n const scope = topLevelOnly ? content.split(/^\\[/m)[0] : content\n const pattern = new RegExp(`^${key}\\\\s*=\\\\s*\\\\[([^\\\\]]*)\\\\]`, \"m\")\n const match = scope.match(pattern)?.[1]\n if (!match) return undefined\n return match.split(\",\").map(s => s.trim().replace(/^\"|\"$/g, \"\")).filter(Boolean)\n}\n", "import {\n createWorker,\n inferContentType,\n isTextContentType,\n type AssetConfig,\n type Modules,\n} from \"@cloudflare/worker-bundler\"\nimport {\n deploymentRuntimeConfigSource,\n RUNTIME_CONFIG_ASSET_PATH,\n type BranchDeploymentBundle,\n type DeployContext,\n type DeploymentAsset,\n type DeploymentRuntimeConfig,\n type SpaceDeploymentResult,\n} from \"./deployment-contract\"\nimport { globInfos } from \"./fileinfo\"\nimport {\n parseWranglerConfig,\n type ParsedWranglerConfig,\n WranglerConfigError,\n} from \"./wrangler-config\"\n\nexport {\n deploymentRuntimeConfigSource,\n RUNTIME_CONFIG_ASSET_PATH,\n type BranchDeploymentBundle,\n type DeployContext,\n type DeploymentAsset,\n type DeploymentBundle,\n type DeploymentRuntimeConfig,\n type SpaceDeploymentResult,\n} from \"./deployment-contract\"\n\n// \u2500\u2500\u2500 Deploy Engine \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Shared JSON response helper for the internal deploy command handlers. */\nfunction jsonResponse(data: unknown, status: number = 200): Response {\n return new Response(JSON.stringify(data), {\n status,\n headers: { \"Content-Type\": \"application/json\" },\n })\n}\n\ntype AssetWriter = (\n asset: Omit<DeploymentAsset, \"etag\">,\n bytes: Uint8Array,\n) => Promise<string>\n\nconst DEFAULT_COMPATIBILITY_DATE = \"2025-04-01\"\nexport const MAX_STATIC_ASSET_BYTES = 25 * 1024 * 1024\nconst STATIC_APP_MAIN = \".springbrand/static-app.ts\"\nconst STATIC_APP_SOURCE = `import { DurableObject } from \"cloudflare:workers\"\n\nexport class App extends DurableObject {\n fetch() {\n return new Response(\"Not Found\", { status: 404 })\n }\n}\n`\n\nexport async function handleDeployCommand(\n ctx: DeployContext,\n cmd: string,\n request: Request\n): Promise<Response> {\n try {\n switch (cmd) {\n case \"deploy\":\n return await deployBranch(ctx, request)\n case \"get_deployment\":\n return await getDeployment(ctx, request)\n case \"list_deployments\":\n return await listDeployments(ctx)\n case \"undeploy\":\n return await undeployBranch(ctx, request)\n default:\n return jsonResponse({ error: `Unknown deploy command: ${cmd}` }, 400)\n }\n } catch (e: any) {\n return jsonResponse({ error: e.message ?? String(e) }, 500)\n }\n}\n\n// \u2500\u2500\u2500 Read files from a git branch using shell's git \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Reduce a caller-supplied app root to a clean relative directory.\n *\n * A Space is not an app. Most hold a spreadsheet and a couple of scripts, and\n * only the directory the caller names is what gets built and shipped \u2014 nothing\n * else in the Space is scanned, let alone deployed.\n */\nexport function normalizeAppRoot(appRoot?: string | null): string {\n if (!appRoot) return \"\"\n const parts = appRoot.replaceAll(\"\\\\\", \"/\").split(\"/\").filter(Boolean)\n if (parts.some((part) => part === \".\" || part === \"..\")) {\n throw new Error(\"appRoot cannot traverse\")\n }\n return parts.join(\"/\")\n}\n\nasync function readBranchFiles(\n ctx: DeployContext,\n branch: string,\n appRoot = \"\",\n revision?: string,\n writeAsset?: AssetWriter,\n): Promise<{\n commitHash: string\n files: Record<string, string>\n assets: DeploymentAsset[]\n config: ParsedWranglerConfig\n}> {\n const log = await ctx.git.log({ ref: branch, depth: revision ? 1000 : 1 })\n if (log.length === 0) {\n throw new Error(`No commits found on branch \"${branch}\"`)\n }\n const commitHash = revision\n ? log.find((entry) => entry.oid === revision)?.oid\n : log[0].oid\n if (!commitHash) {\n throw new Error(`Revision \"${revision}\" was not found on branch \"${branch}\"`)\n }\n\n await ctx.git.checkout({ ref: revision ? commitHash : branch, force: true })\n\n try {\n const entries: Array<{ sourcePath: string; path: string; size: number }> = []\n for (const info of await globInfos(ctx.fs, \"**/*\")) {\n if (info.type !== \"file\") continue\n if (info.path.startsWith(\"/.git/\") || info.path === \"/.git\") continue\n if (info.path.startsWith(\"/.afs/\") || info.path === \"/.afs\") continue\n\n const path = info.path.startsWith(\"/\") ? info.path.slice(1) : info.path\n if (appRoot) {\n if (path !== appRoot && !path.startsWith(`${appRoot}/`)) continue\n const relativePath = path.slice(appRoot.length + 1)\n entries.push({ sourcePath: info.path, path: relativePath, size: info.size })\n continue\n }\n entries.push({ sourcePath: info.path, path, size: info.size })\n }\n\n const configFiles: Record<string, string> = {}\n for (const name of [\"wrangler.json\", \"wrangler.jsonc\", \"wrangler.toml\"]) {\n const entry = entries.find((candidate) => candidate.path === name)\n if (entry) configFiles[name] = await ctx.fs.readFile(entry.sourcePath)\n }\n let config = parseWebsiteConfig(configFiles)\n const assetPaths = entries.map((entry) => entry.path)\n const assetsDirectory = inferAssetsDirectory(config, configFiles, assetPaths)\n if (!hasWrangler(configFiles) && assetsDirectory !== null) {\n config = staticWebsiteConfig(assetsDirectory)\n }\n\n const files: Record<string, string> = { ...configFiles }\n const assets: DeploymentAsset[] = []\n for (const entry of entries) {\n if (isAssetPath(entry.path, assetsDirectory)) {\n if (entry.size > MAX_STATIC_ASSET_BYTES) {\n throw new Error(\n `Static asset \"${entry.path}\" is ${entry.size} bytes; the limit is ${MAX_STATIC_ASSET_BYTES} bytes`,\n )\n }\n const bytes = await ctx.fs.readFileBytes(entry.sourcePath)\n const asset: Omit<DeploymentAsset, \"etag\"> = {\n path: toAssetPath(entry.path, assetsDirectory!),\n sourcePath: entry.sourcePath,\n contentType: inferContentType(entry.path),\n size: bytes.byteLength,\n }\n const etag = writeAsset\n ? await writeAsset(asset, bytes)\n : await computeAssetEtag(bytes)\n assets.push({ ...asset, etag })\n continue\n }\n\n const contentType = inferContentType(entry.path)\n if (contentType !== undefined && !isTextContentType(contentType)) continue\n if (files[entry.path] === undefined) {\n files[entry.path] = await ctx.fs.readFile(entry.sourcePath)\n }\n }\n\n if (!hasWrangler(configFiles) && assetsDirectory !== null) {\n files[\"wrangler.json\"] = JSON.stringify({\n main: config.main,\n compatibility_date: config.compatibilityDate,\n assets: {\n directory: config.assets!.directory,\n html_handling: config.assets!.htmlHandling,\n not_found_handling: config.assets!.notFoundHandling,\n },\n })\n files[STATIC_APP_MAIN] = STATIC_APP_SOURCE\n }\n\n return { commitHash, files, assets, config }\n } finally {\n if (revision) await ctx.git.checkout({ ref: branch, force: true })\n }\n}\n\n// \u2500\u2500\u2500 Deploy a branch \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nasync function deployBranch(\n ctx: DeployContext,\n request: Request\n): Promise<Response> {\n const body = (await request.json()) as {\n branch: string\n appRoot?: string\n revision?: string\n runtimeConfig?: DeploymentRuntimeConfig\n }\n const branch = body.branch\n if (!branch) {\n return jsonResponse({ error: \"branch is required\" }, 400)\n }\n\n const assetDeploymentId = crypto.randomUUID()\n const assetRoot = ctx.assetPrefix\n ? `${ctx.assetPrefix}/deployments/${assetDeploymentId}`\n : undefined\n let bundle: BranchDeploymentBundle\n try {\n bundle = await buildBranchDeployment(\n ctx,\n branch,\n body.appRoot,\n body.revision,\n async (asset, bytes) => {\n if (!ctx.assetBucket || !assetRoot) {\n throw new Error(\"Static preview deployment requires the WORKSPACE_R2 binding\")\n }\n const key = `${assetRoot}${asset.path}`\n const uploaded = await ctx.assetBucket.put(key, bytes, {\n ...(asset.contentType ? { httpMetadata: { contentType: asset.contentType } } : {}),\n })\n ctx.sql.exec(\n `INSERT INTO deployment_assets\n (deployment_id, path, r2_key, content_type, etag, size)\n VALUES (?, ?, ?, ?, ?, ?)`,\n assetDeploymentId,\n asset.path,\n key,\n asset.contentType ?? null,\n uploaded.etag,\n asset.size,\n )\n return uploaded.etag\n },\n body.runtimeConfig,\n )\n } catch (e) {\n await discardAssetDeployment(ctx, assetDeploymentId, assetRoot).catch((cleanupError) => {\n console.warn(\"Failed to clean incomplete static preview deployment\", cleanupError)\n })\n const message = e instanceof Error ? e.message : String(e)\n const separator = message.indexOf(\": \")\n return jsonResponse({\n error: separator > 0 ? message.slice(0, separator) : message,\n ...(separator > 0 ? { details: message.slice(separator + 2) } : {}),\n }, 400)\n }\n\n const {\n branch: deploymentId,\n commitHash,\n workerModules: {\n mainModule,\n modules: serializedModules,\n compatibilityDate: compatDate,\n },\n staticAssets: assets,\n } = bundle\n\n const now = Date.now()\n const oldDeployment = ctx.sql\n .exec(\n \"SELECT asset_deployment_id FROM deployments WHERE branch = ?\",\n deploymentId,\n )\n .toArray()[0]\n const oldAssetDeploymentId = oldDeployment?.asset_deployment_id as string | undefined\n try {\n ctx.sql.exec(\n `INSERT OR REPLACE INTO deployments\n (branch, commit_hash, main_module, modules, asset_deployment_id,\n compatibility_date, deployed_at)\n VALUES (?, ?, ?, ?, ?, ?, ?)`,\n deploymentId,\n commitHash,\n mainModule,\n JSON.stringify(serializedModules),\n assets.length > 0 ? assetDeploymentId : \"\",\n compatDate,\n now\n )\n } catch (error) {\n await discardAssetDeployment(ctx, assetDeploymentId, assetRoot).catch((cleanupError) => {\n console.warn(\"Failed to clean unactivated static preview deployment\", cleanupError)\n })\n throw error\n }\n\n if (assets.length === 0) {\n await discardAssetDeployment(ctx, assetDeploymentId, assetRoot).catch((error) => {\n console.warn(\"Failed to clean empty static preview deployment\", error)\n })\n }\n if (oldAssetDeploymentId && oldAssetDeploymentId !== assetDeploymentId) {\n await discardAssetDeployment(\n ctx,\n oldAssetDeploymentId,\n ctx.assetPrefix ? `${ctx.assetPrefix}/deployments/${oldAssetDeploymentId}` : undefined,\n ).catch((error) => {\n console.warn(\"Failed to clean replaced static preview deployment\", error)\n })\n }\n\n return jsonResponse({\n branch: deploymentId,\n commit_hash: commitHash,\n main_module: mainModule,\n has_assets: assets.length > 0,\n compatibility_date: compatDate,\n deployed_at: new Date(now).toISOString(),\n asset_root: assets.length > 0 ? assetRoot : null,\n })\n}\n\nexport async function buildBranchDeployment(\n ctx: DeployContext,\n branch: string,\n appRoot?: string | null,\n revision?: string,\n writeAsset?: AssetWriter,\n runtimeConfig?: DeploymentRuntimeConfig,\n): Promise<BranchDeploymentBundle> {\n const root = normalizeAppRoot(appRoot)\n const { commitHash, files, assets, config } = await readBranchFiles(\n ctx,\n branch,\n root,\n revision,\n writeAsset,\n )\n const normalizedRuntimeConfig = normalizeRuntimeConfig(runtimeConfig)\n if (normalizedRuntimeConfig) {\n const bytes = new TextEncoder().encode(\n deploymentRuntimeConfigSource(normalizedRuntimeConfig),\n )\n const asset: Omit<DeploymentAsset, \"etag\"> = {\n path: RUNTIME_CONFIG_ASSET_PATH,\n sourcePath: null,\n contentType: \"application/javascript; charset=utf-8\",\n size: bytes.byteLength,\n }\n const etag = writeAsset\n ? await writeAsset(asset, bytes)\n : await computeAssetEtag(bytes)\n assets.push({ ...asset, etag })\n }\n if (Object.keys(files).length === 0) {\n throw new Error(\n root\n ? `No files found under \"${root}\" on branch \"${branch}\"`\n : `No files found in branch \"${branch}\"`\n )\n }\n\n try {\n const result = await buildWebsite(files, config)\n return {\n branch: revision ?? branch,\n commitHash,\n workerModules: {\n mainModule: result.mainModule,\n modules: result.modules,\n compatibilityDate: result.compatibilityDate,\n },\n staticAssets: assets,\n assetConfig: result.assetConfig,\n runtimeConfig: normalizedRuntimeConfig,\n }\n } catch (e) {\n throw new Error(`Build failed: ${e instanceof Error ? e.message : String(e)}`)\n }\n}\n\nfunction normalizeRuntimeConfig(\n config: DeploymentRuntimeConfig | undefined,\n): DeploymentRuntimeConfig | undefined {\n if (!config) return undefined\n let url: URL\n try {\n url = new URL(config.apiBaseUrl)\n } catch {\n throw new Error(\"runtimeConfig.apiBaseUrl must be an absolute HTTP(S) URL ending in /\")\n }\n if (![\"http:\", \"https:\"].includes(url.protocol) || !url.pathname.endsWith(\"/\")) {\n throw new Error(\"runtimeConfig.apiBaseUrl must be an absolute HTTP(S) URL ending in /\")\n }\n return { apiBaseUrl: url.toString() }\n}\n\nasync function buildWebsite(\n sourceFiles: Record<string, string>,\n config: ParsedWranglerConfig,\n) {\n if (config.durableObjects?.length) {\n throw new Error(\n \"Durable Object bindings are not allowed in wrangler.json: The platform runs your app as a single Durable Object (`export class App extends DurableObject` from your main module). Do not declare `durable_objects.bindings`.\"\n )\n }\n\n const assetConfig: AssetConfig | undefined = config.assets?.directory === undefined\n ? undefined\n : {\n ...(config.assets?.notFoundHandling && {\n not_found_handling: config.assets.notFoundHandling,\n }),\n ...(config.assets?.htmlHandling && {\n html_handling: config.assets.htmlHandling,\n }),\n }\n\n const result = await createWorker({ files: sourceFiles, entryPoint: config.main })\n const modules = serializeModules(result.modules)\n modules[\"__STATIC_CONTENT_MANIFEST\"] ??= { text: \"{}\" }\n return {\n mainModule: result.mainModule,\n modules,\n assetConfig,\n compatibilityDate: config.compatibilityDate ?? DEFAULT_COMPATIBILITY_DATE,\n }\n}\n\nfunction parseWebsiteConfig(files: Record<string, string>): ParsedWranglerConfig {\n try {\n return parseWranglerConfig(files)\n } catch (error) {\n if (error instanceof WranglerConfigError) {\n throw new Error(`Invalid wrangler.json: ${error.message}`)\n }\n throw error\n }\n}\n\nfunction inferAssetsDirectory(\n config: ParsedWranglerConfig,\n configFiles: Record<string, string>,\n paths: string[],\n): string | null {\n if (hasWrangler(configFiles)) return normalizeAssetsDirectory(config.assets?.directory)\n if (paths.includes(\"index.html\")) return \"\"\n if (paths.includes(\"public/index.html\")) return \"public\"\n return null\n}\n\nfunction staticWebsiteConfig(directory: string): ParsedWranglerConfig {\n return {\n main: STATIC_APP_MAIN,\n compatibilityDate: DEFAULT_COMPATIBILITY_DATE,\n assets: {\n directory: directory || \".\",\n htmlHandling: \"auto-trailing-slash\",\n notFoundHandling: \"404-page\",\n },\n }\n}\n\nfunction hasWrangler(files: Record<string, string>): boolean {\n return [\"wrangler.json\", \"wrangler.jsonc\", \"wrangler.toml\"]\n .some((path) => files[path] !== undefined)\n}\n\nfunction normalizeAssetsDirectory(directory?: string): string | null {\n if (directory === undefined) return null\n const normalized = directory.replaceAll(\"\\\\\", \"/\").replace(/^\\.\\//u, \"\").replace(/\\/$/u, \"\")\n return normalized === \".\" ? \"\" : normalized\n}\n\nfunction isAssetPath(path: string, directory: string | null): boolean {\n if (directory === null) return false\n return directory === \"\" || path.startsWith(`${directory}/`)\n}\n\nfunction toAssetPath(path: string, directory: string): string {\n return directory ? `/${path.slice(directory.length + 1)}` : `/${path}`\n}\n\nasync function computeAssetEtag(bytes: Uint8Array): Promise<string> {\n const digest = await crypto.subtle.digest(\"SHA-256\", exactBuffer(bytes))\n return [...new Uint8Array(digest).slice(0, 16)]\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\")\n}\n\nfunction serializeModules(modules: Modules): Record<string, string | Record<string, unknown>> {\n const out: Record<string, string | Record<string, unknown>> = {}\n for (const [name, value] of Object.entries(modules)) {\n out[name] = typeof value === \"string\" ? value : (value as Record<string, unknown>)\n }\n return out\n}\n\n// \u2500\u2500\u2500 Get a deployment \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nasync function getDeployment(\n ctx: DeployContext,\n request: Request\n): Promise<Response> {\n const url = new URL(request.url)\n const branch = url.searchParams.get(\"branch\")\n if (!branch) {\n return jsonResponse({ error: \"branch query param is required\" }, 400)\n }\n\n const row = ctx.sql\n .exec(\n `SELECT branch, commit_hash, main_module, modules, asset_deployment_id, deployed_at\n FROM deployments WHERE branch = ?`,\n branch\n )\n .toArray()\n\n if (row.length === 0) {\n return jsonResponse({ error: `No deployment found for branch \"${branch}\"` }, 404)\n }\n\n const r = row[0]\n const assetDeploymentId = (r.asset_deployment_id as string) || \"\"\n return jsonResponse({\n branch: r.branch as string,\n commit_hash: r.commit_hash as string,\n main_module: r.main_module as string,\n modules: JSON.parse(r.modules as string),\n has_assets: Boolean(assetDeploymentId),\n deployed_at: new Date(r.deployed_at as number).toISOString(),\n asset_root: assetDeploymentId && ctx.assetPrefix\n ? `${ctx.assetPrefix}/deployments/${assetDeploymentId}`\n : null,\n })\n}\n\n// \u2500\u2500\u2500 List deployments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nasync function listDeployments(ctx: DeployContext): Promise<Response> {\n const rows = ctx.sql\n .exec(\n `SELECT branch, commit_hash, main_module, asset_deployment_id, deployed_at\n FROM deployments ORDER BY deployed_at DESC`,\n )\n .toArray()\n const deployments = rows.map((r) => ({\n branch: r.branch as string,\n commit_hash: r.commit_hash as string,\n main_module: r.main_module as string,\n has_assets: Boolean(r.asset_deployment_id),\n deployed_at: new Date(r.deployed_at as number).toISOString(),\n }))\n\n return jsonResponse(deployments)\n}\n\n// \u2500\u2500\u2500 Undeploy a branch \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nasync function undeployBranch(\n ctx: DeployContext,\n request: Request\n): Promise<Response> {\n const body = (await request.json()) as { branch: string }\n const branch = body.branch\n if (!branch) {\n return jsonResponse({ error: \"branch is required\" }, 400)\n }\n\n const row = ctx.sql\n .exec(\"SELECT asset_deployment_id FROM deployments WHERE branch = ?\", branch)\n .toArray()[0]\n const result = ctx.sql.exec(\n \"DELETE FROM deployments WHERE branch = ?\",\n branch\n )\n\n if (result.rowsWritten === 0) {\n return jsonResponse({ error: `No deployment found for branch \"${branch}\"` }, 404)\n }\n\n const assetDeploymentId = row?.asset_deployment_id as string | undefined\n if (assetDeploymentId) {\n await discardAssetDeployment(\n ctx,\n assetDeploymentId,\n ctx.assetPrefix ? `${ctx.assetPrefix}/deployments/${assetDeploymentId}` : undefined,\n ).catch((error) => {\n console.warn(\"Failed to clean undeployed static preview assets\", error)\n })\n }\n\n return jsonResponse({ ok: true, branch })\n}\n\nasync function discardAssetDeployment(\n ctx: DeployContext,\n deploymentId: string,\n root: string | undefined,\n): Promise<void> {\n try {\n if (ctx.assetBucket && root) {\n let cursor: string | undefined\n do {\n const page = await ctx.assetBucket.list({\n prefix: `${root}/`,\n limit: 1000,\n ...(cursor ? { cursor } : {}),\n })\n const keys = page.objects.map((object) => object.key)\n if (keys.length > 0) await ctx.assetBucket.delete(keys)\n cursor = page.truncated ? page.cursor : undefined\n } while (cursor)\n }\n } finally {\n ctx.sql.exec(\"DELETE FROM deployment_assets WHERE deployment_id = ?\", deploymentId)\n }\n}\n\nfunction exactBuffer(bytes: Uint8Array): ArrayBuffer {\n return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer\n}\n"],
|
|
5
|
+
"mappings": "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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzGC,EAAkB,WAAa,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEtI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzGA,EAAkB,WAAa,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEtIA,EAAkB,KAAO,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAElI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzGA,EAAkB,SAAW,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAErIA,EAAkB,UAAY,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAErI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzGA,EAAkB,QAAU,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEnI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzGA,EAAkB,QAAU,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEnI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzG,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,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,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEhH,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEzGA,EAAG,WAAa,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE7H,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1GD,EAAkB,UAAY,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAErI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAEzGC,EAAG,UAAY,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5H,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEzGA,EAAG,SAAW,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAE1HA,EAAG,KAAO,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEvH,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAE9G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEzGA,EAAG,OAAS,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEzH,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1GD,EAAkB,OAAS,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAElI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAEzGC,EAAG,SAAW,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE7HD,EAAkB,UAAY,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAErI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEzGC,EAAG,UAAY,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5H,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,KAAM,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAElH,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEzGA,EAAG,QAAU,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1H,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,IAEzGA,EAAG,UAAY,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5H,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEzGA,EAAG,MAAQ,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAExH,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1GD,EAAkB,OAAS,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAElI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEzGC,EAAG,WAAa,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE7H,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1GD,EAAkB,MAAQ,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEjI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1GA,EAAkB,SAAW,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEpI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAE/GC,EAAG,KAAO,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEvH,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1GD,EAAkB,aAAe,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAExI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,IAEzGC,EAAG,SAAW,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAE1HA,EAAG,KAAO,GAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAE7H,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1GD,EAAkB,QAAU,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEnI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,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,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1GA,EAAkB,SAAW,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEpI,GAAI,KAAM,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAE9G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAA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GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAE1G,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1GA,EAAkB,UAAY,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAErI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5G,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI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AG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE3H,GAAI,KAAM,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,GAAI,KAAM,GAAI,KAAM,GAEpH,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI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",
|
|
6
|
+
"names": ["require_browser", "__commonJSMin", "exports", "module", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__export", "__name", "target", "all", "name", "__copyProps", "to", "from", "except", "desc", "key", "__toCommonJS", "mod", "__async", "__this", "__arguments", "generator", "resolve", "reject", "fulfilled", "value", "step", "e", "rejected", "x", "browser_exports", "analyzeMetafile", "analyzeMetafileSync", "build", "buildSync", "context", "browser_default", "formatMessages", "formatMessagesSync", "initialize", "stop", "transform", "transformSync", "version", "encodePacket", "packet", "visit", "bb", "encodeUTF8", "item", "keys", "ByteBuffer", "writeUInt32LE", "decodePacket", "bytes", "decodeUTF8", "count", "value2", "i", "id", "isRequest", "buf", "delta", "clone", "offset", "readUInt32LE", "length", "ptr", "encodeInvariant", "encoder", "decoder", "text", "buffer", "byteOffset", "byteLength", "fromCharCode", "throwSyntaxError", "index", "message", "c", "line", "column", "JSON_parse", "propertyStack", "objectStack", "stateStack", "property", "state", "object", "code", "j", "codePoint", "quote", "buildLogLevelDefault", "transformLogLevelDefault", "validateAndJoinStringArray", "values", "what", "toJoin", "validateStringValue", "canBeAnything", "mustBeBoolean", "mustBeString", "mustBeRegExp", "mustBeInteger", "mustBeValidPortNumber", "mustBeFunction", "mustBeArray", "mustBeArrayOfStrings", "mustBeObject", "mustBeEntryPoints", "mustBeWebAssemblyModule", "mustBeObjectOrNull", "mustBeStringOrBoolean", "mustBeStringOrObject", "mustBeStringOrArrayOfStrings", "mustBeStringOrUint8Array", "mustBeStringOrURL", "getFlag", "mustBeFn", "mustBe", "checkForInvalidFlags", "where", "validateInitializeOptions", "options", "wasmURL", "wasmModule", "worker", "validateMangleCache", "mangleCache", "validated", "pushLogFlags", "flags", "isTTY", "logLevelDefault", "color", "logLevel", "logLimit", "pushCommonFlags", "legalComments", "sourceRoot", "sourcesContent", "format", "globalName", "mangleProps", "reserveProps", "mangleQuoted", "minify", "minifySyntax", "minifyWhitespace", "minifyIdentifiers", "lineLimit", "drop", "dropLabels", "charset", "treeShaking", "ignoreAnnotations", "jsx", "jsxFactory", "jsxFragment", "jsxImportSource", "jsxDev", "jsxSideEffects", "define", "logOverride", "supported", "pure", "keepNames", "platform", "tsconfigRaw", "absPaths", "jsRegExpToGoRegExp", "fn", "flagsForBuildOptions", "callName", "writeDefault", "_a", "entries", "stdinContents", "stdinResolveDir", "sourcemap", "bundle", "splitting", "preserveSymlinks", "metafile", "outfile", "outdir", "outbase", "tsconfig", "resolveExtensions", "nodePathsInput", "mainFields", "conditions", "external", "packages", "alias", "loader", "outExtension", "publicPath", "entryNames", "chunkNames", "assetNames", "inject", "banner", "footer", "entryPoints", "absWorkingDir", "stdin", "write", "allowOverwrite", "old", "type", "path", "ext", "n", "entryPoint", "entryPointKeys", "input", "output", "stdinKeys", "contents", "resolveDir", "sourcefile", "loader2", "nodePaths", "flagsForTransformOptions", "createChannel", "streamIn", "requestCallbacksByKey", "closeData", "responseCallbacks", "nextRequestID", "nextBuildKey", "stdout", "stdoutUsed", "readFromStdout", "chunk", "limit", "swap", "handleIncomingPacket", "afterClose", "error", "sendRequest", "refs", "callback", "response", "sendResponse", "handleRequest", "request", "requestCallbacks", "errors", "extractErrorMessageV8", "isFirstPacket", "binaryVersion", "defaultWD", "refCount", "buildKey", "buildRefs", "buildOrContextImpl", "err", "res", "fs", "details", "createObjectStash", "start", "inputPath", "replaceDetailsInMessages", "warnings", "outstanding", "next", "result", "failureErrorWithLog", "messages", "kind", "terminalWidth", "sanitizeMessages", "verbose", "isContext", "handleError", "pluginName", "plugins", "handlePlugins", "buildOrContextContinue", "done", "requestPlugins", "runOnEndCallbacks", "scheduleOnDisposeCallbacks", "buildResponseToResult", "callback2", "originalErrors", "originalWarnings", "convertOutputFiles", "parseJSON", "onEndErrors", "onEndWarnings", "latestResultPromise", "provideLatestResult", "request2", "didDispose", "settlePromise", "result2", "triggerAnotherBuild", "error2", "response2", "options2", "delay", "port", "host", "servedir", "keyfile", "certfile", "fallback", "cors", "onRequest", "corsKeys", "origin", "request3", "initialOptions", "onStartCallbacks", "onEndCallbacks", "onResolveCallbacks", "onLoadCallbacks", "onDisposeCallbacks", "nextCallbackID", "isSetupDone", "setup", "plugin", "promise", "keys2", "importer", "namespace", "pluginData", "importAttributes", "resolve2", "sanitizeStringMap", "registeredText", "registeredNote", "extractCallerV8", "filter", "_0", "note", "id2", "suffix", "sideEffects", "watchFiles", "watchDirs", "sanitizeStringArray", "newErrors", "newWarnings", "cb", "map", "nextID", "ident", "tried", "lines", "location2", "parseStackLinesV8", "stash", "at", "match", "lineText", "file", "pluginText", "sanitizeLocation", "suggestion", "relevantASCII", "fallbackPluginName", "messagesClone", "notes", "detail", "notesClone", "noteKeys", "noteText", "noteLocation", "hash", "binary", "regexp", "ensureServiceIsRunning", "stopService", "initializePromise", "longLivedService", "useWorker", "startRunningService", "rejectAllWith", "rejectAllPromise", "blob", "onmessage", "postMessage", "globalThis", "o", "k", "enosys", "outputBuf", "fd", "nl", "position", "mode", "uid", "gid", "link", "perm", "atime", "mtime", "pathSegments", "setInt64", "addr", "v", "setInt32", "getInt64", "low", "high", "loadValue", "f", "storeValue", "typeFlag", "loadSlice", "array", "len", "loadSliceOfValues", "a", "loadString", "saddr", "testCallExport", "b", "timeOrigin", "sp", "p", "msec", "m", "args", "str", "dst", "src", "toCopy", "instance", "strPtr", "argc", "argvPtrs", "arg", "argv", "go", "event", "wasm", "stderr", "parts", "resumeStdin", "stdinPos", "data", "first", "tryToInstantiateModule", "timeout", "firstMessageResolve", "firstMessageReject", "firstMessagePromise", "service", "_", "require_constants", "__commonJSMin", "exports", "module", "SEMVER_SPEC_VERSION", "MAX_SAFE_INTEGER", "MAX_SAFE_COMPONENT_LENGTH", "MAX_SAFE_BUILD_LENGTH", "RELEASE_TYPES", "require_debug", "__commonJSMin", "exports", "module", "debug", "args", "require_re", "__commonJSMin", "exports", "module", "MAX_SAFE_COMPONENT_LENGTH", "MAX_SAFE_BUILD_LENGTH", "MAX_LENGTH", "debug", "re", "safeRe", "src", "safeSrc", "t", "R", "LETTERDASHNUMBER", "safeRegexReplacements", "makeSafeRegex", "__name", "value", "token", "max", "createToken", "name", "isGlobal", "safe", "index", "require_parse_options", "__commonJSMin", "exports", "module", "looseOption", "emptyOpts", "parseOptions", "__name", "options", "require_identifiers", "__commonJSMin", "exports", "module", "numeric", "compareIdentifiers", "__name", "a", "b", "anum", "bnum", "rcompareIdentifiers", "require_semver", "__commonJSMin", "exports", "module", "debug", "MAX_LENGTH", "MAX_SAFE_INTEGER", "re", "t", "parseOptions", "compareIdentifiers", "isPrereleaseIdentifier", "__name", "prerelease", "identifier", "identifiers", "i", "SemVer", "_SemVer", "version", "options", "m", "id", "num", "other", "a", "b", "release", "identifierBase", "match", "base", "prereleaseBase", "require_parse", "__commonJSMin", "exports", "module", "SemVer", "parse", "__name", "version", "options", "throwErrors", "er", "require_valid", "__commonJSMin", "exports", "module", "parse", "valid", "__name", "version", "options", "v", "require_clean", "__commonJSMin", "exports", "module", "parse", "clean", "__name", "version", "options", "s", "require_inc", "__commonJSMin", "exports", "module", "SemVer", "inc", "__name", "version", "release", "options", "identifier", "identifierBase", "require_diff", "__commonJSMin", "exports", "module", "parse", "diff", "__name", "version1", "version2", "v1", "v2", "comparison", "v1Higher", "highVersion", "lowVersion", "highHasPre", "prefix", "require_major", "__commonJSMin", "exports", "module", "SemVer", "major", "__name", "a", "loose", "require_minor", "__commonJSMin", "exports", "module", "SemVer", "minor", "__name", "a", "loose", "require_patch", "__commonJSMin", "exports", "module", "SemVer", "patch", "__name", "a", "loose", "require_prerelease", "__commonJSMin", "exports", "module", "parse", "prerelease", "__name", "version", "options", "parsed", "require_compare", "__commonJSMin", "exports", "module", "SemVer", "compare", "__name", "a", "b", "loose", "require_rcompare", "__commonJSMin", "exports", "module", "compare", "rcompare", "__name", "a", "b", "loose", "require_compare_loose", "__commonJSMin", "exports", "module", "compare", "compareLoose", "__name", "a", "b", "require_compare_build", "__commonJSMin", "exports", "module", "SemVer", "compareBuild", "__name", "a", "b", "loose", "versionA", "versionB", "require_sort", "__commonJSMin", "exports", "module", "compareBuild", "sort", "__name", "list", "loose", "a", "b", "require_rsort", "__commonJSMin", "exports", "module", "compareBuild", "rsort", "__name", "list", "loose", "a", "b", "require_gt", "__commonJSMin", "exports", "module", "compare", "gt", "__name", "a", "b", "loose", "require_lt", "__commonJSMin", "exports", "module", "compare", "lt", "__name", "a", "b", "loose", "require_eq", "__commonJSMin", "exports", "module", "compare", "eq", "__name", "a", "b", "loose", "require_neq", "__commonJSMin", "exports", "module", "compare", "neq", "__name", "a", "b", "loose", "require_gte", "__commonJSMin", "exports", "module", "compare", "gte", "__name", "a", "b", "loose", "require_lte", "__commonJSMin", "exports", "module", "compare", "lte", "__name", "a", "b", "loose", "require_cmp", "__commonJSMin", "exports", "module", "eq", "neq", "gt", "gte", "lt", "lte", "cmp", "__name", "a", "op", "b", "loose", "require_coerce", "__commonJSMin", "exports", "module", "SemVer", "parse", "re", "t", "coerce", "__name", "version", "options", "match", "coerceRtlRegex", "next", "major", "minor", "patch", "prerelease", "build", "require_truncate", "__commonJSMin", "exports", "module", "parse", "constants", "SemVer", "truncate", "__name", "version", "truncation", "options", "clonedVersion", "cloneInputVersion", "doTruncation", "versionStringToParse", "isPrerelease", "type", "require_lrucache", "__commonJSMin", "exports", "module", "LRUCache", "__name", "key", "value", "firstKey", "require_range", "__commonJSMin", "exports", "module", "SPACE_CHARACTERS", "Range", "_Range", "__name", "range", "options", "parseOptions", "Comparator", "r", "c", "first", "isNullSet", "isAny", "i", "comps", "k", "BUILDSTRIPRE", "memoKey", "FLAG_INCLUDE_PRERELEASE", "FLAG_LOOSE", "cached", "cache", "loose", "hr", "re", "t", "hyphenReplace", "debug", "comparatorTrimReplace", "tildeTrimReplace", "caretTrimReplace", "rangeList", "comp", "parseComparator", "replaceGTE0", "rangeMap", "comparators", "result", "thisComparators", "isSatisfiable", "rangeComparators", "thisComparator", "rangeComparator", "version", "SemVer", "testSet", "LRU", "src", "remainingComparators", "testComparator", "otherComparator", "replaceCarets", "replaceTildes", "replaceXRanges", "replaceStars", "isX", "id", "invalidXRangeOrder", "M", "m", "p", "replaceTilde", "z", "_", "pr", "ret", "replaceCaret", "replaceXRange", "gtlt", "xM", "xm", "xp", "anyX", "incPr", "$0", "from", "fM", "fm", "fp", "fpr", "fb", "to", "tM", "tm", "tp", "tpr", "set", "allowed", "require_comparator", "__commonJSMin", "exports", "module", "ANY", "Comparator", "_Comparator", "__name", "comp", "options", "parseOptions", "debug", "re", "t", "m", "SemVer", "version", "cmp", "Range", "require_satisfies", "__commonJSMin", "exports", "module", "Range", "satisfies", "__name", "version", "range", "options", "require_to_comparators", "__commonJSMin", "exports", "module", "Range", "toComparators", "__name", "range", "options", "comp", "c", "require_max_satisfying", "__commonJSMin", "exports", "module", "SemVer", "Range", "maxSatisfying", "__name", "versions", "range", "options", "max", "maxSV", "rangeObj", "v", "require_min_satisfying", "__commonJSMin", "exports", "module", "SemVer", "Range", "minSatisfying", "__name", "versions", "range", "options", "min", "minSV", "rangeObj", "v", "require_min_version", "__commonJSMin", "exports", "module", "SemVer", "Range", "gt", "minVersion", "__name", "range", "loose", "minver", "i", "comparators", "setMin", "comparator", "compver", "require_valid", "__commonJSMin", "exports", "module", "Range", "validRange", "__name", "range", "options", "require_outside", "__commonJSMin", "exports", "module", "SemVer", "Comparator", "ANY", "Range", "satisfies", "gt", "lt", "lte", "gte", "outside", "__name", "version", "range", "hilo", "options", "gtfn", "ltefn", "ltfn", "comp", "ecomp", "i", "comparators", "high", "low", "comparator", "require_gtr", "__commonJSMin", "exports", "module", "outside", "gtr", "__name", "version", "range", "options", "require_ltr", "__commonJSMin", "exports", "module", "outside", "ltr", "__name", "version", "range", "options", "require_intersects", "__commonJSMin", "exports", "module", "Range", "intersects", "__name", "r1", "r2", "options", "require_simplify", "__commonJSMin", "exports", "module", "satisfies", "compare", "versions", "range", "options", "set", "first", "prev", "v", "a", "b", "version", "ranges", "min", "max", "simplified", "original", "require_subset", "__commonJSMin", "exports", "module", "Range", "Comparator", "ANY", "satisfies", "compare", "subset", "__name", "sub", "dom", "options", "sawNonNull", "OUTER", "simpleSub", "simpleDom", "isSub", "simpleSubset", "minimumVersionWithPreRelease", "minimumVersion", "eqSet", "gt", "lt", "c", "higherGT", "lowerLT", "gtltComp", "eq", "higher", "lower", "hasDomLT", "hasDomGT", "needDomLTPre", "needDomGTPre", "a", "b", "comp", "require_semver", "__commonJSMin", "exports", "module", "internalRe", "constants", "SemVer", "identifiers", "parse", "valid", "clean", "inc", "diff", "major", "minor", "patch", "prerelease", "compare", "rcompare", "compareLoose", "compareBuild", "sort", "rsort", "gt", "lt", "eq", "neq", "gte", "lte", "cmp", "coerce", "truncate", "Comparator", "Range", "satisfies", "toComparators", "maxSatisfying", "minSatisfying", "minVersion", "validRange", "outside", "gtr", "ltr", "intersects", "simplifyRange", "subset", "schemeRegex", "urlRegex", "fileRegex", "isAbsoluteUrl", "input", "__name", "isSchemeRelativeUrl", "isAbsolutePath", "isFileUrl", "isRelative", "parseAbsoluteUrl", "match", "makeUrl", "parseFileUrl", "path", "scheme", "user", "host", "port", "query", "hash", "parseUrl", "url", "stripPathFilename", "index", "mergePaths", "base", "normalizePath", "type", "rel", "pieces", "pointer", "positive", "addTrailingSlash", "i", "piece", "resolve", "inputType", "baseUrl", "baseType", "queryHash", "require_util", "__commonJSMin", "exports", "__extends", "extendStatics", "__name", "d", "b", "p", "__", "VError", "_super", "path", "message", "_this", "NoopContext", "relPath", "score", "ur", "DetailContext", "DetailUnionResolver", "unionResolver", "_a", "_b", "u", "best", "_i", "_c", "ctx", "msgParts", "i", "m", "details", "detail", "require_types", "__commonJSMin", "exports", "__extends", "extendStatics", "__name", "d", "b", "p", "__", "util_1", "TType", "parseSpec", "typeSpec", "name", "getNamedType", "suite", "ttype", "value", "TName", "_super", "_this", "strict", "allowedProps", "checker", "BasicType", "ctx", "lit", "TLiteral", "array", "TArray", "itemChecker", "i", "ok", "tuple", "_i", "TTuple", "t", "ttypes", "itemCheckers", "union", "TUnion", "names", "n", "otherTypes", "ur", "intersection", "TIntersection", "enumtype", "values", "TEnumType", "members", "enumlit", "prop", "TEnumLiteral", "enumName", "val", "makeIfaceProps", "props", "makeIfaceProp", "TOptional", "TProp", "iface", "bases", "TIface", "baseCheckers", "propCheckers", "testCtx", "isPropRequired", "name_1", "v", "propSet", "opt", "isOpt", "func", "resultSpec", "params", "TFunc", "TParamList", "paramList", "result", "param", "TParam", "isParamRequired", "validator", "message", "getIsNativeChecker", "nativeToString", "tag", "_loop_1", "array_1", "_a", "require_dist", "__commonJSMin", "exports", "__spreadArrays", "s", "i", "il", "r", "k", "a", "j", "jl", "types_1", "util_1", "types_2", "__name", "util_2", "createCheckers", "typeSuite", "_i", "fullSuite", "checkers", "_a", "typeSuite_1", "suite_1", "_b", "_c", "name", "Checker", "suite", "ttype", "_path", "p", "path", "value", "prop", "methodName", "tfunc", "checkerFunc", "noopCtx", "detailCtx", "require_build", "__commonJSMin", "exports", "LF", "CR", "LinesAndColumns", "string", "offsets", "offset", "__name", "index", "line", "column", "location", "nextOffset", "e", "a", "r", "i", "s", "f", "c", "t", "n", "parse", "k", "l", "u", "b", "o", "h", "R", "S", "F", "x", "L", "v", "d", "C", "$", "K", "g", "E", "U", "w", "I", "D", "M", "q", "ae", "__name", "A", "p", "y", "m", "O", "T", "be", "G", "N", "re", "H", "P", "z", "j", "B", "J", "Q", "V", "W", "X", "Y", "Z", "_", "ee", "ie", "se", "fe", "ce", "te", "ne", "ke", "le", "ue", "oe", "he", "we", "de", "ve", "Ae", "Ce", "ge", "e", "n", "__name", "i", "o", "f", "s", "l", "r", "c", "a", "t", "DATE_TIME_RE", "TomlDate", "_TomlDate", "__name", "#hasDate", "#hasTime", "#offset", "date", "hasDate", "hasTime", "offset", "match", "iso", "jsDate", "getLineColFromPtr", "string", "ptr", "lines", "__name", "makeCodeBlock", "line", "column", "codeblock", "numberLen", "i", "l", "TomlError", "message", "options", "INT_REGEX", "FLOAT_REGEX", "LEADING_ZERO", "parseString", "str", "ptr", "c", "first", "isLiteral", "isMultiline", "parsed", "sliceStart", "state", "i", "TomlError", "value", "len", "j", "hex", "digit", "__name", "parseValue", "toml", "integersAsBigInt", "isInt", "numeric", "date", "TomlDate", "indexOfNewline", "str", "start", "end", "idx", "__name", "skipComment", "ptr", "i", "c", "TomlError", "skipVoid", "banNewLines", "banComments", "skipUntil", "sep", "sliceAndTrimEndOf", "str", "startPtr", "endPtr", "value", "commentIdx", "skipComment", "__name", "extractValue", "ptr", "end", "depth", "integersAsBigInt", "TomlError", "c", "parseArray", "parseInlineTable", "skipVoid", "parsed", "parseString", "skipUntil", "slice", "parseValue", "KEY_PART_RE", "parseKey", "str", "ptr", "end", "dot", "parsed", "endPtr", "TomlError", "c", "part", "eos", "parseString", "strEnd", "newLine", "indexOfNewline", "skipVoid", "__name", "parseInlineTable", "depth", "integersAsBigInt", "res", "seen", "skipComment", "k", "t", "hasOwn", "key", "keyEndPtr", "i", "value", "valueEndPtr", "extractValue", "parseArray", "e", "peekTable", "key", "table", "meta", "type", "t", "m", "k", "hasOwn", "state", "i", "l", "__name", "parse", "toml", "maxDepth", "integersAsBigInt", "res", "tbl", "ptr", "skipVoid", "isTableArray", "parseKey", "TomlError", "p", "v", "extractValue", "ContextualKeyword", "_abstract", "_accessor", "_as", "_assert", "_asserts", "_async", "_await", "_checks", "_constructor", "_declare", "_enum", "_exports", "_from", "_get", "_global", "_implements", "_infer", "_interface", "_is", "_keyof", "_mixins", "_module", "_namespace", "_of", "_opaque", "_out", "_override", "_private", "_protected", "_proto", "_public", "_readonly", "_require", "_satisfies", "_set", "_static", "_symbol", "_type", "_unique", "_using", "TokenType", "IS_KEYWORD", "IS_ASSIGN", "IS_RIGHT_ASSOCIATIVE", "IS_PREFIX", "IS_POSTFIX", "IS_EXPRESSION_START", "num", "bigint", "decimal", "regexp", "string", "name", "eof", "bracketL", "bracketR", "braceL", "braceBarL", "braceR", "braceBarR", "parenL", "parenR", "comma", "semi", "colon", "doubleColon", "dot", "question", "questionDot", "arrow", "template", "ellipsis", "backQuote", "dollarBraceL", "at", "hash", "eq", "assign", "preIncDec", "postIncDec", "bang", "tilde", "pipeline", "nullishCoalescing", "logicalOR", "logicalAND", "bitwiseOR", "bitwiseXOR", "bitwiseAND", "equality", "lessThan", "greaterThan", "relationalOrEqual", "bitShiftL", "bitShiftR", "plus", "minus", "modulo", "star", "slash", "exponent", "jsxName", "jsxText", "jsxEmptyText", "jsxTagStart", "jsxTagEnd", "typeParameterStart", "nonNullAssertion", "_break", "_case", "_catch", "_continue", "_debugger", "_default", "_do", "_else", "_finally", "_for", "_function", "_if", "_return", "_switch", "_throw", "_try", "_var", "_let", "_const", "_while", "_with", "_new", "_this", "_super", "_class", "_extends", "_export", "_import", "_yield", "_null", "_true", "_false", "_in", "_instanceof", "_typeof", "_void", "_delete", "_async", "_get", "_set", "_declare", "_readonly", "_abstract", "_static", "_public", "_private", "_protected", "_override", "_as", "_enum", "_type", "_implements", "formatTokenType", "tokenType", "__name", "Scope", "__name", "startTokenIndex", "endTokenIndex", "isFunctionScope", "StateSnapshot", "potentialArrowAt", "noAnonFunctionType", "inDisallowConditionalTypesContext", "tokensLength", "scopesLength", "pos", "type", "contextualKeyword", "start", "end", "isType", "scopeDepth", "error", "State", "_State", "TokenType", "ContextualKeyword", "snapshot", "charCodes", "lineFeed", "tab", "carriageReturn", "shiftOut", "space", "exclamationMark", "quotationMark", "numberSign", "dollarSign", "percentSign", "ampersand", "apostrophe", "leftParenthesis", "rightParenthesis", "asterisk", "plusSign", "comma", "dash", "dot", "slash", "digit0", "digit1", "digit2", "digit3", "digit4", "digit5", "digit6", "digit7", "digit8", "digit9", "colon", "semicolon", "lessThan", "equalsTo", "greaterThan", "questionMark", "atSign", "uppercaseA", "uppercaseB", "uppercaseC", "uppercaseD", "uppercaseE", "uppercaseF", "uppercaseG", "uppercaseH", "uppercaseI", "uppercaseJ", "uppercaseK", "uppercaseL", "uppercaseM", "uppercaseN", "uppercaseO", "uppercaseP", "uppercaseQ", "uppercaseR", "uppercaseS", "uppercaseT", "uppercaseU", "uppercaseV", "uppercaseW", "uppercaseX", "uppercaseY", "uppercaseZ", "leftSquareBracket", "backslash", "rightSquareBracket", "caret", "underscore", "graveAccent", "lowercaseA", "lowercaseB", "lowercaseC", "lowercaseD", "lowercaseE", "lowercaseF", "lowercaseG", "lowercaseH", "lowercaseI", "lowercaseJ", "lowercaseK", "lowercaseL", "lowercaseM", "lowercaseN", "lowercaseO", "lowercaseP", "lowercaseQ", "lowercaseR", "lowercaseS", "lowercaseT", "lowercaseU", "lowercaseV", "lowercaseW", "lowercaseX", "lowercaseY", "lowercaseZ", "leftCurlyBrace", "verticalBar", "rightCurlyBrace", "tilde", "nonBreakingSpace", "oghamSpaceMark", "lineSeparator", "paragraphSeparator", "isJSXEnabled", "isTypeScriptEnabled", "isFlowEnabled", "state", "input", "nextContextId", "getNextContextId", "__name", "augmentError", "error", "loc", "locationForIndex", "Loc", "line", "column", "pos", "i", "charCodes", "initParser", "inputCode", "isJSXEnabledArg", "isTypeScriptEnabledArg", "isFlowEnabledArg", "State", "isContextual", "contextualKeyword", "state", "__name", "isLookaheadContextual", "l", "lookaheadTypeAndKeyword", "TokenType", "eatContextual", "eat", "expectContextual", "unexpected", "canInsertSemicolon", "match", "hasPrecedingLineBreak", "prevToken", "lastTokEnd", "i", "code", "input", "charCodes", "hasFollowingLineBreak", "nextStart", "nextTokenStart", "isLineTerminator", "semicolon", "expect", "type", "formatTokenType", "message", "pos", "err", "finishToken", "WHITESPACE_CHARS", "charCodes", "skipWhiteSpace", "IS_WHITESPACE", "char", "computeIsIdentifierChar", "code", "__name", "IS_IDENTIFIER_CHAR", "i", "whitespaceChar", "WHITESPACE_CHARS", "IS_IDENTIFIER_START", "numChar", "charCodes", "READ_WORD_TREE", "ContextualKeyword", "TokenType", "readWord", "treePos", "code", "pos", "state", "input", "charCodes", "next", "READ_WORD_TREE", "keywordValue", "IS_IDENTIFIER_CHAR", "finishToken", "TokenType", "ch", "__name", "IdentifierRole", "ExportAccess", "TopLevelDeclaration", "FunctionScopedDeclaration", "BlockScopedDeclaration", "ObjectShorthandTopLevelDeclaration", "ObjectShorthandFunctionScopedDeclaration", "ObjectShorthandBlockScopedDeclaration", "ObjectShorthand", "ImportDeclaration", "ObjectKey", "ImportAccess", "JSXRole", "OneChild", "StaticChildren", "KeyAfterPropSpread", "isDeclaration", "token", "role", "__name", "isNonTopLevelDeclaration", "isTopLevelDeclaration", "isBlockScopedDeclaration", "isFunctionScopedDeclaration", "isObjectShorthandDeclaration", "Token", "state", "next", "nextToken", "nextTemplateToken", "readTmplToken", "retokenizeSlashAsRegex", "TokenType", "readRegexp", "pushTypeContext", "existingTokensInType", "i", "oldIsType", "popTypeContext", "eat", "type", "match", "eatTypeToken", "tokenType", "lookaheadType", "snapshot", "TypeAndKeyword", "contextualKeyword", "lookaheadTypeAndKeyword", "nextTokenStart", "nextTokenStartSince", "pos", "skipWhiteSpace", "skip", "input", "lookaheadCharCode", "skipSpace", "tokens", "unexpected", "finishToken", "readToken", "code", "IS_IDENTIFIER_START", "charCodes", "readWord", "getTokenFromCode", "skipBlockComment", "skipLineComment", "startSkip", "ch", "IS_WHITESPACE", "ContextualKeyword", "readToken_dot", "nextChar", "readNumber", "readToken_slash", "finishOp", "readToken_mult_modulo", "width", "readToken_pipe_amp", "isFlowEnabled", "readToken_caret", "readToken_plus_min", "readToken_lt", "readToken_gt", "size", "rescan_gt", "readToken_eq_excl", "readToken_question", "nextChar2", "readRadixNumber", "readString", "start", "escaped", "inClass", "skipWord", "readInt", "startsWithDot", "isBigInt", "isDecimal", "quote", "IS_IDENTIFIER_CHAR", "getImportExportSpecifierInfo", "tokens", "index", "endIndex", "isSpecifierEnd", "name", "__name", "token", "TokenType", "xhtml_default", "getJSXPragmaInfo", "options", "base", "suffix", "splitPragma", "fragmentBase", "fragmentSuffix", "__name", "pragma", "dotIndex", "Transformer", "__name", "JSXTransformer", "_JSXTransformer", "Transformer", "__name", "rootTransformer", "tokens", "importProcessor", "nameManager", "options", "getJSXPragmaInfo", "TokenType", "prefix", "path", "resolvedName", "createElementResolution", "otherResolutions", "importSpecifiers", "name", "importPath", "jsxRole", "start", "elementLocationCode", "JSXRole", "firstTokenStart", "index", "code", "isStatic", "keyCode", "jsxPragmaInfo", "funcName", "importPathSuffix", "funcCode", "introEnd", "tagName", "startsWithLowerCase", "devProps", "extractKeyCode", "propName", "snapshot", "token", "valueCode", "replacementCode", "formatJSXTextReplacement", "literalCode", "formatJSXStringValueLiteral", "needsInitialComma", "needsComma", "didEmitElement", "formatJSXTextLiteral", "s", "firstChar", "charCodes", "text", "result", "whitespace", "isInInitialLineWhitespace", "seenNonWhitespace", "i", "c", "entity", "newI", "processEntity", "numNewlines", "numSpaces", "indexAfterAmpersand", "str", "count", "radix", "numStart", "isHexDigit", "isDecimalDigit", "numStr", "ch", "xhtml_default", "getNonTypeIdentifiers", "tokens", "options", "jsxPragmaInfo", "getJSXPragmaInfo", "nonTypeIdentifiers", "token", "TokenType", "IdentifierRole", "identifierName", "startsWithLowerCase", "__name", "CJSImportProcessor", "_CJSImportProcessor", "__name", "nameManager", "tokens", "enableLegacyTypeScriptModuleInterop", "options", "isTypeScriptTransformEnabled", "keepUnusedImports", "helperManager", "i", "TokenType", "getNonTypeIdentifiers", "path", "importInfo", "localName", "name", "defaultNames", "wildcardNames", "namedImports", "namedExports", "exportStarNames", "hasStarExport", "primaryImportName", "secondaryImportName", "requireCode", "wildcardName", "moduleExpr", "importedName", "exportStarName", "defaultName", "components", "baseName", "index", "ContextualKeyword", "result", "namedImport", "exportName", "depth", "endIndex", "token", "isDeclaration", "newIndex", "exportedName", "specifierInfo", "getImportExportSpecifierInfo", "existingInfo", "newInfo", "importPath", "identifierName", "assignedName", "exportedNames", "comma", "semicolon", "chars", "intToChar", "charToInt", "i", "c", "encodeInteger", "builder", "num", "relative", "delta", "clamped", "intToChar", "__name", "bufLength", "td", "buf", "out", "i", "StringWriter", "__name", "v", "buffer", "pos", "encode", "decoded", "writer", "StringWriter", "sourcesIndex", "sourceLine", "sourceColumn", "namesIndex", "i", "line", "semicolon", "genColumn", "j", "segment", "comma", "encodeInteger", "__name", "import_resolve_uri", "SetArray", "__name", "get", "setarr", "key", "__name", "put", "index", "array", "indexes", "length", "COLUMN", "SOURCES_INDEX", "SOURCE_LINE", "SOURCE_COLUMN", "NAMES_INDEX", "NO_NAME", "GenMapping", "__name", "file", "sourceRoot", "SetArray", "maybeAddSegment", "__name", "map", "genLine", "genColumn", "source", "sourceLine", "sourceColumn", "name", "content", "addSegmentInternal", "toDecodedMap", "map", "mappings", "sources", "sourcesContent", "names", "ignoreList", "removeEmptyFinalLines", "__name", "toEncodedMap", "decoded", "encode", "addSegmentInternal", "skipable", "map", "genLine", "genColumn", "source", "sourceLine", "sourceColumn", "name", "content", "mappings", "sources", "sourcesContent", "names", "line", "getIndex", "index", "getColumnIndex", "skipSourceless", "insert", "sourcesIndex", "put", "namesIndex", "NO_NAME", "skipSource", "__name", "getIndex", "arr", "index", "i", "__name", "getColumnIndex", "line", "genColumn", "current", "COLUMN", "insert", "array", "value", "removeEmptyFinalLines", "mappings", "length", "len", "skipSourceless", "line", "index", "__name", "skipSource", "sourcesIndex", "sourceLine", "sourceColumn", "namesIndex", "prev", "SOURCES_INDEX", "SOURCE_LINE", "SOURCE_COLUMN", "NAMES_INDEX", "NO_NAME", "computeSourceMap", "generatedCode", "rawMappings", "filePath", "options", "source", "tokens", "sourceColumns", "computeSourceColumns", "map", "GenMapping", "tokenIndex", "currentMapping", "line", "lineStart", "maybeAddSegment", "i", "genColumn", "sourceColumn", "charCodes", "sourceRoot", "sourcesContent", "sourceMap", "toEncodedMap", "__name", "code", "HELPERS", "HelperManager", "_HelperManager", "__name", "nameManager", "baseName", "helperName", "resultCode", "helperCodeTemplate", "helperCode", "identifyShadowedGlobals", "tokens", "scopes", "globalNames", "hasShadowedGlobals", "markShadowedGlobals", "__name", "token", "TokenType", "isNonTopLevelDeclaration", "scopeStack", "scopeIndex", "i", "name", "isBlockScopedDeclaration", "markShadowedForScope", "isFunctionScopedDeclaration", "stackIndex", "scope", "getIdentifierNames", "code", "tokens", "names", "token", "TokenType", "__name", "NameManager", "_NameManager", "__name", "code", "tokens", "getIdentifierNames", "name", "newName", "suffixNum", "import_ts_interface_checker", "t", "Transform", "SourceMapOptions", "Options", "exportedTypeSuite", "Options_gen_types_default", "OptionsChecker", "Options_gen_types_default", "validateOptions", "options", "__name", "parseSpread", "next", "parseMaybeAssign", "__name", "parseRest", "isBlockScope", "parseBindingAtom", "parseBindingIdentifier", "parseIdentifier", "markPriorBindingIdentifier", "parseImportedIdentifier", "state", "IdentifierRole", "identifierRole", "TokenType", "oldIsType", "pushTypeContext", "popTypeContext", "parseBindingList", "parseObj", "unexpected", "close", "allowEmpty", "allowModifiers", "contextId", "first", "hasRemovedComma", "firstItemTokenIndex", "eat", "expect", "match", "parseAssignableListItemTypes", "parseAssignableListItem", "tsParseModifiers", "ContextualKeyword", "parseMaybeDefault", "isFlowEnabled", "flowParseAssignableListItemTypes", "isTypeScriptEnabled", "tsParseAssignableListItemTypes", "leftAlreadyParsed", "eqIndex", "tsIsIdentifier", "match", "TokenType", "__name", "isLiteralPropertyName", "state", "tsNextTokenCanFollowModifier", "snapshot", "next", "hasPrecedingLineBreak", "tsParseModifiers", "allowedModifiers", "tsParseModifier", "modifier", "ContextualKeyword", "tsParseEntityName", "parseIdentifier", "eat", "tsParseTypeReference", "tsParseTypeArguments", "tsParseThisTypePredicate", "tsParseTypeAnnotation", "tsParseThisTypeNode", "tsParseTypeQuery", "expect", "tsParseImportType", "tsParseTypeParameter", "hadIn", "hadOut", "eatContextual", "tsParseType", "tsTryParseTypeParameters", "tsParseTypeParameters", "oldIsType", "pushTypeContext", "unexpected", "popTypeContext", "tsFillSignature", "returnToken", "returnTokenRequired", "tsParseBindingListForSignature", "tsParseTypeOrTypePredicateAnnotation", "isBlockScope", "parseBindingList", "tsParseTypeMemberSemicolon", "semicolon", "tsParseSignatureMember", "tsIsUnambiguouslyIndexSignature", "isIndexSignature", "tsTryParseIndexSignature", "tsTryParseTypeAnnotation", "tsParsePropertyOrMethodSignature", "isReadonly", "tsParseTypeMember", "readonly", "isContextual", "parsePropertyName", "tsParseTypeLiteral", "tsParseObjectTypeMembers", "tsLookaheadIsStartOfMappedType", "isStartOfMappedType", "tsIsStartOfMappedType", "tsParseMappedTypeParameter", "tsParseMappedType", "expectContextual", "tsTryParseType", "tsParseTupleType", "tsParseTupleElementType", "tsParseParenthesizedType", "tsParseTemplateLiteralType", "nextTemplateToken", "FunctionType", "TSConstructorType", "TSAbstractConstructorType", "tsParseFunctionOrConstructorType", "type", "oldInDisallowConditionalTypesContext", "tsParseNonArrayType", "parseLiteral", "tsParseArrayTypeOrHigher", "tsParseInferType", "tsParseTypeOperatorOrHigher", "tsParseIntersectionTypeOrHigher", "tsParseUnionTypeOrHigher", "tsIsStartOfFunctionType", "tsLookaheadIsUnambiguouslyStartOfFunctionType", "tsSkipParameterStart", "depth", "isUnambiguouslyStartOfFunctionType", "tsIsUnambiguouslyStartOfFunctionType", "tsParseTypePredicateOrAssertsPrefix", "tsTryParseTypeOrTypePredicateAnnotation", "tsParseNonConditionalType", "isAbstractConstructorSignature", "lookaheadType", "tsParseTypeAssertion", "parseMaybeUnary", "tsTryParseJSXTypeArgument", "nextJSXTagToken", "tsParseHeritageClause", "tsParseExpressionWithTypeArguments", "tsParseInterfaceDeclaration", "parseBindingIdentifier", "tsParseTypeAliasDeclaration", "tsParseEnumMember", "eqIndex", "parseMaybeAssign", "tsParseEnumDeclaration", "tsParseModuleBlock", "parseBlockBody", "tsParseModuleOrNamespaceDeclaration", "tsParseAmbientExternalModuleDeclaration", "parseExprAtom", "tsParseImportEqualsDeclaration", "parseImportedIdentifier", "tsParseModuleReference", "tsIsExternalModuleReference", "tsParseExternalModuleReference", "tsTryParseDeclare", "isLineTerminator", "functionStart", "parseFunction", "parseClass", "isLookaheadContextual", "parseVarStatement", "contextualKeyword", "matched", "tsParseDeclaration", "tsTryParseExportDeclaration", "tsParseExpressionStatement", "declareTokenIndex", "isBeforeToken", "tsCheckLineTerminator", "tsTryParseGenericAsyncArrowFunction", "parseFunctionParams", "parseFunctionBody", "tsParseTypeArgumentsWithPossibleBitshift", "finishToken", "rescan_gt", "tsIsDeclarationStart", "tsParseFunctionBodyAndFinish", "funcContextId", "i", "tsParseSubscript", "startTokenIndex", "noCalls", "stopState", "atPossibleAsync", "parseCallExpressionArguments", "parseTemplate", "baseParseSubscript", "tsTryParseExport", "parseExpression", "nextType", "tsParseImportSpecifier", "IdentifierRole", "tsParseExportSpecifier", "tsTryParseExportDefaultExpression", "tsTryParseStatementContent", "ahead", "lookaheadTypeAndKeyword", "tsTryParseClassMemberWithIsStatic", "isStatic", "memberStartIndexAfterStatic", "modifiersEndIndex", "memberStartIndex", "tsParseIdentifierStatement", "tsParseExportDeclaration", "isDeclare", "matchedDeclaration", "parseStatement", "tsAfterParseClassSuper", "hasSuper", "tsStartParseObjPropValue", "tsStartParseFunctionParams", "tsAfterParseVarHead", "tsStartParseAsyncArrowFromCallExpression", "tsParseMaybeAssign", "noIn", "isWithinParens", "isJSXEnabled", "tsParseMaybeAssignWithJSX", "tsParseMaybeAssignWithoutJSX", "baseParseMaybeAssign", "wasArrow", "tsParseArrow", "canInsertSemicolon", "tsParseAssignableListItemTypes", "tsParseMaybeDecoratorArguments", "baseParseMaybeDecoratorArguments", "jsxReadToken", "sawNewline", "sawNonWhitespace", "state", "input", "unexpected", "ch", "charCodes", "finishToken", "TokenType", "getTokenFromCode", "__name", "jsxReadString", "quote", "jsxReadWord", "IS_IDENTIFIER_CHAR", "jsxParseIdentifier", "nextJSXTagToken", "jsxParseNamespacedName", "identifierRole", "eat", "jsxParseElementName", "firstTokenIndex", "IdentifierRole", "hadDot", "match", "firstToken", "firstChar", "jsxParseAttributeValue", "next", "parseExpression", "jsxParseElement", "jsxParseSpreadChild", "expect", "jsxParseOpeningElement", "initialTokenIndex", "isTypeScriptEnabled", "tsTryParseJSXTypeArgument", "hasSeenPropSpread", "parseMaybeAssign", "JSXRole", "isSelfClosing", "jsxParseClosingElement", "jsxParseElementAt", "numExplicitChildren", "nextJSXExprToken", "Token", "skipSpace", "code", "IS_IDENTIFIER_START", "typedParseConditional", "noIn", "match", "TokenType", "nextType", "lookaheadType", "baseParseConditional", "__name", "typedParseParenItem", "eatTypeToken", "isTypeScriptEnabled", "tsParseTypeAnnotation", "isFlowEnabled", "flowParseTypeAnnotation", "StopState", "__name", "stop", "parseExpression", "noIn", "parseMaybeAssign", "match", "TokenType", "eat", "isWithinParens", "isTypeScriptEnabled", "tsParseMaybeAssign", "isFlowEnabled", "flowParseMaybeAssign", "baseParseMaybeAssign", "parseYield", "state", "wasArrow", "parseMaybeConditional", "parseParenItem", "next", "parseExprOps", "parseConditional", "typedParseConditional", "baseParseConditional", "expect", "startTokenIndex", "parseMaybeUnary", "parseExprOp", "minPrec", "hasPrecedingLineBreak", "eatContextual", "ContextualKeyword", "oldIsType", "pushTypeContext", "tsParseType", "popTypeContext", "rescan_gt", "prec", "op", "rhsStartTokenIndex", "isJSXEnabled", "tsParseTypeAssertion", "isContextual", "lookaheadCharCode", "charCodes", "hasFollowingLineBreak", "parseModuleExpression", "parseExprSubscripts", "canInsertSemicolon", "parseExprAtom", "parseSubscripts", "noCalls", "flowParseSubscripts", "baseParseSubscripts", "stopState", "parseSubscript", "tsParseSubscript", "flowParseSubscript", "baseParseSubscript", "parseNoCallExpr", "lookaheadType", "parseCallExpressionArguments", "parseMaybePrivateName", "atPossibleAsync", "snapshot", "asyncStartTokenIndex", "callContextId", "getNextContextId", "shouldParseAsyncArrow", "parseFunctionParams", "parseAsyncArrowFromCallExpression", "parseTemplate", "first", "parseExprListItem", "tsStartParseAsyncArrowFromCallExpression", "flowStartParseAsyncArrowFromCallExpression", "parseArrowExpression", "parseIdentifier", "parseLiteral", "jsxParseElement", "canBeArrow", "retokenizeSlashAsRegex", "functionStart", "contextualKeyword", "parseAwait", "parseFunction", "parseBindingIdentifier", "parseBlock", "markPriorBindingIdentifier", "IdentifierRole", "parseParenAndDistinguishExpression", "parseExprList", "parseObj", "parseFunctionExpression", "parseDecorators", "parseClass", "parseNew", "code", "IS_IDENTIFIER_START", "unexpected", "parseParenExpression", "parseRest", "shouldParseArrow", "parseArrow", "tsParseArrow", "flowParseArrow", "typedParseParenItem", "parseNewCallee", "flowStartParseNewArguments", "nextTemplateToken", "isPattern", "isBlockScope", "contextId", "isGenerator", "previousIndex", "parseSpread", "parsePropertyName", "parseObjPropValue", "isGetterOrSetterMethod", "parseObjectMethod", "objectContextId", "parseMethod", "parseObjectProperty", "parseMaybeDefault", "identifierRole", "tsStartParseObjPropValue", "flowStartParseObjPropValue", "flowParseVariance", "isConstructor", "funcContextId", "parseFunctionBodyAndFinish", "endTokenIndex", "Scope", "parseFunctionBody", "tsParseFunctionBodyAndFinish", "flowParseFunctionBodyAndFinish", "allowExpression", "close", "allowEmpty", "expectContextual", "parseBlockBody", "isMaybeDefaultImport", "lookahead", "TokenType", "ContextualKeyword", "__name", "flowParseTypeInitialiser", "tok", "oldIsType", "pushTypeContext", "expect", "flowParseType", "popTypeContext", "flowParsePredicate", "expectContextual", "eat", "parseExpression", "flowParseTypeAndPredicateInitialiser", "match", "flowParseDeclareClass", "next", "flowParseInterfaceish", "flowParseDeclareFunction", "parseIdentifier", "flowParseTypeParameterDeclaration", "flowParseFunctionTypeParams", "semicolon", "flowParseDeclare", "flowParseDeclareVariable", "eatContextual", "flowParseDeclareModuleExports", "flowParseDeclareModule", "isContextual", "flowParseDeclareTypeAlias", "flowParseDeclareOpaqueType", "flowParseDeclareInterface", "flowParseDeclareExportDeclaration", "unexpected", "flowParseTypeAnnotatableIdentifier", "parseExprAtom", "state", "parseImport", "parseExport", "flowParseTypeAnnotation", "flowParseTypeAlias", "flowParseOpaqueType", "isClass", "flowParseRestrictedIdentifier", "flowParseInterfaceExtends", "flowParseObjectType", "flowParseQualifiedTypeIdentifier", "flowParseTypeParameterInstantiation", "flowParseInterface", "declare", "flowParseTypeParameter", "flowParseVariance", "flowParseInterfaceType", "flowParseObjectPropertyKey", "flowParseObjectTypeIndexer", "lookaheadType", "flowParseObjectTypeInternalSlot", "flowParseObjectTypeMethodish", "flowParseFunctionTypeParam", "flowParseObjectTypeCallProperty", "allowStatic", "allowExact", "allowProto", "endDelim", "flowParseObjectTypeProperty", "flowObjectTypeSemicolon", "initialIdAlreadyParsed", "flowParseGenericType", "flowParseTypeofType", "flowParsePrimaryType", "flowParseTupleType", "input", "isGroupedType", "oldNoAnonFunctionType", "token", "parseLiteral", "flowParsePostfixType", "canInsertSemicolon", "flowParsePrefixType", "flowParseAnonFunctionWithoutParens", "flowParseIntersectionType", "flowParseUnionType", "flowParseFunctionBodyAndFinish", "funcContextId", "parseFunctionBody", "flowParseSubscript", "startTokenIndex", "noCalls", "stopState", "parseCallExpressionArguments", "snapshot", "baseParseSubscript", "flowStartParseNewArguments", "flowTryParseStatement", "flowParseEnumDeclaration", "flowTryParseExportDefaultExpression", "flowParseIdentifierStatement", "contextualKeyword", "flowShouldParseExportDeclaration", "flowShouldDisallowExportDefaultSpecifier", "flowParseExportDeclaration", "parseExportSpecifiers", "parseExportFrom", "parseStatement", "flowShouldParseExportStar", "flowParseExportStar", "baseParseExportStar", "flowAfterParseClassSuper", "hasSuper", "flowStartParseObjPropValue", "flowParseAssignableListItemTypes", "flowStartParseImportSpecifiers", "lh", "lookaheadTypeAndKeyword", "flowParseImportSpecifier", "isTypeKeyword", "isLookaheadContextual", "flowStartParseFunctionParams", "flowAfterParseVarHead", "flowStartParseAsyncArrowFromCallExpression", "flowParseMaybeAssign", "noIn", "isWithinParens", "wasArrow", "baseParseMaybeAssign", "flowParseArrow", "flowParseSubscripts", "parseAsyncArrowWithTypeParameters", "baseParseSubscripts", "parseFunctionParams", "parseArrow", "parseArrowExpression", "flowParseEnumBody", "flowParseEnumMembers", "flowParseEnumMember", "parseTopLevel", "parseBlockBody", "TokenType", "state", "Scope", "File", "__name", "parseStatement", "declaration", "isFlowEnabled", "flowTryParseStatement", "match", "parseDecorators", "parseStatementContent", "isTypeScriptEnabled", "tsTryParseStatementContent", "starttype", "parseBreakContinueStatement", "parseDebuggerStatement", "parseDoStatement", "parseForStatement", "lookaheadType", "unexpected", "parseFunctionStatement", "parseClass", "parseIfStatement", "parseReturnStatement", "parseSwitchStatement", "parseThrowStatement", "parseTryStatement", "parseVarStatement", "parseWhileStatement", "parseBlock", "parseEmptyStatement", "nextType", "next", "parseImport", "parseExport", "ContextualKeyword", "functionStart", "snapshot", "canInsertSemicolon", "expect", "parseFunction", "hasFollowingLineBreak", "startsAwaitUsing", "expectContextual", "initialTokensLength", "parseExpression", "simpleName", "token", "semicolon", "eat", "parseLabeledStatement", "parseIdentifierStatement", "isContextual", "hasPrecedingLineBreak", "parseDecorator", "parseIdentifier", "parseMaybeDecoratorArguments", "tsParseMaybeDecoratorArguments", "baseParseMaybeDecoratorArguments", "parseCallExpressionArguments", "isLineTerminator", "parseParenExpression", "startTokenIndex", "parseAmbiguousForStatement", "endTokenIndex", "isUsingInLoop", "isLookaheadContextual", "forAwait", "parseFor", "isAwaitUsing", "parseVar", "parseForIn", "isCase", "parseCatchClauseParam", "parseBindingAtom", "tsTryParseTypeAnnotation", "catchBindingStartTokenIndex", "isBlockScope", "contextualKeyword", "tsParseIdentifierStatement", "flowParseIdentifierStatement", "isFunctionScope", "contextId", "end", "eatContextual", "isFor", "parseVarHead", "eqIndex", "parseMaybeAssign", "tsAfterParseVarHead", "flowAfterParseVarHead", "isStatement", "optionalId", "nameScopeStartTokenIndex", "parseBindingIdentifier", "parseFunctionParams", "parseFunctionBodyAndFinish", "allowModifiers", "funcContextId", "tsStartParseFunctionParams", "flowStartParseFunctionParams", "parseBindingList", "getNextContextId", "parseClassId", "parseClassSuper", "openBraceIndex", "parseClassBody", "isClassProperty", "isClassMethod", "classContextId", "memberStart", "parseClassMember", "tsParseModifiers", "isStatic", "parseClassMethod", "parseClassProperty", "parseClassMemberWithIsStatic", "tsTryParseClassMemberWithIsStatic", "parseClassPropertyName", "isConstructor", "parsePostMemberNameModifiers", "tsTryParseTypeParameters", "flowParseTypeParameterDeclaration", "parseMethod", "parsePropertyName", "oldIsType", "pushTypeContext", "popTypeContext", "eatTypeToken", "flowParseTypeAnnotation", "equalsTokenIndex", "hasSuper", "parseExprSubscripts", "tsAfterParseClassSuper", "flowAfterParseClassSuper", "exportIndex", "tsTryParseExport", "shouldParseExportStar", "parseExportStar", "isExportDefaultSpecifier", "parseExportSpecifiersMaybe", "parseExportFrom", "parseExportDefaultExpression", "shouldParseExportDeclaration", "parseExportDeclaration", "parseExportSpecifiers", "tsTryParseExportDefaultExpression", "flowTryParseExportDefaultExpression", "tsParseExportDeclaration", "flowParseExportDeclaration", "tsIsDeclarationStart", "flowShouldDisallowExportDefaultSpecifier", "_next", "nextTokenStart", "lookahead", "lookaheadTypeAndKeyword", "hasFrom", "nextAfterFrom", "input", "nextTokenStartSince", "charCodes", "parseExprAtom", "maybeParseImportAttributes", "flowShouldParseExportStar", "flowParseExportStar", "baseParseExportStar", "parseExportNamespace", "flowShouldParseExportDeclaration", "first", "parseExportSpecifier", "tsParseExportSpecifier", "IdentifierRole", "isImportReflection", "parseMaybeImportReflection", "tsParseImportEqualsDeclaration", "parseImportSpecifiers", "shouldParseDefaultImport", "parseImportSpecifierLocal", "parseImportedIdentifier", "flowStartParseImportSpecifiers", "parseImportSpecifier", "tsParseImportSpecifier", "flowParseImportSpecifier", "parseObj", "parseFile", "state", "input", "charCodes", "skipLineComment", "nextToken", "parseTopLevel", "__name", "File", "__name", "tokens", "scopes", "parse", "input", "isJSXEnabled", "isTypeScriptEnabled", "isFlowEnabled", "initParser", "result", "parseFile", "state", "augmentError", "isAsyncOperation", "tokens", "index", "depth", "startToken", "token", "ContextualKeyword", "__name", "TokenProcessor", "_TokenProcessor", "__name", "code", "tokens", "isFlowEnabled", "disableESTransforms", "helperManager", "snapshot", "result", "index", "contextualKeyword", "TokenType", "relativeIndex", "token", "t1", "t2", "t3", "t4", "t5", "type", "contextId", "whitespaceAndComments", "newCode", "braceDepth", "tokenType", "prefix", "isAsyncOperation", "i", "getClassInfo", "rootTransformer", "tokens", "nameManager", "disableESTransforms", "snapshot", "headerInfo", "processClassHeader", "constructorInitializerStatements", "instanceInitializerNames", "staticInitializerNames", "constructorInsertPos", "fields", "rangesToRemove", "classContextId", "TokenType", "ContextualKeyword", "processConstructor", "statementStartIndex", "isStatic", "isESPrivate", "isDeclareOrAbstract", "isAccessModifier", "skipToNextClassElement", "nameStartIndex", "skipFieldName", "equalsIndex", "valueEnd", "initializerName", "__name", "classToken", "contextId", "isExpression", "className", "hasSuperclass", "constructorContextId", "token", "name", "foundSuperCall", "superCallContextId", "elideImportEquals", "tokens", "TokenType", "__name", "EMPTY_DECLARATION_INFO", "getDeclarationInfo", "tokens", "typeDeclarations", "valueDeclarations", "i", "token", "TokenType", "isTopLevelDeclaration", "__name", "isExportFrom", "tokens", "closeBraceIndex", "TokenType", "ContextualKeyword", "__name", "removeMaybeImportAttributes", "tokens", "TokenType", "ContextualKeyword", "__name", "shouldElideDefaultExport", "isTypeScriptTransformEnabled", "keepUnusedImports", "tokens", "declarationInfo", "exportToken", "numTokens", "TokenType", "identifierToken", "exportedName", "__name", "CJSImportTransformer", "_CJSImportTransformer", "Transformer", "__name", "rootTransformer", "tokens", "importProcessor", "nameManager", "helperManager", "reactHotLoaderTransformer", "enableLegacyBabel5ModuleInterop", "enableLegacyTypeScriptModuleInterop", "isTypeScriptTransformEnabled", "isFlowTransformEnabled", "preserveDynamicImport", "keepUnusedImports", "getDeclarationInfo", "EMPTY_DECLARATION_INFO", "prefix", "TokenType", "importName", "elideImportEquals", "requireWrapper", "contextId", "path", "removeMaybeImportAttributes", "ContextualKeyword", "foundNonTypeImport", "foundAnyNamedImport", "token", "IdentifierRole", "replacement", "possibleOpenParenIndex", "identifier", "index", "identifierToken", "assignmentSnippet", "identifierName", "operatorToken", "operatorCode", "base", "exportedRuntimeValue", "name", "shouldElideDefaultExport", "defaultVarName", "tokenIndex", "varName", "endIndex", "needsParens", "depth", "isDeclaration", "isObjectShorthandDeclaration", "isReExport", "isExportFrom", "exportStatements", "specifierInfo", "getImportExportSpecifierInfo", "exportedName", "localName", "newLocalName", "ESMImportTransformer", "Transformer", "__name", "tokens", "nameManager", "helperManager", "reactHotLoaderTransformer", "isTypeScriptTransformEnabled", "isFlowTransformEnabled", "keepUnusedImports", "options", "getNonTypeIdentifiers", "getDeclarationInfo", "EMPTY_DECLARATION_INFO", "TokenType", "ContextualKeyword", "i", "removeMaybeImportAttributes", "importName", "elideImportEquals", "snapshot", "foundNonTypeImport", "foundAnyNamedImport", "needsComma", "specifierInfo", "getImportExportSpecifierInfo", "name", "shouldElideDefaultExport", "defaultVarName", "isReExport", "isExportFrom", "foundNonTypeExport", "FlowTransformer", "Transformer", "__name", "rootTransformer", "tokens", "isImportsTransformEnabled", "TokenType", "enumName", "isSymbolEnum", "ContextualKeyword", "hasInitializers", "isMirrored", "elementName", "_optionalChain", "ops", "lastAccessLHS", "value", "i", "op", "fn", "args", "__name", "JEST_GLOBAL_NAME", "HOISTED_METHODS", "JestHoistTransformer", "_JestHoistTransformer", "Transformer", "rootTransformer", "tokens", "nameManager", "importProcessor", "TokenType", "_", "_2", "_3", "_4", "_5", "name", "followsNonHoistedJestCall", "methodName", "hoistedFunctionName", "NumericSeparatorTransformer", "Transformer", "__name", "tokens", "TokenType", "code", "OptionalCatchBindingTransformer", "Transformer", "__name", "tokens", "nameManager", "TokenType", "OptionalChainingNullishTransformer", "Transformer", "__name", "tokens", "nameManager", "TokenType", "token", "chainStart", "param", "arrowStartSnippet", "depth", "i", "index", "ReactDisplayNameTransformer", "Transformer", "__name", "rootTransformer", "tokens", "importProcessor", "options", "startIndex", "newName", "TokenType", "displayName", "IdentifierRole", "pathSegments", "filename", "dotIndex", "baseFilename", "index", "objectStartIndex", "objectContextId", "token", "ReactHotLoaderTransformer", "_ReactHotLoaderTransformer", "Transformer", "__name", "tokens", "filePath", "extractedDefaultExportName", "topLevelNames", "token", "isTopLevelDeclaration", "IdentifierRole", "namesToRegister", "name", "variableName", "uniqueLocalName", "RESERVED_WORDS", "isIdentifier", "name", "IS_IDENTIFIER_START", "i", "IS_IDENTIFIER_CHAR", "__name", "TypeScriptTransformer", "Transformer", "__name", "rootTransformer", "tokens", "isImportsTransformEnabled", "TokenType", "isExport", "enumName", "previousValueCode", "nameStringCode", "variableName", "nameToken", "name", "isIdentifier", "rhsEndIndex", "valueCode", "RootTransformer", "_RootTransformer", "__name", "sucraseContext", "transforms", "enableLegacyBabel5ModuleInterop", "options", "tokenProcessor", "importProcessor", "OptionalChainingNullishTransformer", "NumericSeparatorTransformer", "OptionalCatchBindingTransformer", "JSXTransformer", "ReactDisplayNameTransformer", "reactHotLoaderTransformer", "ReactHotLoaderTransformer", "CJSImportTransformer", "ESMImportTransformer", "FlowTransformer", "TypeScriptTransformer", "JestHoistTransformer", "prefix", "transformer", "v", "suffix", "result", "code", "newlineIndex", "braceDepth", "parenDepth", "TokenType", "name", "classInfo", "getClassInfo", "needsCommaExpression", "className", "contextId", "staticInitializerStatements", "s", "headerInfo", "constructorInsertPos", "constructorInitializerStatements", "fields", "instanceInitializerNames", "rangesToRemove", "fieldIndex", "rangeToRemoveIndex", "classContextId", "needsConstructorInit", "constructorInitializersCode", "argsName", "needsCloseBrace", "nextNonTypeIndex", "ContextualKeyword", "nextToken", "mappings", "prefixLength", "i", "mapping", "import_lines_and_columns", "getTSImportedNames", "tokens", "importedNames", "i", "TokenType", "collectNamesForImport", "__name", "index", "collectNamesForNamedImport", "specifierInfo", "getImportExportSpecifierInfo", "transform", "code", "options", "validateOptions", "sucraseContext", "getSucraseContext", "transformerResult", "RootTransformer", "result", "computeSourceMap", "e", "__name", "getSucraseContext", "code", "options", "isJSXEnabled", "isTypeScriptEnabled", "isFlowEnabled", "disableESTransforms", "file", "parse", "tokens", "scopes", "nameManager", "NameManager", "helperManager", "HelperManager", "tokenProcessor", "TokenProcessor", "enableLegacyTypeScriptModuleInterop", "importProcessor", "CJSImportProcessor", "identifyShadowedGlobals", "getTSImportedNames", "__name", "DEFAULT_EXTENSIONS", "resolveModule", "specifier", "options", "files", "importer", "conditions", "extensions", "resolved", "resolveRelative", "resolvePackage", "__name", "resolveWithExtensions", "joinPaths", "getDirectory", "packageName", "subpath", "parsePackageSpecifier", "packageJson", "pkg", "entrySubpath", "s", "resolvedPath", "fullPath", "normalizeRelativePath", "legacyEntry", "i", "indexPath", "path", "normalized", "normalizePath", "ext", "withExt", "parts", "slashIndex", "filePath", "lastSlash", "base", "relative", "baseParts", "relativeParts", "part", "parseImports", "code", "imports", "parse", "specifiers", "imp", "parseImportsRegex", "match", "bundleWithEsbuild", "entryPoint", "externals", "target", "minify", "sourcemap", "nodejsCompat", "initializeEsbuild", "result", "build", "args", "resolveRelativePath", "e", "normalizedPath", "content", "loader", "getLoader", "output", "modules", "warnings", "w", "resolveDir", "relativePath", "dir", "relParts", "esbuildInitialized", "esbuildInitializePromise", "esbuildWasm", "error", "parseWranglerConfig", "tomlContent", "parseWranglerToml", "jsonContent", "parseWranglerJson", "jsoncContent", "parseWranglerJsonc", "extractWranglerConfig", "parseToml", "stripJsonComments", "config", "main", "date", "flags", "f", "inString", "stringChar", "char", "nextChar", "hasNodejsCompat", "NPM_REGISTRY", "DEFAULT_TIMEOUT_MS", "fetchWithTimeout", "url", "timeoutMs", "controller", "timeoutId", "installDependencies", "dev", "registry", "packageJsonContent", "depsToInstall", "installedPackages", "inProgress", "name", "versionRange", "installPackage", "existing", "installPromise", "metadata", "fetchPackageMetadata", "version", "resolveVersion", "versionMetadata", "packageFiles", "fetchPackageFiles", "deps", "depName", "depVersion", "message", "response", "range", "versions", "tarballUrl", "buffer", "extractTarball", "data", "parseTar", "decompress", "ds", "writer", "reader", "chunks", "totalLength", "done", "value", "offset", "chunk", "textDecoder", "header", "b", "readString", "sizeStr", "typeFlag", "size", "isTextFile", "length", "bytes", "nullIndex", "relevantBytes", "textExtensions", "configFiles", "fileName", "hasDependencies", "transformCode", "sourceMap", "jsxRuntime", "jsxImportSource", "production", "transforms", "isTypeScriptFile", "isJsxFile", "transformOptions", "transform", "isJavaScriptFile", "getOutputPath", "transformAndResolve", "processed", "toProcess", "pathMap", "outputPath", "sourcePath", "transformedCode", "rewriteImports", "mainModule", "importExportRegex", "importerOutputPath", "prefix", "quote", "resolvedOutputPath", "calculateRelativePath", "from", "to", "fromDir", "toDir", "toFile", "fromParts", "toParts", "commonLength", "upCount", "downParts", "detectEntryPoint", "wranglerConfig", "normalizeEntryPath", "dotExport", "exp", "entry", "warningShown", "showExperimentalWarning", "fn", "MIME_TYPES", "getExtension", "lastDot", "inferContentType", "isTextContentType", "contentType", "createWorker", "options", "showExperimentalWarning", "files", "bundle", "externals", "target", "minify", "sourcemap", "registry", "wranglerConfig", "parseWranglerConfig", "nodejsCompat", "hasNodejsCompat", "installWarnings", "hasDependencies", "installResult", "installDependencies", "entryPoint", "detectEntryPoint", "result", "bundleWithEsbuild", "transformAndResolve", "__name", "RUNTIME_CONFIG_ASSET_PATH", "deploymentRuntimeConfigSource", "config", "__name", "MIME_BY_EXT", "DEFAULT_MIME", "DIR_MIME", "basename", "path", "i", "__name", "inferMimeType", "name", "dot", "toFileInfo", "stat", "ms", "globInfos", "fs", "pattern", "normalizedPattern", "paths", "infos", "p", "WranglerConfigError", "__name", "message", "parseWranglerConfig", "files", "jsonContent", "parseJsonConfig", "tomlContent", "parseTomlConfig", "content", "stripped", "raw", "cfg", "dos", "parseDurableObjectsJson", "block", "bindings", "sqliteClasses", "nonSqliteClasses", "migrations", "m", "c", "result", "b", "name", "className", "extractTomlString", "flags", "extractTomlArray", "assetsSection", "extractTomlSection", "pattern", "key", "topLevelOnly", "scope", "match", "s", "jsonResponse", "data", "status", "__name", "DEFAULT_COMPATIBILITY_DATE", "MAX_STATIC_ASSET_BYTES", "STATIC_APP_MAIN", "STATIC_APP_SOURCE", "handleDeployCommand", "ctx", "cmd", "request", "deployBranch", "getDeployment", "listDeployments", "undeployBranch", "e", "normalizeAppRoot", "appRoot", "parts", "part", "readBranchFiles", "branch", "revision", "writeAsset", "log", "commitHash", "entry", "entries", "info", "globInfos", "path", "relativePath", "configFiles", "name", "candidate", "config", "parseWebsiteConfig", "assetPaths", "assetsDirectory", "inferAssetsDirectory", "hasWrangler", "staticWebsiteConfig", "files", "assets", "isAssetPath", "bytes", "asset", "toAssetPath", "inferContentType", "etag", "computeAssetEtag", "contentType", "isTextContentType", "body", "assetDeploymentId", "assetRoot", "bundle", "buildBranchDeployment", "key", "uploaded", "discardAssetDeployment", "cleanupError", "message", "separator", "deploymentId", "mainModule", "serializedModules", "compatDate", "now", "oldAssetDeploymentId", "error", "runtimeConfig", "root", "normalizedRuntimeConfig", "normalizeRuntimeConfig", "deploymentRuntimeConfigSource", "RUNTIME_CONFIG_ASSET_PATH", "result", "buildWebsite", "url", "sourceFiles", "assetConfig", "createWorker", "modules", "serializeModules", "parseWranglerConfig", "WranglerConfigError", "paths", "normalizeAssetsDirectory", "directory", "normalized", "digest", "exactBuffer", "byte", "out", "value", "row", "r", "deployments", "cursor", "page", "keys", "object"]
|
|
7
|
+
}
|