diff --git a/node_modules/entities/LICENSE b/node_modules/entities/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..c464f863ea2b18a15ca3883bc5d98065ed5d039a --- /dev/null +++ b/node_modules/entities/LICENSE @@ -0,0 +1,11 @@ +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/entities/dist/internal/decode-shared.d.ts.map b/node_modules/entities/dist/internal/decode-shared.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5bafb96d3fde93f02dce238f79e8f90fab7fad1a --- /dev/null +++ b/node_modules/entities/dist/internal/decode-shared.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"decode-shared.d.ts","sourceRoot":"","sources":["../../src/internal/decode-shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAYvD"} \ No newline at end of file diff --git a/node_modules/entities/dist/internal/decode-shared.js b/node_modules/entities/dist/internal/decode-shared.js new file mode 100644 index 0000000000000000000000000000000000000000..c89de4b80d819e5b24541b10f76261d1c226194e --- /dev/null +++ b/node_modules/entities/dist/internal/decode-shared.js @@ -0,0 +1,17 @@ +/** + * Shared base64 decode helper for generated decode data. + * Assumes global atob is available. + * @param input Input string to encode or decode. + */ +export function decodeBase64(input) { + const binary = atob(input); + const evenLength = binary.length & ~1; // Round down to even length + const out = new Uint16Array(evenLength / 2); + for (let index = 0, outIndex = 0; index < evenLength; index += 2) { + const lo = binary.charCodeAt(index); + const hi = binary.charCodeAt(index + 1); + out[outIndex++] = lo | (hi << 8); + } + return out; +} +//# sourceMappingURL=decode-shared.js.map \ No newline at end of file diff --git a/node_modules/entities/dist/internal/decode-shared.js.map b/node_modules/entities/dist/internal/decode-shared.js.map new file mode 100644 index 0000000000000000000000000000000000000000..4d9f722338c8cf1b13e6080dbb7e76bb82a6cdaa --- /dev/null +++ b/node_modules/entities/dist/internal/decode-shared.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decode-shared.js","sourceRoot":"","sources":["../../src/internal/decode-shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,MAAM,MAAM,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B;IACnE,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAE5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC/D,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/dist/internal/encode-shared.d.ts b/node_modules/entities/dist/internal/encode-shared.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..8b51f68e826817449eb554891c56906d29bdc039 --- /dev/null +++ b/node_modules/entities/dist/internal/encode-shared.d.ts @@ -0,0 +1,33 @@ +/** + * A node inside the encoding trie used by `encode.ts`. + * + * There are two physical shapes to minimize allocations and lookup cost: + * + * 1. Leaf node (string) + * - A plain string (already in the form `"&name;"`). + * - Represents a terminal match with no children. + * + * 2. Branch / value node (object) + */ +export type EncodeTrieNode = string | { + /** + * Entity value for the current code point sequence (wrapped: `&...;`). + * Present when the path to this node itself is a valid named entity. + */ + value: string | undefined; + /** If a number, the next code unit of the only next character. */ + next: number | Map; + /** If next is a number, `nextValue` contains the entity value. */ + nextValue?: string; +}; +/** + * Parse a compact encode trie string into a Map structure used for encoding. + * + * Format per entry (ascending code points using delta encoding): + * [&name;][{}] -- diff omitted when 0 + * Where diff = currentKey - previousKey - 1 (first entry stores absolute key). + * `&name;` is the entity value (already wrapped); a following `{` denotes children. + * @param serialized Serialized text fragment to encode. + */ +export declare function parseEncodeTrie(serialized: string): Map; +//# sourceMappingURL=encode-shared.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/dist/internal/encode-shared.d.ts.map b/node_modules/entities/dist/internal/encode-shared.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..e36064e98874936c6c8665e5c2b02e90fbe1e33e --- /dev/null +++ b/node_modules/entities/dist/internal/encode-shared.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encode-shared.d.ts","sourceRoot":"","sources":["../../src/internal/encode-shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GACpB,MAAM,GACN;IACI;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,kEAAkE;IAClE,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAER;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC3B,UAAU,EAAE,MAAM,GACnB,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAsF7B"} \ No newline at end of file diff --git a/node_modules/entities/dist/internal/encode-shared.js b/node_modules/entities/dist/internal/encode-shared.js new file mode 100644 index 0000000000000000000000000000000000000000..dd4f1a299615b893c5beb22bb8327428a230b88f --- /dev/null +++ b/node_modules/entities/dist/internal/encode-shared.js @@ -0,0 +1,93 @@ +/** + * Parse a compact encode trie string into a Map structure used for encoding. + * + * Format per entry (ascending code points using delta encoding): + * [&name;][{}] -- diff omitted when 0 + * Where diff = currentKey - previousKey - 1 (first entry stores absolute key). + * `&name;` is the entity value (already wrapped); a following `{` denotes children. + * @param serialized Serialized text fragment to encode. + */ +export function parseEncodeTrie(serialized) { + const top = new Map(); + const totalLength = serialized.length; + let cursor = 0; + let lastTopKey = -1; + function readDiff() { + const start = cursor; + while (cursor < totalLength) { + const char = serialized.charAt(cursor); + if ((char < "0" || char > "9") && (char < "a" || char > "z")) { + break; + } + cursor++; + } + if (cursor === start) + return 0; + return Number.parseInt(serialized.slice(start, cursor), 36); + } + function readEntity() { + if (serialized[cursor] !== "&") { + throw new Error(`Child entry missing value near index ${cursor}`); + } + // Cursor currently points at '&' + const start = cursor; + const end = serialized.indexOf(";", cursor + 1); + if (end === -1) { + throw new Error(`Unterminated entity starting at index ${start}`); + } + cursor = end + 1; // Move past ';' + return serialized.slice(start, cursor); // Includes & ... ; + } + while (cursor < totalLength) { + const keyDiff = readDiff(); + const key = lastTopKey === -1 ? keyDiff : lastTopKey + keyDiff + 1; + let value; + if (serialized[cursor] === "&") + value = readEntity(); + if (serialized[cursor] === "{") { + cursor++; // Skip '{' + // Parse first child + let diff = readDiff(); + let childKey = diff; // First key (lastChildKey = -1) + const firstValue = readEntity(); + if (serialized[cursor] === "{") { + throw new Error("Unexpected nested '{' beyond depth 2"); + } + // If end of block -> single child optimization + if (serialized[cursor] === "}") { + top.set(key, { value, next: childKey, nextValue: firstValue }); + cursor++; // Skip '}' + } + else { + const childMap = new Map([ + [childKey, firstValue], + ]); + let lastChildKey = childKey; + while (cursor < totalLength && serialized[cursor] !== "}") { + diff = readDiff(); + childKey = lastChildKey + diff + 1; + const childValue = readEntity(); + if (serialized[cursor] === "{") { + throw new Error("Unexpected nested '{' beyond depth 2"); + } + childMap.set(childKey, childValue); + lastChildKey = childKey; + } + if (serialized[cursor] !== "}") { + throw new Error("Unterminated child block"); + } + cursor++; // Skip '}' + top.set(key, { value, next: childMap }); + } + } + else if (value === undefined) { + throw new Error(`Malformed encode trie: missing value at index ${cursor}`); + } + else { + top.set(key, value); + } + lastTopKey = key; + } + return top; +} +//# sourceMappingURL=encode-shared.js.map \ No newline at end of file diff --git a/node_modules/entities/dist/internal/encode-shared.js.map b/node_modules/entities/dist/internal/encode-shared.js.map new file mode 100644 index 0000000000000000000000000000000000000000..7cee07447be1375892c31fee6138184a96b77e58 --- /dev/null +++ b/node_modules/entities/dist/internal/encode-shared.js.map @@ -0,0 +1 @@ +{"version":3,"file":"encode-shared.js","sourceRoot":"","sources":["../../src/internal/encode-shared.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/entities/package.json b/node_modules/entities/package.json new file mode 100644 index 0000000000000000000000000000000000000000..a33ec6536c4615379da07bd3f8be5f2c330f689e --- /dev/null +++ b/node_modules/entities/package.json @@ -0,0 +1,83 @@ +{ + "name": "entities", + "version": "8.0.0", + "description": "Encode & decode XML and HTML entities with ease & speed", + "keywords": [ + "html entities", + "entity decoder", + "entity encoding", + "html decoding", + "html encoding", + "xml decoding", + "xml encoding" + ], + "repository": { + "type": "git", + "url": "https://github.com/fb55/entities.git" + }, + "funding": "https://github.com/fb55/entities?sponsor=1", + "license": "BSD-2-Clause", + "author": "Felix Boehm ", + "sideEffects": false, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./decode": { + "types": "./dist/decode.d.ts", + "default": "./dist/decode.js" + }, + "./escape": { + "types": "./dist/escape.d.ts", + "default": "./dist/escape.js" + } + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist", + "src", + "!**/*.spec.ts" + ], + "scripts": { + "benchmark": "node --import=tsx scripts/benchmark.ts", + "build": "tsc", + "build:docs": "typedoc --hideGenerator src/index.ts", + "build:encode-trie": "node --import=tsx scripts/write-encode-map.ts", + "build:trie": "node --import=tsx scripts/write-decode-map.ts", + "format": "npm run format:es && npm run format:biome", + "format:biome": "biome check --fix .", + "format:es": "npm run lint:es -- --fix", + "lint": "npm run lint:es && npm run lint:ts && npm run lint:biome", + "lint:biome": "biome check .", + "lint:es": "eslint .", + "lint:ts": "tsc --noEmit", + "prepublishOnly": "npm run build", + "test": "npm run test:vi && npm run lint", + "test:vi": "vitest run" + }, + "devDependencies": { + "@biomejs/biome": "^2.4.7", + "@eslint/compat": "^2.0.3", + "@feedic/eslint-config": "^0.3.1", + "@types/he": "^1.2.3", + "@types/node": "^25.5.0", + "eslint": "^10.0.3", + "eslint-config-biome": "^2.1.3", + "globals": "^17.4.0", + "he": "^1.2.0", + "html-entities": "^2.6.0", + "parse-entities": "^4.0.2", + "tinybench": "^6.0.0", + "tsx": "^4.21.0", + "typedoc": "^0.28.17", + "typescript": "^5.9.3", + "typescript-eslint": "^8.57.1", + "vitest": "^4.0.17" + }, + "engines": { + "node": ">=20.19.0" + } +} diff --git a/node_modules/entities/readme.md b/node_modules/entities/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..77161e6097d2fa051bb535f6a0e691289c112d67 --- /dev/null +++ b/node_modules/entities/readme.md @@ -0,0 +1,131 @@ +# entities [![NPM version](https://img.shields.io/npm/v/entities.svg)](https://npmjs.org/package/entities) [![Downloads](https://img.shields.io/npm/dm/entities.svg)](https://npmjs.org/package/entities) [![Node.js CI](https://github.com/fb55/entities/actions/workflows/nodejs-test.yml/badge.svg)](https://github.com/fb55/entities/actions/workflows/nodejs-test.yml) + +Encode & decode HTML & XML entities with ease & speed. + +## Features + +- 😇 Tried and true: `entities` is used by many popular libraries; eg. + [`htmlparser2`](https://github.com/fb55/htmlparser2), the official + [AWS SDK](https://github.com/aws/aws-sdk-js-v3) and + [`commonmark`](https://github.com/commonmark/commonmark.js) use it to process + HTML entities. +- ⚡️ Fast: `entities` is the fastest library for decoding HTML entities (as of + September 2025); see [performance](#performance). +- 🎛 Configurable: Get an output tailored for your needs. You are fine with + UTF8? That'll save you some bytes. Prefer to only have ASCII characters? We + can do that as well! + +## How to… + +### …install `entities` + + npm install entities + +### …use `entities` + +```javascript +import * as entities from "entities"; + +// Encoding +entities.escapeUTF8("& ü"); // "&#38; ü" +entities.encodeXML("& ü"); // "&#38; ü" +entities.encodeHTML("& ü"); // "&#38; ü" + +// Decoding +entities.decodeXML("asdf & ÿ ü '"); // "asdf & ÿ ü '" +entities.decodeHTML("asdf & ÿ ü '"); // "asdf & ÿ ü '" +``` + +## Performance + +Benchmarked in September 2025 with Node v24.6.0 on Apple M2 using `tinybench`. +Higher ops/s is better; `avg (μs)` is the mean time per operation. +See `scripts/benchmark.ts` to reproduce. + +### Decoding + +| Library | Version | ops/s | avg (μs) | ±% | slower | +| -------------- | ------- | --------- | -------- | ---- | ------ | +| entities | 7.0.0 | 5,838,416 | 175.57 | 0.06 | — | +| html-entities | 2.6.0 | 2,919,637 | 347.77 | 0.33 | 50.0% | +| he | 1.2.0 | 2,318,438 | 446.48 | 0.70 | 60.3% | +| parse-entities | 4.0.2 | 852,855 | 1,199.51 | 0.36 | 85.4% | + +### Encoding + +| Library | Version | ops/s | avg (μs) | ±% | slower | +| -------------- | ------- | --------- | -------- | ---- | ------ | +| entities | 7.0.0 | 2,770,115 | 368.09 | 0.11 | — | +| html-entities | 2.6.0 | 1,491,963 | 679.96 | 0.58 | 46.2% | +| he | 1.2.0 | 481,278 | 2,118.25 | 0.61 | 82.6% | + +### Escaping + +| Library | Version | ops/s | avg (μs) | ±% | slower | +| -------------- | ------- | --------- | -------- | ---- | ------ | +| entities | 7.0.0 | 4,616,468 | 223.84 | 0.17 | — | +| he | 1.2.0 | 3,659,301 | 280.76 | 0.58 | 20.7% | +| html-entities | 2.6.0 | 3,555,301 | 296.63 | 0.84 | 23.0% | + +Note: Micro-benchmarks may vary across machines and Node versions. + +--- + +## FAQ + +> What methods should I actually use to encode my documents? + +If your target supports UTF-8, the `escapeUTF8` method is going to be your best +choice. Otherwise, use either `encodeHTML` or `encodeXML` based on whether +you're dealing with an HTML or an XML document. + +You can have a look at the options for the `encode` and `decode` methods to see +everything you can configure. + +> When should I use strict decoding? + +When strict decoding, entities not terminated with a semicolon will be ignored. +This is helpful for decoding entities in legacy environments. + +> Why should I use `entities` instead of alternative modules? + +As of September 2025, `entities` is faster than other modules. Still, this is +not a differentiated space and other modules can catch up. + +**More importantly**, you might already have `entities` in your dependency graph +(as a dependency of eg. `cheerio`, or `htmlparser2`), and including it directly +might not even increase your bundle size. The same is true for other entity +libraries, so have a look through your `node_modules` directory! + +> Does `entities` support tree shaking? + +Yes! Note that for best results, you should not use the `encode` and `decode` +functions, as they wrap around a number of other functions, all of which will +remain in the bundle. Instead, use the functions that you need directly. + +--- + +## Acknowledgements + +This library wouldn't be possible without the work of these individuals. Thanks +to + +- [@mathiasbynens](https://github.com/mathiasbynens) for his explanations about + character encodings, and his library `he`, which was one of the inspirations + for `entities` +- [@inikulin](https://github.com/inikulin) for his work on optimized tries for + decoding HTML entities for the `parse5` project +- [@mdevils](https://github.com/mdevils) for taking on the challenge of + producing a quick entity library with his `html-entities` library. `entities` + would be quite a bit slower if there wasn't any competition. Right now + `entities` is on top, but we'll see how long that lasts! + +--- + +License: BSD-2-Clause + +## Security contact information + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). Tidelift will +coordinate the fix and disclosure. diff --git a/node_modules/entities/src/decode-codepoint.ts b/node_modules/entities/src/decode-codepoint.ts new file mode 100644 index 0000000000000000000000000000000000000000..c8337c171662f647d86147a84fe534bdf3083c8f --- /dev/null +++ b/node_modules/entities/src/decode-codepoint.ts @@ -0,0 +1,50 @@ +// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134 + +const decodeMap = new Map([ + [0, 65_533], + // C1 Unicode control character reference replacements + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376], +]); + +/** + * Replace the given code point with a replacement character if it is a + * surrogate or is outside the valid range. Otherwise return the code + * point unchanged. + * @param codePoint Unicode code point to convert. + */ +export function replaceCodePoint(codePoint: number): number { + if ( + (codePoint >= 0xd8_00 && codePoint <= 0xdf_ff) || + codePoint > 0x10_ff_ff + ) { + return 0xff_fd; + } + + return decodeMap.get(codePoint) ?? codePoint; +} diff --git a/node_modules/entities/src/decode.ts b/node_modules/entities/src/decode.ts new file mode 100644 index 0000000000000000000000000000000000000000..ce46ab397b9e3ffae743b8d836c6c03bb004f755 --- /dev/null +++ b/node_modules/entities/src/decode.ts @@ -0,0 +1,671 @@ +import { replaceCodePoint } from "./decode-codepoint.js"; +import { htmlDecodeTree } from "./generated/decode-data-html.js"; +import { xmlDecodeTree } from "./generated/decode-data-xml.js"; +import { BinTrieFlags } from "./internal/bin-trie-flags.js"; + +const enum CharCodes { + NUM = 35, // "#" + SEMI = 59, // ";" + EQUALS = 61, // "=" + ZERO = 48, // "0" + NINE = 57, // "9" + LOWER_A = 97, // "a" + LOWER_F = 102, // "f" + LOWER_X = 120, // "x" + LOWER_Z = 122, // "z" + UPPER_A = 65, // "A" + UPPER_F = 70, // "F" + UPPER_Z = 90, // "Z" +} + +/** Bit that needs to be set to convert an upper case ASCII character to lower case */ +const TO_LOWER_BIT = 0b10_0000; + +function isNumber(code: number): boolean { + return code >= CharCodes.ZERO && code <= CharCodes.NINE; +} + +function isHexadecimalCharacter(code: number): boolean { + return ( + (code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F) + ); +} + +function isAsciiAlphaNumeric(code: number): boolean { + return ( + (code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) || + isNumber(code) + ); +} + +/** + * Checks if the given character is a valid end character for an entity in an attribute. + * + * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + * @param code Code point to decode. + */ +function isEntityInAttributeInvalidEnd(code: number): boolean { + return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); +} + +const enum EntityDecoderState { + EntityStart, + NumericStart, + NumericDecimal, + NumericHex, + NamedEntity, +} + +/** + * Decoding mode for named entities. + */ +export enum DecodingMode { + /** Entities in text nodes that can end with any character. */ + Legacy = 0, + /** Only allow entities terminated with a semicolon. */ + Strict = 1, + /** Entities in attributes have limitations on ending characters. */ + Attribute = 2, +} + +/** + * Producers for character reference errors as defined in the HTML spec. + */ +export interface EntityErrorProducer { + missingSemicolonAfterCharacterReference(): void; + absenceOfDigitsInNumericCharacterReference( + consumedCharacters: number, + ): void; + validateNumericCharacterReference(code: number): void; +} + +/** + * Token decoder with support of writing partial entities. + */ +export class EntityDecoder { + constructor( + /** The tree used to decode entities. */ + // biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive + private readonly decodeTree: Uint16Array, + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + private readonly emitCodePoint: (cp: number, consumed: number) => void, + /** An object that is used to produce errors. */ + private readonly errors?: EntityErrorProducer | undefined, + ) {} + + /** The current state of the decoder. */ + private state = EntityDecoderState.EntityStart; + /** Characters that were consumed while parsing an entity. */ + private consumed = 1; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + private result = 0; + + /** The current index in the decode tree. */ + private treeIndex = 0; + /** The number of characters that were consumed in excess. */ + private excess = 1; + /** The mode in which the decoder is operating. */ + private decodeMode = DecodingMode.Strict; + /** The number of characters that have been consumed in the current run. */ + private runConsumed = 0; + + /** + * Resets the instance to make it reusable. + * @param decodeMode Entity decoding mode to use. + */ + startEntity(decodeMode: DecodingMode): void { + this.decodeMode = decodeMode; + this.state = EntityDecoderState.EntityStart; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.consumed = 1; + this.runConsumed = 0; + } + + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + write(input: string, offset: number): number { + switch (this.state) { + case EntityDecoderState.EntityStart: { + if (input.charCodeAt(offset) === CharCodes.NUM) { + this.state = EntityDecoderState.NumericStart; + this.consumed += 1; + return this.stateNumericStart(input, offset + 1); + } + this.state = EntityDecoderState.NamedEntity; + return this.stateNamedEntity(input, offset); + } + + case EntityDecoderState.NumericStart: { + return this.stateNumericStart(input, offset); + } + + case EntityDecoderState.NumericDecimal: { + return this.stateNumericDecimal(input, offset); + } + + case EntityDecoderState.NumericHex: { + return this.stateNumericHex(input, offset); + } + + case EntityDecoderState.NamedEntity: { + return this.stateNamedEntity(input, offset); + } + } + } + + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNumericStart(input: string, offset: number): number { + if (offset >= input.length) { + return -1; + } + + if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { + this.state = EntityDecoderState.NumericHex; + this.consumed += 1; + return this.stateNumericHex(input, offset + 1); + } + + this.state = EntityDecoderState.NumericDecimal; + return this.stateNumericDecimal(input, offset); + } + + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNumericHex(input: string, offset: number): number { + while (offset < input.length) { + const char = input.charCodeAt(offset); + if (isNumber(char) || isHexadecimalCharacter(char)) { + // Convert hex digit to value (0-15); 'a'/'A' -> 10. + const digit = + char <= CharCodes.NINE + ? char - CharCodes.ZERO + : (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10; + this.result = this.result * 16 + digit; + this.consumed++; + offset++; + } else { + return this.emitNumericEntity(char, 3); + } + } + return -1; // Incomplete entity + } + + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNumericDecimal(input: string, offset: number): number { + while (offset < input.length) { + const char = input.charCodeAt(offset); + if (isNumber(char)) { + this.result = this.result * 10 + (char - CharCodes.ZERO); + this.consumed++; + offset++; + } else { + return this.emitNumericEntity(char, 2); + } + } + return -1; // Incomplete entity + } + + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + private emitNumericEntity(lastCp: number, expectedLength: number): number { + // Ensure we consumed at least one digit. + if (this.consumed <= expectedLength) { + this.errors?.absenceOfDigitsInNumericCharacterReference( + this.consumed, + ); + return 0; + } + + // Figure out if this is a legit end of the entity + if (lastCp === CharCodes.SEMI) { + this.consumed += 1; + } else if (this.decodeMode === DecodingMode.Strict) { + return 0; + } + + this.emitCodePoint(replaceCodePoint(this.result), this.consumed); + + if (this.errors) { + if (lastCp !== CharCodes.SEMI) { + this.errors.missingSemicolonAfterCharacterReference(); + } + + this.errors.validateNumericCharacterReference(this.result); + } + + return this.consumed; + } + + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNamedEntity(input: string, offset: number): number { + const { decodeTree } = this; + let current = decodeTree[this.treeIndex]; + // The length is the number of bytes of the value, including the current byte. + let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + + while (offset < input.length) { + // Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set. + if (valueLength === 0 && (current & BinTrieFlags.FLAG13) !== 0) { + const runLength = + (current & BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */ + + // If we are starting a run, check the first char. + if (this.runConsumed === 0) { + const firstChar = current & BinTrieFlags.JUMP_TABLE; + if (input.charCodeAt(offset) !== firstChar) { + return this.result === 0 + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + offset++; + this.excess++; + this.runConsumed++; + } + + // Check remaining characters in the run. + while (this.runConsumed < runLength) { + if (offset >= input.length) { + return -1; + } + + const charIndexInPacked = this.runConsumed - 1; + const packedWord = + decodeTree[ + this.treeIndex + 1 + (charIndexInPacked >> 1) + ]; + const expectedChar = + charIndexInPacked % 2 === 0 + ? packedWord & 0xff + : (packedWord >> 8) & 0xff; + + if (input.charCodeAt(offset) !== expectedChar) { + this.runConsumed = 0; + return this.result === 0 + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + offset++; + this.excess++; + this.runConsumed++; + } + + this.runConsumed = 0; + this.treeIndex += 1 + (runLength >> 1); + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + } + + if (offset >= input.length) break; + + const char = input.charCodeAt(offset); + + /* + * Implicit semicolon handling for nodes that require a semicolon but + * don't have an explicit ';' branch stored in the trie. If we have + * a value on the current node, it requires a semicolon, and the + * current input character is a semicolon, emit the entity using the + * current node (without descending further). + */ + if ( + char === CharCodes.SEMI && + valueLength !== 0 && + (current & BinTrieFlags.FLAG13) !== 0 + ) { + return this.emitNamedEntityData( + this.treeIndex, + valueLength, + this.consumed + this.excess, + ); + } + + this.treeIndex = determineBranch( + decodeTree, + current, + this.treeIndex + Math.max(1, valueLength), + char, + ); + + if (this.treeIndex < 0) { + return this.result === 0 || + // If we are parsing an attribute + (this.decodeMode === DecodingMode.Attribute && + // We shouldn't have consumed any characters after the entity, + (valueLength === 0 || + // And there should be no invalid characters. + isEntityInAttributeInvalidEnd(char))) + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + + // If the branch is a value, store it and continue + if (valueLength !== 0) { + // If the entity is terminated by a semicolon, we are done. + if (char === CharCodes.SEMI) { + return this.emitNamedEntityData( + this.treeIndex, + valueLength, + this.consumed + this.excess, + ); + } + + // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it. + if ( + this.decodeMode !== DecodingMode.Strict && + (current & BinTrieFlags.FLAG13) === 0 + ) { + this.result = this.treeIndex; + this.consumed += this.excess; + this.excess = 0; + } + } + // Increment offset & excess for next iteration + offset++; + this.excess++; + } + + return -1; + } + + /** + * Emit a named entity that was not terminated with a semicolon. + * @returns The number of characters consumed. + */ + private emitNotTerminatedNamedEntity(): number { + const { result, decodeTree } = this; + + const valueLength = + (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; + + this.emitNamedEntityData(result, valueLength, this.consumed); + this.errors?.missingSemicolonAfterCharacterReference(); + + return this.consumed; + } + + /** + * Emit a named entity. + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * @returns The number of characters consumed. + */ + private emitNamedEntityData( + result: number, + valueLength: number, + consumed: number, + ): number { + const { decodeTree } = this; + + this.emitCodePoint( + valueLength === 1 + ? decodeTree[result] & + ~(BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13) + : decodeTree[result + 1], + consumed, + ); + if (valueLength === 3) { + // For multi-byte values, we need to emit the second byte. + this.emitCodePoint(decodeTree[result + 2], consumed); + } + + return consumed; + } + + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * @returns The number of characters consumed. + */ + end(): number { + switch (this.state) { + case EntityDecoderState.NamedEntity: { + // Emit a named entity if we have one. + return this.result !== 0 && + (this.decodeMode !== DecodingMode.Attribute || + this.result === this.treeIndex) + ? this.emitNotTerminatedNamedEntity() + : 0; + } + // Otherwise, emit a numeric entity if we have one. + case EntityDecoderState.NumericDecimal: { + return this.emitNumericEntity(0, 2); + } + case EntityDecoderState.NumericHex: { + return this.emitNumericEntity(0, 3); + } + case EntityDecoderState.NumericStart: { + this.errors?.absenceOfDigitsInNumericCharacterReference( + this.consumed, + ); + return 0; + } + case EntityDecoderState.EntityStart: { + // Return 0 if we have no entity. + return 0; + } + } + } +} + +/** + * Creates a function that decodes entities in a string. + * @param decodeTree The decode tree. + * @returns A function that decodes entities in a string. + */ +function getDecoder(decodeTree: Uint16Array) { + let returnValue = ""; + const decoder = new EntityDecoder( + decodeTree, + (data) => (returnValue += String.fromCodePoint(data)), + ); + + return function decodeWithTrie( + input: string, + decodeMode: DecodingMode, + ): string { + let lastIndex = 0; + let offset = 0; + + while ((offset = input.indexOf("&", offset)) >= 0) { + returnValue += input.slice(lastIndex, offset); + + decoder.startEntity(decodeMode); + + const length = decoder.write( + input, + // Skip the "&" + offset + 1, + ); + + if (length < 0) { + lastIndex = offset + decoder.end(); + break; + } + + lastIndex = offset + length; + // If `length` is 0, skip the current `&` and continue. + offset = length === 0 ? lastIndex + 1 : lastIndex; + } + + const result = returnValue + input.slice(lastIndex); + + // Make sure we don't keep a reference to the final string. + returnValue = ""; + + return result; + }; +} + +/** + * Determines the branch of the current node that is taken given the current + * character. This function is used to traverse the trie. + * @param decodeTree The trie. + * @param current The current node. + * @param nodeIndex Index immediately after the current node header. + * @param char The current character. + * @returns The index of the next node, or -1 if no branch is taken. + */ +export function determineBranch( + decodeTree: Uint16Array, + current: number, + nodeIndex: number, + char: number, +): number { + const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + const jumpOffset = current & BinTrieFlags.JUMP_TABLE; + + // Case 1: Single branch encoded in jump offset + if (branchCount === 0) { + return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1; + } + + // Case 2: Multiple branches encoded in jump table + if (jumpOffset) { + const value = char - jumpOffset; + + return value < 0 || value >= branchCount + ? -1 + : decodeTree[nodeIndex + value] - 1; + } + + // Case 3: Multiple branches encoded in packed dictionary (two keys per uint16) + const packedKeySlots = (branchCount + 1) >> 1; + + /* + * Treat packed keys as a virtual sorted array of length `branchCount`. + * Key(i) = low byte for even i, high byte for odd i in slot i>>1. + */ + let lo = 0; + let hi = branchCount - 1; + + while (lo <= hi) { + const mid = (lo + hi) >>> 1; + const slot = mid >> 1; + const packed = decodeTree[nodeIndex + slot]; + const midKey = (packed >> ((mid & 1) * 8)) & 0xff; + + if (midKey < char) { + lo = mid + 1; + } else if (midKey > char) { + hi = mid - 1; + } else { + return decodeTree[nodeIndex + packedKeySlots + mid]; + } + } + + return -1; +} + +const htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree); +const xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree); + +/** + * Decodes an HTML string. + * @param htmlString The string to decode. + * @param mode The decoding mode. + * @returns The decoded string. + */ +export function decodeHTML( + htmlString: string, + mode: DecodingMode = DecodingMode.Legacy, +): string { + return htmlDecoder(htmlString, mode); +} + +/** + * Decodes an HTML string in an attribute. + * @param htmlAttribute The string to decode. + * @returns The decoded string. + */ +export function decodeHTMLAttribute(htmlAttribute: string): string { + return htmlDecoder(htmlAttribute, DecodingMode.Attribute); +} + +/** + * Decodes an HTML string, requiring all entities to be terminated by a semicolon. + * @param htmlString The string to decode. + * @returns The decoded string. + */ +export function decodeHTMLStrict(htmlString: string): string { + return htmlDecoder(htmlString, DecodingMode.Strict); +} + +/** + * Decodes an XML string, requiring all entities to be terminated by a semicolon. + * @param xmlString The string to decode. + * @returns The decoded string. + */ +export function decodeXML(xmlString: string): string { + return xmlDecoder(xmlString, DecodingMode.Strict); +} + +export { replaceCodePoint } from "./decode-codepoint.js"; +// Re-export for use by eg. htmlparser2 +export { htmlDecodeTree } from "./generated/decode-data-html.js"; +export { xmlDecodeTree } from "./generated/decode-data-xml.js"; diff --git a/node_modules/entities/src/encode.ts b/node_modules/entities/src/encode.ts new file mode 100644 index 0000000000000000000000000000000000000000..717c79f968702b9a65712ec194ed3e87f03c95a6 --- /dev/null +++ b/node_modules/entities/src/encode.ts @@ -0,0 +1,95 @@ +import { getCodePoint, XML_BITSET_VALUE } from "./escape.js"; +import { htmlTrie } from "./generated/encode-html.js"; + +/** + * We store the characters to consider as a compact bitset for fast lookups. + */ +const HTML_BITSET = /* #__PURE__ */ new Uint32Array([ + 0x16_00, // Bits for 09,0A,0C + 0xfc_00_ff_fe, // 32..63 -> 21-2D (minus space), 2E,2F,3A-3F + 0xf8_00_00_01, // 64..95 -> 40, 5B-5F + 0x38_00_00_01, // 96..127-> 60, 7B-7D +]); + +const XML_BITSET = /* #__PURE__ */ new Uint32Array([0, XML_BITSET_VALUE, 0, 0]); + +/** + * Encodes all characters in the input using HTML entities. This includes + * characters that are valid ASCII characters in HTML documents, such as `#`. + * + * To get a more compact output, consider using the `encodeNonAsciiHTML` + * function, which will only encode characters that are not valid in HTML + * documents, as well as non-ASCII characters. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + * @param input Input string to encode or decode. + */ +export function encodeHTML(input: string): string { + return encodeHTMLTrieRe(HTML_BITSET, input); +} +/** + * Encodes all non-ASCII characters, as well as characters not valid in HTML + * documents using HTML entities. This function will not encode characters that + * are valid in HTML documents, such as `#`. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + * @param input Input string to encode or decode. + */ +export function encodeNonAsciiHTML(input: string): string { + return encodeHTMLTrieRe(XML_BITSET, input); +} + +function encodeHTMLTrieRe(bitset: Uint32Array, input: string): string { + let out: string | undefined; + let last = 0; // Start of the next untouched slice. + const { length } = input; + + for (let index = 0; index < length; index++) { + const char = input.charCodeAt(index); + // Skip ASCII characters that don't need encoding + if (char < 0x80 && !((bitset[char >>> 5] >>> char) & 1)) { + continue; + } + + if (out === undefined) out = input.substring(0, index); + else if (last !== index) out += input.substring(last, index); + + let node = htmlTrie.get(char); + + if (typeof node === "object") { + if (index + 1 < length) { + const nextChar = input.charCodeAt(index + 1); + const value = + typeof node.next === "number" + ? node.next === nextChar + ? node.nextValue + : undefined + : node.next.get(nextChar); + + if (value !== undefined) { + out += value; + index++; + last = index + 1; + continue; + } + } + node = node.value; + } + + if (node === undefined) { + const cp = getCodePoint(input, index); + out += `&#x${cp.toString(16)};`; + if (cp !== char) index++; + last = index + 1; + } else { + out += node; + last = index + 1; + } + } + + if (out === undefined) return input; + if (last < length) out += input.substr(last); + return out; +} diff --git a/node_modules/entities/src/escape.ts b/node_modules/entities/src/escape.ts new file mode 100644 index 0000000000000000000000000000000000000000..f7f68bca2244445981a322a5c87013256e8b39fc --- /dev/null +++ b/node_modules/entities/src/escape.ts @@ -0,0 +1,160 @@ +const xmlCodeMap = new Map([ + [34, """], + [38, "&"], + [39, "'"], + [60, "<"], + [62, ">"], +]); + +// For compatibility with node < 4, we wrap `codePointAt` +/** + * Read a code point at a given index. + * @param input Input string to encode or decode. + * @param index Current read position in the input string. + */ +export const getCodePoint: (c: string, index: number) => number = + typeof String.prototype.codePointAt === "function" + ? (input: string, index: number): number => input.codePointAt(index)! + : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + (c: string, index: number): number => + (c.charCodeAt(index) & 0xfc_00) === 0xd8_00 + ? (c.charCodeAt(index) - 0xd8_00) * 0x4_00 + + c.charCodeAt(index + 1) - + 0xdc_00 + + 0x1_00_00 + : c.charCodeAt(index); + +/** + * Bitset for ASCII characters that need to be escaped in XML. + */ +export const XML_BITSET_VALUE = 0x50_00_00_c4; // 32..63 -> 34 ("),38 (&),39 ('),60 (<),62 (>) + +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using XML entities. Uses a fast bitset scan instead of RegExp. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + * @param input Input string to encode or decode. + */ +export function encodeXML(input: string): string { + let out: string | undefined; + let last = 0; + const { length } = input; + + for (let index = 0; index < length; index++) { + const char = input.charCodeAt(index); + + // Check for ASCII chars that don't need escaping + if ( + char < 0x80 && + (((XML_BITSET_VALUE >>> char) & 1) === 0 || char >= 64 || char < 32) + ) { + continue; + } + + if (out === undefined) out = input.substring(0, index); + else if (last !== index) out += input.substring(last, index); + + if (char < 64) { + // Known replacement + out += xmlCodeMap.get(char)!; + last = index + 1; + continue; + } + + // Non-ASCII: encode as numeric entity (handle surrogate pair) + const cp = getCodePoint(input, index); + out += `&#x${cp.toString(16)};`; + if (cp !== char) index++; // Skip trailing surrogate + last = index + 1; + } + + if (out === undefined) return input; + if (last < length) out += input.substr(last); + return out; +} + +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using numeric hexadecimal reference (eg. `ü`). + * + * Have a look at `escapeUTF8` if you want a more concise output at the expense + * of reduced transportability. + * @param data String to escape. + */ +export const escape: typeof encodeXML = encodeXML; + +/** + * Creates a function that escapes all characters matched by the given regular + * expression using the given map of characters to escape to their entities. + * @param regex Regular expression to match characters to escape. + * @param map Map of characters to escape to their entities. + * @returns Function that escapes all characters matched by the given regular + * expression using the given map of characters to escape to their entities. + */ +function getEscaper( + regex: RegExp, + map: Map, +): (data: string) => string { + return function escape(data: string): string { + let match: RegExpExecArray | null; + let lastIndex = 0; + let result = ""; + + while ((match = regex.exec(data))) { + if (lastIndex !== match.index) { + result += data.substring(lastIndex, match.index); + } + + // We know that this character will be in the map. + result += map.get(match[0].charCodeAt(0))!; + + // Every match will be of length 1 + lastIndex = match.index + 1; + } + + return result + data.substring(lastIndex); + }; +} + +/** + * Encodes all characters not valid in XML documents using XML entities. + * + * Note that the output will be character-set dependent. + * @param data String to escape. + */ +export const escapeUTF8: (data: string) => string = /* #__PURE__ */ getEscaper( + /["&'<>]/g, + xmlCodeMap, +); + +/** + * Encodes all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * @param data String to escape. + */ +export const escapeAttribute: (data: string) => string = + /* #__PURE__ */ getEscaper( + /["&\u00A0]/g, + new Map([ + [34, """], + [38, "&"], + [160, " "], + ]), + ); + +/** + * Encodes all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * @param data String to escape. + */ +export const escapeText: (data: string) => string = /* #__PURE__ */ getEscaper( + /[&<>\u00A0]/g, + new Map([ + [38, "&"], + [60, "<"], + [62, ">"], + [160, " "], + ]), +); diff --git a/node_modules/entities/src/generated/decode-data-html.ts b/node_modules/entities/src/generated/decode-data-html.ts new file mode 100644 index 0000000000000000000000000000000000000000..83d0199e70c0e842b20dfe921138e0f841845207 --- /dev/null +++ b/node_modules/entities/src/generated/decode-data-html.ts @@ -0,0 +1,7 @@ +// Generated using scripts/write-decode-map.ts + +import { decodeBase64 } from "../internal/decode-shared.js"; +/** Packed HTML decode trie data. */ +export const htmlDecodeTree: Uint16Array = /* #__PURE__ */ decodeBase64( + "QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg", +); diff --git a/node_modules/entities/src/generated/decode-data-xml.ts b/node_modules/entities/src/generated/decode-data-xml.ts new file mode 100644 index 0000000000000000000000000000000000000000..519e0636f00bdaf4f4b6b7ad11e44470bb111c58 --- /dev/null +++ b/node_modules/entities/src/generated/decode-data-xml.ts @@ -0,0 +1,7 @@ +// Generated using scripts/write-decode-map.ts + +import { decodeBase64 } from "../internal/decode-shared.js"; +/** Packed XML decode trie data. */ +export const xmlDecodeTree: Uint16Array = /* #__PURE__ */ decodeBase64( + "AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg", +); diff --git a/node_modules/entities/src/generated/encode-html.ts b/node_modules/entities/src/generated/encode-html.ts new file mode 100644 index 0000000000000000000000000000000000000000..97e4a61d3c7dc24520fb9958f1b2a84b4c71ced0 --- /dev/null +++ b/node_modules/entities/src/generated/encode-html.ts @@ -0,0 +1,18 @@ +// Generated using scripts/write-encode-map.ts +// This file contains a compact, single-string serialization of the HTML encode trie. +// Format per entry (sequence in ascending code point order using diff encoding): +// [&name;][{}] -- diff omitted when 0. +// "&name;" gives the entity value for the node. A following { starts a nested sub-map. +// Diffs use the same scheme as before: diff = currentKey - previousKey - 1, first entry stores key. + +import { + type EncodeTrieNode, + parseEncodeTrie, +} from "../internal/encode-shared.js"; + +/** Compact serialized HTML encode trie (intended to stay small & JS engine friendly) */ +/** HTML entity encode trie. */ +export const htmlTrie: Map = + /* #__PURE__ */ parseEncodeTrie( + "9 m!"#$%&'()*+,1./a:;<{6he<⃒}={6hx=⃥}>{6he>⃒}?@q[\]^_`5{2yfj}k{|}y ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒē2ĖėĘęĚěĜĝĞğĠġĢ1ĤĥĦħĨĩĪī2ĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌō2ŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžjƒyƵ1rǵ1tȷ3yˆˇg˘˙˚˛˜˝1f̑3jΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ1ΣΤΥΦΧΨΩ7αβγδεζηθικλμνξοπρςστυφχψω7ϑϒ2ϕϖ5Ϝϝiϰϱ3ϵ϶aЁЂЃЄЅІЇЈЉЊЋЌ1ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя1ёђѓєѕіїјљњћќ1ўџ5gi    1    ​‌‍‎‏‐2–—―‖1‘’‚1“”„1†‡•2‥…9‰‱′″‴‵3‹›3‾2⁁1⁃⁄a⁏7⁗7 {6bu  }⁠⁡⁢⁣20€1a⃛⃜11ℂ2℅4ℊℋℌℍℎℏℐℑℒℓ1ℕ№℗℘ℙℚℛℜℝ℞3™1ℤ2℧ℨ℩2ℬℭ1ℯℰℱ1ℳℴℵℶℷℸcⅅⅆⅇⅈa⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞1d←↑→↓↔↕↖↗↘↙↚↛1↝{mw↝̸}↞↟↠↡↢↣↤↥↦↧1↩↪↫↬↭↮1↰↱↲↳1↵↶↷2↺↻↼↽↾↿⇀⇁⇂⇃⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇚⇛1⇝6⇤⇥f⇵7⇽⇾⇿∀∁∂{mw∂̸}∃∄∅1∇∈∉1∋∌2∏∐∑−∓∔1∖∗∘1√2∝∞∟∠{6he∠⃒}∡∢∣∤∥∦∧∨∩{1e68∩︀}∪{1e68∪︀}∫∬∭∮∯∰∱∲∳∴∵∶∷∸1∺∻∼{6he∼⃒}∽{mp∽̱}∾{mr∾̳}∿≀≁≂{mw≂̸}≃≄≅≆≇≈≉≊≋{mw≋̸}≌≍{6he≍⃒}≎{mw≎̸}≏{mw≏̸}≐{mw≐̸}≑≒≓≔≕≖≗1≙≚1≜2≟≠≡{6hx≡⃥}≢1≤{6he≤⃒}≥{6he≥⃒}≦{mw≦̸}≧{mw≧̸}≨{1e68≨︀}≩{1e68≩︀}≪{mw≪̸5uh≪⃒}≫{mw≫̸5uh≫⃒}≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿{mw≿̸}⊀⊁⊂{6he⊂⃒}⊃{6he⊃⃒}⊄⊅⊆⊇⊈⊉⊊{1e68⊊︀}⊋{1e68⊋︀}1⊍⊎⊏{mw⊏̸}⊐{mw⊐̸}⊑⊒⊓{1e68⊓︀}⊔{1e68⊔︀}⊕⊖⊗⊘⊙⊚⊛1⊝⊞⊟⊠⊡⊢⊣⊤⊥1⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰1⊲⊳⊴{6he⊴⃒}⊵{6he⊵⃒}⊶⊷⊸⊹⊺⊻1⊽⊾⊿⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘{mw⋘̸}⋙{mw⋙̸}⋚{1e68⋚︀}⋛{1e68⋛︀}2⋞⋟⋠⋡⋢⋣2⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵{mw⋵̸}⋶⋷1⋹{mw⋹̸}⋺⋻⋼⋽⋾6⌅⌆1⌈⌉⌊⌋⌌⌍⌎⌏⌐1⌒⌓1⌕⌖5⌜⌝⌞⌟2⌢⌣9⌭⌮7⌶6⌽1⌿1o⍼1f⎰⎱2⎴⎵⎶11⏜⏝⏞⏟2⏢4⏧1n␣4kⓈ1j─1│9┌3┐3└3┘3├7┤7┬7┴7┼j═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬j▀3▄3█8░▒▓d□8▪▫1▭▮2▱1△▴▵2▸▹3▽▾▿2◂◃6◊○w◬2◯8◸◹◺◻◼8★☆7☎1d♀1♂t♠2♣1♥♦3♪2♭♮♯4j✓3✗8✠l✶x❘p❲❳2c⟈⟉s⟦⟧⟨⟩⟪⟫⟬⟭7⟵⟶⟷⟸⟹⟺1⟼2⟿76⤂⤃⤄⤅6⤌⤍⤎⤏⤐⤑⤒⤓2⤖2⤙⤚⤛⤜⤝⤞⤟⤠2⤣⤤⤥⤦⤧⤨⤩⤪8⤳{mw⤳̸}1⤵⤶⤷⤸⤹2⤼⤽7⥅2⥈⥉⥊⥋2⥎⥏⥐⥑⥒⥓⥔⥕⥖⥗⥘⥙⥚⥛⥜⥝⥞⥟⥠⥡⥢⥣⥤⥥⥦⥧⥨⥩⥪⥫⥬⥭⥮⥯⥰⥱⥲⥳⥴⥵⥶1⥸⥹1⥻⥼⥽⥾⥿5⦅⦆4⦋⦌⦍⦎⦏⦐⦑⦒⦓⦔⦕⦖3⦚1⦜⦝6⦤⦥⦦⦧⦨⦩⦪⦫⦬⦭⦮⦯⦰⦱⦲⦳⦴⦵⦶⦷1⦹1⦻⦼1⦾⦿⧀⧁⧂⧃⧄⧅3⧉3⧍⧎⧏{mw⧏̸}⧐{mw⧐̸}b⧜⧝⧞4⧣⧤⧥5⧫8⧴1⧶9⨀⨁⨂1⨄1⨆5⨌⨍2⨐⨑⨒⨓⨔⨕⨖⨗a⨢⨣⨤⨥⨦⨧1⨩⨪2⨭⨮⨯⨰⨱1⨳⨴⨵⨶⨷⨸⨹⨺⨻⨼2⨿⩀1⩂⩃⩄⩅⩆⩇⩈⩉⩊⩋⩌⩍2⩐2⩓⩔⩕⩖⩗⩘1⩚⩛⩜⩝1⩟6⩦3⩪2⩭{mw⩭̸}⩮⩯⩰{mw⩰̸}⩱⩲⩳⩴⩵1⩷⩸⩹⩺⩻⩼⩽{mw⩽̸}⩾{mw⩾̸}⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚2⪝⪞⪟⪠⪡{mw⪡̸}⪢{mw⪢̸}1⪤⪥⪦⪧⪨⪩⪪⪫⪬{1e68⪬︀}⪭{1e68⪭︀}⪮⪯{mw⪯̸}⪰{mw⪰̸}2⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅{mw⫅̸}⫆{mw⫆̸}⫇⫈2⫋{1e68⫋︀}⫌{1e68⫌︀}2⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫚⫛8⫤1⫦⫧⫨⫩1⫫⫬⫭⫮⫯⫰⫱⫲⫳9⫽{6hx⫽⃥}y7r{17ks𝒜1𝒞𝒟2𝒢2𝒥𝒦2𝒩𝒪𝒫𝒬1𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵𝒶𝒷𝒸𝒹1𝒻1𝒽𝒾𝒿𝓀𝓁𝓂𝓃1𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏1g𝔄𝔅1𝔇𝔈𝔉𝔊2𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔1𝔖𝔗𝔘𝔙𝔚𝔛𝔜1𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷𝔸𝔹1𝔻𝔼𝔽𝔾1𝕀𝕁𝕂𝕃𝕄1𝕆3𝕊𝕋𝕌𝕍𝕎𝕏𝕐1𝕒𝕓𝕔𝕕𝕖𝕗𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫}6vefffiflffiffl", + ); diff --git a/node_modules/entities/src/index.ts b/node_modules/entities/src/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..c9a852d53b4f63ccd5410043e0650a6b968b5473 --- /dev/null +++ b/node_modules/entities/src/index.ts @@ -0,0 +1,162 @@ +import { type DecodingMode, decodeHTML, decodeXML } from "./decode.js"; +import { encodeHTML, encodeNonAsciiHTML } from "./encode.js"; +import { + encodeXML, + escapeAttribute, + escapeText, + escapeUTF8, +} from "./escape.js"; + +/** The level of entities to support. */ +export enum EntityLevel { + /** Support only XML entities. */ + XML = 0, + /** Support HTML entities, which are a superset of XML entities. */ + HTML = 1, +} + +/** + * Encoding strategy used by `encode`. + */ +export enum EncodingMode { + /** + * The output is UTF-8 encoded. Only characters that need escaping within + * XML will be escaped. + */ + UTF8, + /** + * The output consists only of ASCII characters. Characters that need + * escaping within HTML, and characters that aren't ASCII characters will + * be escaped. + */ + ASCII, + /** + * Encode all characters that have an equivalent entity, as well as all + * characters that are not ASCII characters. + */ + Extensive, + /** + * Encode all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + Attribute, + /** + * Encode all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + Text, +} + +/** + * Options for `decode`. + */ +export interface DecodingOptions { + /** + * The level of entities to support. + * @default {@link EntityLevel.XML} + */ + level?: EntityLevel; + /** + * Decoding mode. If `Legacy`, will support legacy entities not terminated + * with a semicolon (`;`). + * + * Always `Strict` for XML. For HTML, set this to `true` if you are parsing + * an attribute value. + * @default {@link DecodingMode.Legacy} + */ + mode?: DecodingMode | undefined; +} + +/** + * Decodes a string with entities. + * @param input String to decode. + * @param options Decoding options. + */ +export function decode( + input: string, + options: DecodingOptions | EntityLevel = EntityLevel.XML, +): string { + const level = typeof options === "number" ? options : options.level; + + if (level === EntityLevel.HTML) { + const mode = typeof options === "object" ? options.mode : undefined; + return decodeHTML(input, mode); + } + + return decodeXML(input); +} + +/** + * Options for `encode`. + */ +export interface EncodingOptions { + /** + * The level of entities to support. + * @default {@link EntityLevel.XML} + */ + level?: EntityLevel; + /** + * Output format. + * @default {@link EncodingMode.Extensive} + */ + mode?: EncodingMode; +} + +/** + * Encodes a string with entities. + * @param input String to encode. + * @param options Encoding options. + */ +export function encode( + input: string, + options: EncodingOptions | EntityLevel = EntityLevel.XML, +): string { + const { mode = EncodingMode.Extensive, level = EntityLevel.XML } = + typeof options === "number" ? { level: options } : options; + + switch (mode) { + case EncodingMode.UTF8: { + return escapeUTF8(input); + } + case EncodingMode.Attribute: { + return escapeAttribute(input); + } + case EncodingMode.Text: { + return escapeText(input); + } + case EncodingMode.ASCII: { + return level === EntityLevel.HTML + ? encodeNonAsciiHTML(input) + : encodeXML(input); + } + // biome-ignore lint/complexity/noUselessSwitchCase: we get an error for the switch not being exhaustive + case EncodingMode.Extensive: + default: { + return level === EntityLevel.HTML + ? encodeHTML(input) + : encodeXML(input); + } + } +} + +export { + DecodingMode, + decodeHTML, + decodeHTMLAttribute, + decodeHTMLStrict, + decodeXML, + decodeXML as decodeXMLStrict, + EntityDecoder, +} from "./decode.js"; + +export { + encodeHTML, + encodeNonAsciiHTML, +} from "./encode.js"; +export { + encodeXML, + escape, + escapeAttribute, + escapeText, + escapeUTF8, +} from "./escape.js"; diff --git a/node_modules/entities/src/internal/bin-trie-flags.ts b/node_modules/entities/src/internal/bin-trie-flags.ts new file mode 100644 index 0000000000000000000000000000000000000000..d8e2752ba00f1a4badd84ff5c3102c141ffc3bab --- /dev/null +++ b/node_modules/entities/src/internal/bin-trie-flags.ts @@ -0,0 +1,16 @@ +/** + * Bit flags & masks for the binary trie encoding used for entity decoding. + * + * Bit layout (16 bits total): + * 15..14 VALUE_LENGTH (+1 encoding; 0 => no value) + * 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';'). + * If valueLength==0: compact run flag. + * 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run) + * 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char + */ +export enum BinTrieFlags { + VALUE_LENGTH = 0b1100_0000_0000_0000, + FLAG13 = 0b0010_0000_0000_0000, + BRANCH_LENGTH = 0b0001_1111_1000_0000, + JUMP_TABLE = 0b0000_0000_0111_1111, +} diff --git a/node_modules/entities/src/internal/decode-shared.ts b/node_modules/entities/src/internal/decode-shared.ts new file mode 100644 index 0000000000000000000000000000000000000000..ed7bd5a4b29b9b77314931ee7f1824ef2f990ef6 --- /dev/null +++ b/node_modules/entities/src/internal/decode-shared.ts @@ -0,0 +1,18 @@ +/** + * Shared base64 decode helper for generated decode data. + * Assumes global atob is available. + * @param input Input string to encode or decode. + */ +export function decodeBase64(input: string): Uint16Array { + const binary: string = atob(input); + const evenLength = binary.length & ~1; // Round down to even length + const out = new Uint16Array(evenLength / 2); + + for (let index = 0, outIndex = 0; index < evenLength; index += 2) { + const lo = binary.charCodeAt(index); + const hi = binary.charCodeAt(index + 1); + out[outIndex++] = lo | (hi << 8); + } + + return out; +} diff --git a/node_modules/entities/src/internal/encode-shared.ts b/node_modules/entities/src/internal/encode-shared.ts new file mode 100644 index 0000000000000000000000000000000000000000..02d02d101b6de6d83870f2dde285a4e92e27483b --- /dev/null +++ b/node_modules/entities/src/internal/encode-shared.ts @@ -0,0 +1,123 @@ +/** + * A node inside the encoding trie used by `encode.ts`. + * + * There are two physical shapes to minimize allocations and lookup cost: + * + * 1. Leaf node (string) + * - A plain string (already in the form `"&name;"`). + * - Represents a terminal match with no children. + * + * 2. Branch / value node (object) + */ +export type EncodeTrieNode = + | string + | { + /** + * Entity value for the current code point sequence (wrapped: `&...;`). + * Present when the path to this node itself is a valid named entity. + */ + value: string | undefined; + /** If a number, the next code unit of the only next character. */ + next: number | Map; + /** If next is a number, `nextValue` contains the entity value. */ + nextValue?: string; + }; + +/** + * Parse a compact encode trie string into a Map structure used for encoding. + * + * Format per entry (ascending code points using delta encoding): + * [&name;][{}] -- diff omitted when 0 + * Where diff = currentKey - previousKey - 1 (first entry stores absolute key). + * `&name;` is the entity value (already wrapped); a following `{` denotes children. + * @param serialized Serialized text fragment to encode. + */ +export function parseEncodeTrie( + serialized: string, +): Map { + const top = new Map(); + const totalLength = serialized.length; + let cursor = 0; + let lastTopKey = -1; + + function readDiff(): number { + const start = cursor; + while (cursor < totalLength) { + const char = serialized.charAt(cursor); + + if ((char < "0" || char > "9") && (char < "a" || char > "z")) { + break; + } + cursor++; + } + if (cursor === start) return 0; + return Number.parseInt(serialized.slice(start, cursor), 36); + } + + function readEntity(): string { + if (serialized[cursor] !== "&") { + throw new Error(`Child entry missing value near index ${cursor}`); + } + + // Cursor currently points at '&' + const start = cursor; + const end = serialized.indexOf(";", cursor + 1); + if (end === -1) { + throw new Error(`Unterminated entity starting at index ${start}`); + } + cursor = end + 1; // Move past ';' + return serialized.slice(start, cursor); // Includes & ... ; + } + + while (cursor < totalLength) { + const keyDiff = readDiff(); + const key = lastTopKey === -1 ? keyDiff : lastTopKey + keyDiff + 1; + + let value: string | undefined; + if (serialized[cursor] === "&") value = readEntity(); + + if (serialized[cursor] === "{") { + cursor++; // Skip '{' + // Parse first child + let diff = readDiff(); + let childKey = diff; // First key (lastChildKey = -1) + const firstValue = readEntity(); + if (serialized[cursor] === "{") { + throw new Error("Unexpected nested '{' beyond depth 2"); + } + // If end of block -> single child optimization + if (serialized[cursor] === "}") { + top.set(key, { value, next: childKey, nextValue: firstValue }); + cursor++; // Skip '}' + } else { + const childMap = new Map([ + [childKey, firstValue], + ]); + let lastChildKey = childKey; + while (cursor < totalLength && serialized[cursor] !== "}") { + diff = readDiff(); + childKey = lastChildKey + diff + 1; + const childValue = readEntity(); + if (serialized[cursor] === "{") { + throw new Error("Unexpected nested '{' beyond depth 2"); + } + childMap.set(childKey, childValue); + lastChildKey = childKey; + } + if (serialized[cursor] !== "}") { + throw new Error("Unterminated child block"); + } + cursor++; // Skip '}' + top.set(key, { value, next: childMap }); + } + } else if (value === undefined) { + throw new Error( + `Malformed encode trie: missing value at index ${cursor}`, + ); + } else { + top.set(key, value); + } + lastTopKey = key; + } + return top; +} diff --git a/node_modules/es-define-property/.eslintrc b/node_modules/es-define-property/.eslintrc new file mode 100644 index 0000000000000000000000000000000000000000..46f3b120b8724f7a62ece8975157c2df19e5f1b3 --- /dev/null +++ b/node_modules/es-define-property/.eslintrc @@ -0,0 +1,13 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "new-cap": ["error", { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/node_modules/es-define-property/.github/FUNDING.yml b/node_modules/es-define-property/.github/FUNDING.yml new file mode 100644 index 0000000000000000000000000000000000000000..4445451fbe2ccd00617f2848e567afb5eecb6825 --- /dev/null +++ b/node_modules/es-define-property/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-define-property +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/es-define-property/.nycrc b/node_modules/es-define-property/.nycrc new file mode 100644 index 0000000000000000000000000000000000000000..bdd626ce91477abbdd489b79988baebadbd3c897 --- /dev/null +++ b/node_modules/es-define-property/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/es-define-property/CHANGELOG.md b/node_modules/es-define-property/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..5f60cc0992cbae4f34123dedce058743617a842c --- /dev/null +++ b/node_modules/es-define-property/CHANGELOG.md @@ -0,0 +1,29 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/ljharb/es-define-property/compare/v1.0.0...v1.0.1) - 2024-12-06 + +### Commits + +- [types] use shared tsconfig [`954a663`](https://github.com/ljharb/es-define-property/commit/954a66360326e508a0e5daa4b07493d58f5e110e) +- [actions] split out node 10-20, and 20+ [`3a8e84b`](https://github.com/ljharb/es-define-property/commit/3a8e84b23883f26ff37b3e82ff283834228e18c6) +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/tape`, `auto-changelog`, `gopd`, `tape` [`86ae27b`](https://github.com/ljharb/es-define-property/commit/86ae27bb8cc857b23885136fad9cbe965ae36612) +- [Refactor] avoid using `get-intrinsic` [`02480c0`](https://github.com/ljharb/es-define-property/commit/02480c0353ef6118965282977c3864aff53d98b1) +- [Tests] replace `aud` with `npm audit` [`f6093ff`](https://github.com/ljharb/es-define-property/commit/f6093ff74ab51c98015c2592cd393bd42478e773) +- [Tests] configure testling [`7139e66`](https://github.com/ljharb/es-define-property/commit/7139e66959247a56086d9977359caef27c6849e7) +- [Dev Deps] update `tape` [`b901b51`](https://github.com/ljharb/es-define-property/commit/b901b511a75e001a40ce1a59fef7d9ffcfc87482) +- [Tests] fix types in tests [`469d269`](https://github.com/ljharb/es-define-property/commit/469d269fd141b1e773ec053a9fa35843493583e0) +- [Dev Deps] add missing peer dep [`733acfb`](https://github.com/ljharb/es-define-property/commit/733acfb0c4c96edf337e470b89a25a5b3724c352) + +## v1.0.0 - 2024-02-12 + +### Commits + +- Initial implementation, tests, readme, types [`3e154e1`](https://github.com/ljharb/es-define-property/commit/3e154e11a2fee09127220f5e503bf2c0a31dd480) +- Initial commit [`07d98de`](https://github.com/ljharb/es-define-property/commit/07d98de34a4dc31ff5e83a37c0c3f49e0d85cd50) +- npm init [`c4eb634`](https://github.com/ljharb/es-define-property/commit/c4eb6348b0d3886aac36cef34ad2ee0665ea6f3e) +- Only apps should have lockfiles [`7af86ec`](https://github.com/ljharb/es-define-property/commit/7af86ec1d311ec0b17fdfe616a25f64276903856) diff --git a/node_modules/es-define-property/LICENSE b/node_modules/es-define-property/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..f82f38963b0d282b529f64def2bcd40be3a9a947 --- /dev/null +++ b/node_modules/es-define-property/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/es-define-property/README.md b/node_modules/es-define-property/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9b291bddb2d0dd0e37ca82e6ac02a7002b6e0c44 --- /dev/null +++ b/node_modules/es-define-property/README.md @@ -0,0 +1,49 @@ +# es-define-property [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +`Object.defineProperty`, but not IE 8's broken one. + +## Example + +```js +const assert = require('assert'); + +const $defineProperty = require('es-define-property'); + +if ($defineProperty) { + assert.equal($defineProperty, Object.defineProperty); +} else if (Object.defineProperty) { + assert.equal($defineProperty, false, 'this is IE 8'); +} else { + assert.equal($defineProperty, false, 'this is an ES3 engine'); +} +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-define-property +[npm-version-svg]: https://versionbadg.es/ljharb/es-define-property.svg +[deps-svg]: https://david-dm.org/ljharb/es-define-property.svg +[deps-url]: https://david-dm.org/ljharb/es-define-property +[dev-deps-svg]: https://david-dm.org/ljharb/es-define-property/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-define-property#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-define-property.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-define-property.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-define-property.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-define-property +[codecov-image]: https://codecov.io/gh/ljharb/es-define-property/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-define-property/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-define-property +[actions-url]: https://github.com/ljharb/es-define-property/actions diff --git a/node_modules/es-define-property/index.d.ts b/node_modules/es-define-property/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..6012247c464a88a37c8711b0c40884ec8c8e182d --- /dev/null +++ b/node_modules/es-define-property/index.d.ts @@ -0,0 +1,3 @@ +declare const defineProperty: false | typeof Object.defineProperty; + +export = defineProperty; \ No newline at end of file diff --git a/node_modules/es-define-property/index.js b/node_modules/es-define-property/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e0a29251646c4cc40dd6b1be8d3e28674cd21ad1 --- /dev/null +++ b/node_modules/es-define-property/index.js @@ -0,0 +1,14 @@ +'use strict'; + +/** @type {import('.')} */ +var $defineProperty = Object.defineProperty || false; +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = false; + } +} + +module.exports = $defineProperty; diff --git a/node_modules/es-define-property/package.json b/node_modules/es-define-property/package.json new file mode 100644 index 0000000000000000000000000000000000000000..fbed187879c12efa431383a9d4b9f340e9c41184 --- /dev/null +++ b/node_modules/es-define-property/package.json @@ -0,0 +1,81 @@ +{ + "name": "es-define-property", + "version": "1.0.1", + "description": "`Object.defineProperty`, but not IE 8's broken one.", + "main": "index.js", + "types": "./index.d.ts", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-define-property.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "define", + "property", + "defineProperty", + "Object.defineProperty" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-define-property/issues" + }, + "homepage": "https://github.com/ljharb/es-define-property#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/gopd": "^1.0.3", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "gopd": "^1.2.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/node_modules/es-define-property/test/index.js b/node_modules/es-define-property/test/index.js new file mode 100644 index 0000000000000000000000000000000000000000..b4b4688fbe21410f840ebadfc21512da78bc3cda --- /dev/null +++ b/node_modules/es-define-property/test/index.js @@ -0,0 +1,56 @@ +'use strict'; + +var $defineProperty = require('../'); + +var test = require('tape'); +var gOPD = require('gopd'); + +test('defineProperty: supported', { skip: !$defineProperty }, function (t) { + t.plan(4); + + t.equal(typeof $defineProperty, 'function', 'defineProperty is supported'); + if ($defineProperty && gOPD) { // this `if` check is just to shut TS up + /** @type {{ a: number, b?: number, c?: number }} */ + var o = { a: 1 }; + + $defineProperty(o, 'b', { enumerable: true, value: 2 }); + t.deepEqual( + gOPD(o, 'b'), + { + configurable: false, + enumerable: true, + value: 2, + writable: false + }, + 'property descriptor is as expected' + ); + + $defineProperty(o, 'c', { enumerable: false, value: 3, writable: true }); + t.deepEqual( + gOPD(o, 'c'), + { + configurable: false, + enumerable: false, + value: 3, + writable: true + }, + 'property descriptor is as expected' + ); + } + + t.equal($defineProperty, Object.defineProperty, 'defineProperty is Object.defineProperty'); + + t.end(); +}); + +test('defineProperty: not supported', { skip: !!$defineProperty }, function (t) { + t.notOk($defineProperty, 'defineProperty is not supported'); + + t.match( + typeof $defineProperty, + /^(?:undefined|boolean)$/, + '`typeof defineProperty` is `undefined` or `boolean`' + ); + + t.end(); +}); diff --git a/node_modules/es-define-property/tsconfig.json b/node_modules/es-define-property/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..5a49992eafed9157e55fe5cf18a1eae8da8300fa --- /dev/null +++ b/node_modules/es-define-property/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2022", + }, + "exclude": [ + "coverage", + "test/list-exports" + ], +} diff --git a/node_modules/es-errors/.eslintrc b/node_modules/es-errors/.eslintrc new file mode 100644 index 0000000000000000000000000000000000000000..3b5d9e90ec405f85dd7f9066656efccc51193697 --- /dev/null +++ b/node_modules/es-errors/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/node_modules/es-errors/.github/FUNDING.yml b/node_modules/es-errors/.github/FUNDING.yml new file mode 100644 index 0000000000000000000000000000000000000000..f1b880554aae3ac981c255f24b8a38ff7bed627e --- /dev/null +++ b/node_modules/es-errors/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-errors +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/es-errors/CHANGELOG.md b/node_modules/es-errors/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..204a9e904b4ea5d092d53f9b9bb77301bfda559e --- /dev/null +++ b/node_modules/es-errors/CHANGELOG.md @@ -0,0 +1,40 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.3.0](https://github.com/ljharb/es-errors/compare/v1.2.1...v1.3.0) - 2024-02-05 + +### Commits + +- [New] add `EvalError` and `URIError` [`1927627`](https://github.com/ljharb/es-errors/commit/1927627ba68cb6c829d307231376c967db53acdf) + +## [v1.2.1](https://github.com/ljharb/es-errors/compare/v1.2.0...v1.2.1) - 2024-02-04 + +### Commits + +- [Fix] add missing `exports` entry [`5bb5f28`](https://github.com/ljharb/es-errors/commit/5bb5f280f98922701109d6ebb82eea2257cecc7e) + +## [v1.2.0](https://github.com/ljharb/es-errors/compare/v1.1.0...v1.2.0) - 2024-02-04 + +### Commits + +- [New] add `ReferenceError` [`6d8cf5b`](https://github.com/ljharb/es-errors/commit/6d8cf5bbb6f3f598d02cf6f30e468ba2caa8e143) + +## [v1.1.0](https://github.com/ljharb/es-errors/compare/v1.0.0...v1.1.0) - 2024-02-04 + +### Commits + +- [New] add base Error [`2983ab6`](https://github.com/ljharb/es-errors/commit/2983ab65f7bc5441276cb021dc3aa03c78881698) + +## v1.0.0 - 2024-02-03 + +### Commits + +- Initial implementation, tests, readme, type [`8f47631`](https://github.com/ljharb/es-errors/commit/8f476317e9ad76f40ad648081829b1a1a3a1288b) +- Initial commit [`ea5d099`](https://github.com/ljharb/es-errors/commit/ea5d099ef18e550509ab9e2be000526afd81c385) +- npm init [`6f5ebf9`](https://github.com/ljharb/es-errors/commit/6f5ebf9cead474dadd72b9e63dad315820a089ae) +- Only apps should have lockfiles [`e1a0aeb`](https://github.com/ljharb/es-errors/commit/e1a0aeb7b80f5cfc56be54d6b2100e915d47def8) +- [meta] add `sideEffects` flag [`a9c7d46`](https://github.com/ljharb/es-errors/commit/a9c7d460a492f1d8a241c836bc25a322a19cc043) diff --git a/node_modules/es-errors/LICENSE b/node_modules/es-errors/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..f82f38963b0d282b529f64def2bcd40be3a9a947 --- /dev/null +++ b/node_modules/es-errors/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/es-errors/README.md b/node_modules/es-errors/README.md new file mode 100644 index 0000000000000000000000000000000000000000..8dbfacfea727f2486a51415fa63e8494689ca3ed --- /dev/null +++ b/node_modules/es-errors/README.md @@ -0,0 +1,55 @@ +# es-errors [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A simple cache for a few of the JS Error constructors. + +## Example + +```js +const assert = require('assert'); + +const Base = require('es-errors'); +const Eval = require('es-errors/eval'); +const Range = require('es-errors/range'); +const Ref = require('es-errors/ref'); +const Syntax = require('es-errors/syntax'); +const Type = require('es-errors/type'); +const URI = require('es-errors/uri'); + +assert.equal(Base, Error); +assert.equal(Eval, EvalError); +assert.equal(Range, RangeError); +assert.equal(Ref, ReferenceError); +assert.equal(Syntax, SyntaxError); +assert.equal(Type, TypeError); +assert.equal(URI, URIError); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-errors +[npm-version-svg]: https://versionbadg.es/ljharb/es-errors.svg +[deps-svg]: https://david-dm.org/ljharb/es-errors.svg +[deps-url]: https://david-dm.org/ljharb/es-errors +[dev-deps-svg]: https://david-dm.org/ljharb/es-errors/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-errors#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-errors.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-errors.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-errors.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-errors +[codecov-image]: https://codecov.io/gh/ljharb/es-errors/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-errors/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-errors +[actions-url]: https://github.com/ljharb/es-errors/actions diff --git a/node_modules/es-errors/eval.d.ts b/node_modules/es-errors/eval.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4210e01ea5a4def42ac84742b36d2cada422ca4 --- /dev/null +++ b/node_modules/es-errors/eval.d.ts @@ -0,0 +1,3 @@ +declare const EvalError: EvalErrorConstructor; + +export = EvalError; diff --git a/node_modules/es-errors/eval.js b/node_modules/es-errors/eval.js new file mode 100644 index 0000000000000000000000000000000000000000..725ccb61a96e9a89faa7d0046cfffb78e1c92539 --- /dev/null +++ b/node_modules/es-errors/eval.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./eval')} */ +module.exports = EvalError; diff --git a/node_modules/es-errors/index.d.ts b/node_modules/es-errors/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..69bdbc92ee1c2272f4ea3180319378f4c9ffb94c --- /dev/null +++ b/node_modules/es-errors/index.d.ts @@ -0,0 +1,3 @@ +declare const Error: ErrorConstructor; + +export = Error; diff --git a/node_modules/es-errors/index.js b/node_modules/es-errors/index.js new file mode 100644 index 0000000000000000000000000000000000000000..cc0c52124b678924decd65b835587b5cbdbb878f --- /dev/null +++ b/node_modules/es-errors/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Error; diff --git a/node_modules/es-errors/package.json b/node_modules/es-errors/package.json new file mode 100644 index 0000000000000000000000000000000000000000..ff8c2a531b89061d61eadcdd419a752b79cd2daa --- /dev/null +++ b/node_modules/es-errors/package.json @@ -0,0 +1,80 @@ +{ + "name": "es-errors", + "version": "1.3.0", + "description": "A simple cache for a few of the JS Error constructors.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./eval": "./eval.js", + "./range": "./range.js", + "./ref": "./ref.js", + "./syntax": "./syntax.js", + "./type": "./type.js", + "./uri": "./uri.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "aud --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-errors.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "error", + "typeerror", + "syntaxerror", + "rangeerror" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-errors/issues" + }, + "homepage": "https://github.com/ljharb/es-errors#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "eclint": "^2.8.1", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.4", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/es-errors/range.d.ts b/node_modules/es-errors/range.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3a12e8642651dc11e02842be181311761562f318 --- /dev/null +++ b/node_modules/es-errors/range.d.ts @@ -0,0 +1,3 @@ +declare const RangeError: RangeErrorConstructor; + +export = RangeError; diff --git a/node_modules/es-errors/range.js b/node_modules/es-errors/range.js new file mode 100644 index 0000000000000000000000000000000000000000..2044fe03646a725081f95460e4fca9a1ef59750f --- /dev/null +++ b/node_modules/es-errors/range.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./range')} */ +module.exports = RangeError; diff --git a/node_modules/es-errors/ref.d.ts b/node_modules/es-errors/ref.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a13107e24926aea33fb0cb22ae209ab2be115577 --- /dev/null +++ b/node_modules/es-errors/ref.d.ts @@ -0,0 +1,3 @@ +declare const ReferenceError: ReferenceErrorConstructor; + +export = ReferenceError; diff --git a/node_modules/es-errors/ref.js b/node_modules/es-errors/ref.js new file mode 100644 index 0000000000000000000000000000000000000000..d7c430fdb3ae766b215ad8e072d6ac2212d7c619 --- /dev/null +++ b/node_modules/es-errors/ref.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./ref')} */ +module.exports = ReferenceError; diff --git a/node_modules/es-errors/syntax.d.ts b/node_modules/es-errors/syntax.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..6a0c53c5b9ed0ecc1d4130caf9f61f6bdfcb2fd4 --- /dev/null +++ b/node_modules/es-errors/syntax.d.ts @@ -0,0 +1,3 @@ +declare const SyntaxError: SyntaxErrorConstructor; + +export = SyntaxError; diff --git a/node_modules/es-errors/syntax.js b/node_modules/es-errors/syntax.js new file mode 100644 index 0000000000000000000000000000000000000000..5f5fddeec53b514df79342efce6cae341b6309be --- /dev/null +++ b/node_modules/es-errors/syntax.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./syntax')} */ +module.exports = SyntaxError; diff --git a/node_modules/es-errors/test/index.js b/node_modules/es-errors/test/index.js new file mode 100644 index 0000000000000000000000000000000000000000..1ff027721aabcada7c00b9e69fbd6f99a901c470 --- /dev/null +++ b/node_modules/es-errors/test/index.js @@ -0,0 +1,19 @@ +'use strict'; + +var test = require('tape'); + +var E = require('../'); +var R = require('../range'); +var Ref = require('../ref'); +var S = require('../syntax'); +var T = require('../type'); + +test('errors', function (t) { + t.equal(E, Error); + t.equal(R, RangeError); + t.equal(Ref, ReferenceError); + t.equal(S, SyntaxError); + t.equal(T, TypeError); + + t.end(); +}); diff --git a/node_modules/es-errors/tsconfig.json b/node_modules/es-errors/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..99dfeb6c80dfed0a80dac97c6e9f04263fec7a8c --- /dev/null +++ b/node_modules/es-errors/tsconfig.json @@ -0,0 +1,49 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + + /* Language and Environment */ + "target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": ["types"], /* Specify multiple folders that act like `./node_modules/@types`. */ + "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + "declarationMap": true, /* Create sourcemaps for d.ts files. */ + "noEmit": true, /* Disable emitting files from a compilation. */ + + /* Interop Constraints */ + "allowSyntheticDefaultImports": true, /* Allow `import x from y` when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + + /* Completeness */ + // "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/es-errors/type.d.ts b/node_modules/es-errors/type.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..576fb51617719961375b38b15773244480b61a0e --- /dev/null +++ b/node_modules/es-errors/type.d.ts @@ -0,0 +1,3 @@ +declare const TypeError: TypeErrorConstructor + +export = TypeError; diff --git a/node_modules/es-errors/type.js b/node_modules/es-errors/type.js new file mode 100644 index 0000000000000000000000000000000000000000..9769e44e397cc2a8f089258833a733f3fe0627ef --- /dev/null +++ b/node_modules/es-errors/type.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./type')} */ +module.exports = TypeError; diff --git a/node_modules/es-errors/uri.d.ts b/node_modules/es-errors/uri.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..c3261c91e08c1a3c6499741ccd32d47612bea72c --- /dev/null +++ b/node_modules/es-errors/uri.d.ts @@ -0,0 +1,3 @@ +declare const URIError: URIErrorConstructor; + +export = URIError; diff --git a/node_modules/es-errors/uri.js b/node_modules/es-errors/uri.js new file mode 100644 index 0000000000000000000000000000000000000000..e9cd1c78709f0773db77943de1fdb95d3d268a5f --- /dev/null +++ b/node_modules/es-errors/uri.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./uri')} */ +module.exports = URIError; diff --git a/node_modules/es-module-lexer/LICENSE b/node_modules/es-module-lexer/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..013561a8baec915646439c3299a4b2bbf91c8ee5 --- /dev/null +++ b/node_modules/es-module-lexer/LICENSE @@ -0,0 +1,10 @@ +MIT License +----------- + +Copyright (C) 2018-2022 Guy Bedford + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/es-module-lexer/README.md b/node_modules/es-module-lexer/README.md new file mode 100644 index 0000000000000000000000000000000000000000..73abd08ec95d23654980e51d6bc982943eee8972 --- /dev/null +++ b/node_modules/es-module-lexer/README.md @@ -0,0 +1,403 @@ +# ES Module Lexer + +[![Build Status][actions-image]][actions-url] + +A JS module syntax lexer used in [es-module-shims](https://github.com/guybedford/es-module-shims). + +Outputs the list of exports and locations of import specifiers, including dynamic import and import meta handling. + +Supports new syntax features including import attributes and source phase imports. + +A very small single JS file (~7KiB gzipped) that includes inlined Web Assembly for very fast source analysis of ECMAScript module syntax only. + +For an example of the performance, Angular 1 (720KiB) is fully parsed in 5ms, in comparison to the fastest JS parser, Acorn which takes over 100ms. + +_Comprehensively handles the JS language grammar while remaining small and fast. - ~10ms per MB of JS cold and ~5ms per MB of JS warm, [see benchmarks](#benchmarks) for more info._ + +> [Built with](https://github.com/guybedford/es-module-lexer/blob/main/chompfile.toml) [Chomp](https://chompbuild.com/) + +### Usage + +``` +npm install es-module-lexer +``` + +See [src/lexer.ts](src/lexer.ts) for the type definitions. + +For use in CommonJS: + +```js +const { init, parse } = require('es-module-lexer'); + +(async () => { + // either await init, or call parse asynchronously + // this is necessary for the Web Assembly boot + await init; + + const source = 'export var p = 5'; + const [imports, exports] = parse(source); + + // Returns "p" + source.slice(exports[0].s, exports[0].e); + // Returns "p" + source.slice(exports[0].ls, exports[0].le); +})(); +``` + +An ES module version is also available: + +```js +import { init, parse } from 'es-module-lexer'; + +(async () => { + await init; + + const source = ` + import { name } from 'mod\\u1011'; + import json from './json.json' with { type: 'json' } + export var p = 5; + export function q () { + + }; + export { x as 'external name' } from 'external'; + + // Comments provided to demonstrate edge cases + import /*comment!*/ ( 'asdf', { with: { type: 'json' }}); + import /*comment!*/.meta.asdf; + + // Source phase imports: + import source mod from './mod.wasm'; + import.source('./mod.wasm'); + `; + + const [imports, exports] = parse(source, 'optional-sourcename'); + + // Returns "modထ" + imports[0].n + // Returns "mod\u1011" + source.slice(imports[0].s, imports[0].e); + // "s" = start + // "e" = end + + // Returns "import { name } from 'mod'" + source.slice(imports[0].ss, imports[0].se); + // "ss" = statement start + // "se" = statement end + + // Returns "{ type: 'json' }" + source.slice(imports[1].a, imports[1].se); + // "a" = attribute start, -1 for no import attributes + + // Parsed import attributes are available in `at` + // Returns [['type', 'json']] + imports[1].at; + // Returns 'json' + imports[1].at[0][1]; + + // Returns null (no attributes) + imports[0].at; + + // Returns "external" + source.slice(imports[2].s, imports[2].e); + + // Returns "p" + source.slice(exports[0].s, exports[0].e); + // Returns "p" + source.slice(exports[0].ls, exports[0].le); + // Returns "q" + source.slice(exports[1].s, exports[1].e); + // Returns "q" + source.slice(exports[1].ls, exports[1].le); + + // "ss" = export statement start (only the start is tracked, not the end) + // Returns "export" + source.slice(exports[0].ss, exports[0].ss + 6); + + // Returns "'external name'" + source.slice(exports[2].s, exports[2].e); + // Returns -1 + exports[2].ls; + // Returns -1 + exports[2].le; + + // Import type is provided by `t` value + // (1 for static, 2, for dynamic) + // Returns true + imports[2].t == 2; + + // Returns "asdf" (only for string literal dynamic imports) + imports[2].n + // Returns "import /*comment!*/ ( 'asdf', { with: { type: 'json' } })" + source.slice(imports[3].ss, imports[3].se); + // Returns "'asdf'" + source.slice(imports[3].s, imports[3].e); + // Returns "( 'asdf', { with: { type: 'json' } })" + source.slice(imports[3].d, imports[3].se); + // Returns "{ with: { type: 'json' } }" + source.slice(imports[3].a, imports[3].se - 1); + + // For non-string dynamic import expressions: + // - n will be undefined + // - a is currently -1 even if there is an import attribute + // - e is currently the character before the closing ) + + // For nested dynamic imports, the se value of the outer import is -1 as end tracking does not + // currently support nested dynamic immports + + // import.meta is indicated by imports[3].d === -2 + // Returns true + imports[4].d === -2; + // Returns "import /*comment!*/.meta" + source.slice(imports[4].s, imports[4].e); + // ss and se are the same for import meta + + // Returns "'./mod.wasm'" + source.slice(imports[5].s, imports[5].e); + + // Import type 4 and 5 for static and dynamic source phase + imports[5].t === 4; + imports[6].t === 5; +})(); +``` + +### CSP asm.js Build + +The default version of the library uses Wasm and (safe) eval usage for performance and a minimal footprint. + +Neither of these represent security escalation possibilities since there are no execution string injection vectors, but that can still violate existing CSP policies for applications. + +For a version that works with CSP eval disabled, use the `es-module-lexer/js` build: + +```js +import { parse } from 'es-module-lexer/js'; +``` + +Instead of Web Assembly, this uses an asm.js build which is almost as fast as the Wasm version ([see benchmarks below](#benchmarks)). + +### Minimal Build + +For size-sensitive embedders, the `es-module-lexer/minimal` build drops certain features to reduce the binary size. This is used for example by [es-module-shims](https://github.com/guybedford/es-module-shims): + +```js +import { parse } from 'es-module-lexer/minimal'; +``` + +Compared to the full build: + +* `parse` returns a two-element `[imports, exports]` tuple only - the third and fourth facade and `hasModuleSyntax` booleans are dropped. +* Imports drop the parsed attribute list `at` (the attribute source remains recoverable via the `a` attributes index). +* Exports drop the statement start `ss`. + +All other fields are identical to the full build. For CSP eval disabled support, the equivalent asm.js build is available as `es-module-lexer/minimal/js`. + +### Import Attributes + +The `a` field provides the index of the start of the `{` attributes bracket, or -1 for no attributes. + +The list of attribute key and value pairs are provided on the `at` field (full build only): + +```js +const [imports] = parse(` + import json from './foo.json' with { type: 'json' }; + import './foo.css' with { type: 'css' }; + import pkg from 'pkg' with { type: 'json', integrity: 'sha384-...' }; +`); + +// Returns [['type', 'json']] +imports[0].at; + +// Returns [['type', 'css']] +imports[1].at; + +// Multiple attributes +// Returns [['type', 'json'], ['integrity', 'sha384-...']] +imports[2].at; +``` + +The `at` field is an array of `[key, value]` tuples, or `null` if there are no attributes. + +Both keys and values support escape sequences: + +```js +const [imports] = parse(` + import foo from './foo.js' with { "custom-key": "value" }; + import bar from './bar.js' with { "key\\nwith\\nnewlines": "value\\twith\\ttabs" }; +`); + +// Quoted keys are unquoted +// Returns [['custom-key', 'value']] +imports[0].at; + +// Escape sequences are processed +// Returns [['key\nwith\nnewlines', 'value\twith\ttabs']] +imports[1].at; +``` + +### Escape Sequences + +To handle escape sequences in specifier strings, the `.n` field of imported specifiers will be provided where possible. + +For dynamic import expressions, this field will be empty if not a valid JS string. + +### Facade Detection + +Facade modules that only use import / export syntax can be detected via the third return value (full build only): + +```js +const [,, facade] = parse(` + export * from 'external'; + import * as ns from 'external2'; + export { a as b } from 'external3'; + export { ns }; +`); +facade === true; +``` + +### ESM Detection + +Modules that uses ESM syntaxes can be detected via the fourth return value (full build only): + +```js +const [,,, hasModuleSyntax] = parse(` + export {} +`); +hasModuleSyntax === true; +``` + +Dynamic imports are ignored since they can be used in Non-ESM files. + +```js +const [,,, hasModuleSyntax] = parse(` + import('./foo.js') +`); +hasModuleSyntax === false; +``` + +### Environment Support + +Node.js 10+, and [all browsers with Web Assembly support](https://caniuse.com/#feat=wasm). + +### Grammar Support + +* Token state parses all line comments, block comments, strings, template strings, blocks, parens and punctuators. +* Division operator / regex token ambiguity is handled via backtracking checks against punctuator prefixes, including closing brace or paren backtracking. +* Always correctly parses valid JS source, but may parse invalid JS source without errors. + +### Limitations + +The lexing approach is designed to deal with the full language grammar including RegEx / division operator ambiguity through backtracking and paren / brace tracking. + +Because it lexes rather than fully parses, the analysis is not a validation pass: valid JS source is always analyzed correctly, but some invalid source is accepted without an error rather than rejected. For example `export const = 1` lexes to an empty exports list instead of throwing. Callers that need to reject invalid source should run a validating parser separately. + +Multiple exports per declaration (`export var a = 'asdf', q = z`) and renamed destructured exports (`export var { a: b } = asdf`) are detected correctly; earlier versions missed `q` and `b` in these forms. + +### Benchmarks + +Benchmarks can be run with `npm run bench`. + +Current results on a standard desktop machine: + +#### Wasm Build + +``` +Module load time +> 1ms +Cold Run, All Samples +test/samples/*.js (3057 KiB) +> 13ms + +Warm Runs (average of 25 runs) +test/samples/angular.js (719 KiB) +> 1ms +test/samples/angular.min.js (188 KiB) +> 1ms +test/samples/d3.js (491 KiB) +> 2ms +test/samples/d3.min.js (274 KiB) +> 1.04ms +test/samples/magic-string.js (34 KiB) +> 0ms +test/samples/magic-string.min.js (20 KiB) +> 0ms +test/samples/rollup.js (902 KiB) +> 3ms +test/samples/rollup.min.js (429 KiB) +> 2ms + +Warm Runs, All Samples (average of 25 runs) +test/samples/*.js (3057 KiB) +> 10m +``` + +### JS Build (asm.js) + +``` +Module load time +> 1ms +Cold Run, All Samples +test/samples/*.js (3057 KiB) +> 92ms + +Warm Runs (average of 25 runs) +test/samples/angular.js (719 KiB) +> 3.6ms +test/samples/angular.min.js (188 KiB) +> 2ms +test/samples/d3.js (491 KiB) +> 4ms +test/samples/d3.min.js (274 KiB) +> 2.52ms +test/samples/magic-string.js (34 KiB) +> 0ms +test/samples/magic-string.min.js (20 KiB) +> 0ms +test/samples/rollup.js (902 KiB) +> 6ms +test/samples/rollup.min.js (429 KiB) +> 3.2ms + +Warm Runs, All Samples (average of 25 runs) +test/samples/*.js (3057 KiB) +> 20.88ms +``` + +### Building + +This project uses [Chomp](https://chompbuild.com) for building. + +With Chomp installed, download the WASI SDK 12.0 from https://github.com/WebAssembly/wasi-sdk/releases/tag/wasi-sdk-12. + +- [Linux](https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-linux.tar.gz) +- [Windows (MinGW)](https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-mingw.tar.gz) +- [macOS](https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-macos.tar.gz) + +Locate the WASI-SDK as a sibling folder, or customize the path via the `WASI_PATH` environment variable. + +Emscripten emsdk is also assumed to be a sibling folder or via the `EMSDK_PATH` environment variable. + +Example setup: + +``` +git clone https://github.com:guybedford/es-module-lexer +git clone https://github.com/emscripten-core/emsdk +cd emsdk +git checkout 1.40.1-fastcomp +./emsdk install 1.40.1-fastcomp +cd .. +wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-linux.tar.gz +gunzip wasi-sdk-12.0-linux.tar.gz +tar -xf wasi-sdk-12.0-linux.tar +mv wasi-sdk-12.0-linux.tar wasi-sdk-12.0 +cargo install chompbuild +cd es-module-lexer +chomp test +``` + +For the `asm.js` build, git clone `emsdk` from is assumed to be a sibling folder as well. + +### License + +MIT + +[actions-image]: https://github.com/guybedford/es-module-lexer/actions/workflows/build.yml/badge.svg +[actions-url]: https://github.com/guybedford/es-module-lexer/actions/workflows/build.yml diff --git a/node_modules/es-module-lexer/dist/lexer.asm.js b/node_modules/es-module-lexer/dist/lexer.asm.js new file mode 100644 index 0000000000000000000000000000000000000000..13f15d94637598703a23e0a92b6fb11456bc9a7b --- /dev/null +++ b/node_modules/es-module-lexer/dist/lexer.asm.js @@ -0,0 +1,2 @@ +/* es-module-lexer 2.3.1 */ +let 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>>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=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})} diff --git a/node_modules/es-module-lexer/dist/lexer.cjs b/node_modules/es-module-lexer/dist/lexer.cjs new file mode 100644 index 0000000000000000000000000000000000000000..63f62bf486fbf124f206784c4449f4c57e875e13 --- /dev/null +++ b/node_modules/es-module-lexer/dist/lexer.cjs @@ -0,0 +1 @@ +"use strict";exports.initSync=exports.init=exports.ImportType=void 0,exports.parse=parse;var ImportType=exports.ImportType=function(A){return A[A.Static=1]="Static",A[A.Dynamic=2]="Dynamic",A[A.ImportMeta=3]="ImportMeta",A[A.StaticSourcePhase=4]="StaticSourcePhase",A[A.DynamicSourcePhase=5]="DynamicSourcePhase",A[A.StaticDeferPhase=6]="StaticDeferPhase",A[A.DynamicDeferPhase=7]="DynamicDeferPhase",A}({});const A=1===new Uint8Array(new Uint16Array([1]).buffer)[0];function parse(C,g="@"){if(!E)return init.then(()=>parse(C));const I=C.length+1,w=(E.__heap_base.value||E.__heap_base)+4*I-E.memory.buffer.byteLength;w>0&&E.memory.grow(Math.ceil(w/65536));const o=E.sa(I-1);if("undefined"!=typeof Buffer?Buffer.from(E.memory.buffer,o,2*(I-1)).write(C,"utf16le"):(A?B:Q)(C,new Uint16Array(E.memory.buffer,o,I)),!E.parse())throw Object.assign(new Error(`Parse error ${g}:${C.slice(0,E.e()).split("\n").length}:${E.e()-C.lastIndexOf("\n",E.e()-1)}`),{idx:E.e()});const D=[],i=[];for(;E.ri();){const A=E.is(),Q=E.ie(),B=E.it(),g=E.ai(),I=E.id(),w=E.ss(),o=E.se();let i;E.ip()&&(i=G(C.slice(-1===I?A-1:A,-1===I?Q+1:Q)));let s=null;for(s=[],E.rsa();E.ra();){const A=E.aks(),Q=E.ake(),B=E.avs(),g=E.ave();s.push([J(C.slice(A,Q)),J(C.slice(B,g))])}0===s.length&&(s=null),D.push({n:i,t:B,s:A,e:Q,ss:w,se:o,d:I,a:g,at:s})}for(;E.re();){const A=E.es(),Q=E.ee(),B=E.els(),g=E.ele(),I=B<0?void 0:J(C.slice(B,g)),w=J(C.slice(A,Q));i.push({s:A,e:Q,ls:B,le:g,ss:E.ess(),n:w,ln:I})}function G(A){try{return(0,eval)(A)}catch(A){}}function J(A){if(!A)return A;const Q=A[0];return('"'===Q||"'"===Q)&&G(A)||A}return[D,i,!!E.f(),!!E.ms()]}function Q(A,Q){const B=A.length;let E=0;for(;E>>8}}function B(A,Q){const B=A.length;let E=0;for(;E{return A="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","undefined"!=typeof Buffer?Buffer.from(A,"base64"):Uint8Array.from(atob(A),A=>A.charCodeAt(0));var A},init=exports.init=WebAssembly.compile(C()).then(WebAssembly.instantiate).then(({exports:A})=>{E=A}),initSync=()=>{if(E)return;const A=new WebAssembly.Module(C());E=new WebAssembly.Instance(A).exports};exports.initSync=initSync; \ No newline at end of file diff --git a/node_modules/es-module-lexer/dist/lexer.js b/node_modules/es-module-lexer/dist/lexer.js new file mode 100644 index 0000000000000000000000000000000000000000..47bbc39c29b07cbbac0649fba68188a28261fafc --- /dev/null +++ b/node_modules/es-module-lexer/dist/lexer.js @@ -0,0 +1,2 @@ +/* es-module-lexer 2.3.1 */ +export var ImportType=function(A){return A[A.Static=1]="Static",A[A.Dynamic=2]="Dynamic",A[A.ImportMeta=3]="ImportMeta",A[A.StaticSourcePhase=4]="StaticSourcePhase",A[A.DynamicSourcePhase=5]="DynamicSourcePhase",A[A.StaticDeferPhase=6]="StaticDeferPhase",A[A.DynamicDeferPhase=7]="DynamicDeferPhase",A}({});const A=1===new Uint8Array(new Uint16Array([1]).buffer)[0];export function parse(C,g="@"){if(!E)return init.then(()=>parse(C));const I=C.length+1,w=(E.__heap_base.value||E.__heap_base)+4*I-E.memory.buffer.byteLength;w>0&&E.memory.grow(Math.ceil(w/65536));const o=E.sa(I-1);if("undefined"!=typeof Buffer?Buffer.from(E.memory.buffer,o,2*(I-1)).write(C,"utf16le"):(A?B:Q)(C,new Uint16Array(E.memory.buffer,o,I)),!E.parse())throw Object.assign(new Error(`Parse error ${g}:${C.slice(0,E.e()).split("\n").length}:${E.e()-C.lastIndexOf("\n",E.e()-1)}`),{idx:E.e()});const D=[],i=[];for(;E.ri();){const A=E.is(),Q=E.ie(),B=E.it(),g=E.ai(),I=E.id(),w=E.ss(),o=E.se();let i;E.ip()&&(i=G(C.slice(-1===I?A-1:A,-1===I?Q+1:Q)));let s=null;for(s=[],E.rsa();E.ra();){const A=E.aks(),Q=E.ake(),B=E.avs(),g=E.ave();s.push([J(C.slice(A,Q)),J(C.slice(B,g))])}0===s.length&&(s=null),D.push({n:i,t:B,s:A,e:Q,ss:w,se:o,d:I,a:g,at:s})}for(;E.re();){const A=E.es(),Q=E.ee(),B=E.els(),g=E.ele(),I=B<0?void 0:J(C.slice(B,g)),w=J(C.slice(A,Q));i.push({s:A,e:Q,ls:B,le:g,ss:E.ess(),n:w,ln:I})}function G(A){try{return(0,eval)(A)}catch(A){}}function J(A){if(!A)return A;const Q=A[0];return('"'===Q||"'"===Q)&&G(A)||A}return[D,i,!!E.f(),!!E.ms()]}function Q(A,Q){const B=A.length;let E=0;for(;E>>8}}function B(A,Q){const B=A.length;let E=0;for(;E{return A="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","undefined"!=typeof Buffer?Buffer.from(A,"base64"):Uint8Array.from(atob(A),A=>A.charCodeAt(0));var A};export const init=WebAssembly.compile(C()).then(WebAssembly.instantiate).then(({exports:A})=>{E=A});export const initSync=()=>{if(E)return;const A=new WebAssembly.Module(C());E=new WebAssembly.Instance(A).exports}; \ No newline at end of file diff --git a/node_modules/es-module-lexer/dist/lexer.minimal.asm.js b/node_modules/es-module-lexer/dist/lexer.minimal.asm.js new file mode 100644 index 0000000000000000000000000000000000000000..7a835ee14863dcc807a58773b7e612527547be23 --- /dev/null +++ b/node_modules/es-module-lexer/dist/lexer.minimal.asm.js @@ -0,0 +1,2 @@ +/* es-module-lexer (minimal) 2.3.1 */ +let 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>>8}},f="etaourceeferromsyncunctionlassvoyiedelecontininstantybreareturdebuggeawaithrwhileforifcatcfinallelsxportport";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(e){e=e|0;var a=0,r=0,c=0,t=0,n=0,b=0,k=0,o=0,w=0,g=0,p=0,y=0,m=0,O=0,T=0;y=s[398]|0;a=f[71]|0;f[68]=a;k=a;p=a;o=y;g=0;e:while(1){r=f[72]|0;t=o<<16>>16==y<<16>>16;c=g&e;b=a;while(1){n=b+2|0;if(b>>>0>=r>>>0){a=0;w=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:{w=100;break e}default:{}}if(c?se(a)|0:0){w=100;break e}}if(!(se(a)|0))break}b=n}f[71]=n;a:do{switch(a<<16>>16){case 101:{if((o<<16>>16==0?Q(n)|0:0)?(S(b+4|0,214,10)|0)==0:0){u();w=89}else w=89;break}case 105:{if(((s[b+4>>1]|0)==109?Q(n)|0:0)?(S(b+6|0,224,8)|0)==0:0){l();w=89}else w=89;break}case 99:{if((((s[b+4>>1]|0)==108?Q(n)|0:0)?(S(b+6|0,70,6)|0)==0:0)?L(s[b+12>>1]|0)|0:0){i[800]=1;w=89}else w=89;break}case 40:{b=f[69]|0;w=o&65535;f[b+(w<<3)>>2]=1;s[398]=o+1<<16>>16;f[b+(w<<3)+4>>2]=k;w=89;break}case 91:{b=f[69]|0;w=o&65535;f[b+(w<<3)>>2]=8;s[398]=o+1<<16>>16;f[b+(w<<3)+4>>2]=k;w=89;break}case 93:if(!(o<<16>>16)){ee();break a}else{s[398]=o+-1<<16>>16;w=89;break a}case 44:{r=s[397]|0;if((!(o<<16>>16==0|r<<16>>16==0)?(f[(f[69]|0)+((o&65535)+-1<<3)>>2]|0)==5:0)?(m=f[(f[70]|0)+((r&65535)+-1<<2)>>2]|0,(f[m+4>>2]|0)==0):0){f[m+4>>2]=p+2;f[71]=b+4;v(1)|0;w=f[71]|0;f[m+16>>2]=w;f[71]=w+-2;w=89}else w=89;break}case 41:{if(!(o<<16>>16)){ee();break a}w=o+-1<<16>>16;s[398]=w;r=s[397]|0;if(r<<16>>16!=0?(f[(f[69]|0)+((w&65535)<<3)>>2]|0)==5:0){c=f[(f[70]|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[397]=r+-1<<16>>16;w=89}else w=89;break}case 123:{w=f[62]|0;do{if((s[p>>1]|0)==41&(w|0)!=0?(f[w+12>>2]|0)==(p+2|0):0){r=f[63]|0;f[62]=r;if(!r){f[58]=0;break}else{f[r+32>>2]=0;break}}}while(0);b=f[69]|0;w=o&65535;f[b+(w<<3)>>2]=(i[800]|0)==0?2:6;s[398]=o+1<<16>>16;f[b+(w<<3)+4>>2]=k;i[800]=0;w=89;break}case 125:{if(!(o<<16>>16)){ee();break a}k=f[69]|0;w=o+-1<<16>>16;s[398]=w;if((f[k+((w&65535)<<3)>>2]|0)==4){d();w=89}else w=89;break}case 34:case 39:{A(a);w=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[69]|0)+((o&65535)<<3)+4>>2]|0)|0:0))w=62}else switch(c<<16>>16){case 46:if(((s[p+-2>>1]|0)+-48&65535)<10){w=62;break r}else break r;case 43:if((s[p+-2>>1]|0)==43){w=62;break r}else break r;case 45:if((s[p+-2>>1]|0)==45){w=62;break r}else break r;default:break r}}while(0);r:do{if((w|0)==62){w=0;if(o<<16>>16!=0?(O=f[69]|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?C(p+-4|0)|0:0)?B(f[O+(T<<3)+4>>2]|0,178,3)|0:0)break}else w=67;if((w|0)==67?(0,c<<16>>16==125):0){t=f[69]|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(!(h(p)|0)){switch(c<<16>>16){case 0:break r;case 47:{if(i[799]|0)break r;break}default:{}}w=f[64]|0;if((w|0?p>>>0>=(f[w>>2]|0)>>>0:0)?p>>>0<=(f[w+4>>2]|0)>>>0:0){I();i[799]=0;w=89;break a}t=f[3]|0;r=p;do{if(r>>>0<=t>>>0)break;r=r+-2|0;f[68]=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[68]=r}while(M(s[r>>1]|0)|0);if(q(r)|0){I();i[799]=0;w=89;break a}}i[799]=1;w=89;break a}}}while(0);I();i[799]=0;w=89;break a}}case 96:{b=f[69]|0;w=o&65535;f[b+(w<<3)+4>>2]=k;s[398]=o+1<<16>>16;f[b+(w<<3)>>2]=3;d();w=89;break}default:w=89}}while(0);if((w|0)==89){w=0;f[68]=f[71]}if(i[798]|0){a=0;break}r=f[68]|0;a:do{if((r|0)==(p|0))if(g&((s[398]|0)==y<<16>>16&e)){a=s[f[71]>>1]|0;if(se(a)|0)break e;else a=1}else a=g;else{if(a<<16>>16==47){a=(i[799]|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[398]|0;g=a;a=f[71]|0}if((w|0)==100)f[71]=n;return a|0}function k(){var e=0,a=0,r=0,c=0,t=0,b=0,k=0,o=0,w=0;w=n;n=n+10240|0;s[397]=0;s[398]=0;f[68]=f[2];i[799]=0;f[67]=0;i[798]=0;f[69]=w+2048;f[70]=w;i[800]=0;r=(f[3]|0)+-2|0;f[71]=r;e=r+(f[65]<<1)|0;f[72]=e;e:while(1){a=r+2|0;f[71]=a;if(r>>>0>=e>>>0){c=85;break}e=s[a>>1]|0;a:do{switch(e<<16>>16){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if(((s[398]|0)==0?Q(a)|0:0)?(S(r+4|0,214,10)|0)==0:0){u();c=84}else c=84;break}case 105:{if(((s[r+4>>1]|0)==109?Q(a)|0:0)?(S(r+6|0,224,8)|0)==0:0){l();c=84}else c=84;break}case 99:{if((((s[r+4>>1]|0)==108?Q(a)|0:0)?(S(r+6|0,70,6)|0)==0:0)?L(s[r+12>>1]|0)|0:0){i[800]=1;c=84}else c=84;break}case 40:{r=f[69]|0;c=s[398]|0;f[r+((c&65535)<<3)>>2]=1;a=f[68]|0;s[398]=c+1<<16>>16;f[r+((c&65535)<<3)+4>>2]=a;c=84;break}case 91:{r=f[69]|0;c=s[398]|0;f[r+((c&65535)<<3)>>2]=8;a=f[68]|0;s[398]=c+1<<16>>16;f[r+((c&65535)<<3)+4>>2]=a;c=84;break}case 93:{e=s[398]|0;if(!(e<<16>>16)){c=21;break e}s[398]=e+-1<<16>>16;c=84;break}case 44:{e=s[397]|0;if(((e<<16>>16!=0?(t=s[398]|0,t<<16>>16!=0):0)?(f[(f[69]|0)+((t&65535)+-1<<3)>>2]|0)==5:0)?(b=f[(f[70]|0)+((e&65535)+-1<<2)>>2]|0,(f[b+4>>2]|0)==0):0){f[b+4>>2]=(f[68]|0)+2;f[71]=r+4;v(1)|0;c=f[71]|0;f[b+16>>2]=c;f[71]=c+-2;c=84}else c=84;break}case 41:{e=s[398]|0;if(!(e<<16>>16)){c=29;break e}s[398]=e+-1<<16>>16;a=s[397]|0;if(a<<16>>16!=0?(f[(f[69]|0)+((e+-1&65535)<<3)>>2]|0)==5:0){e=f[(f[70]|0)+((a&65535)+-1<<2)>>2]|0;if(!(f[e+4>>2]|0))f[e+4>>2]=(f[68]|0)+2;f[e+12>>2]=r+4;s[397]=a+-1<<16>>16;c=84}else c=84;break}case 123:{e=f[68]|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+32>>2]=0;break}}}while(0);r=f[69]|0;c=s[398]|0;f[r+((c&65535)<<3)>>2]=(i[800]|0)==0?2:6;s[398]=c+1<<16>>16;f[r+((c&65535)<<3)+4>>2]=e;i[800]=0;c=84;break}case 125:{e=s[398]|0;if(!(e<<16>>16)){c=42;break e}c=f[69]|0;s[398]=e+-1<<16>>16;if((f[c+((e+-1&65535)<<3)>>2]|0)==4){d();c=84}else c=84;break}case 34:case 39:{A(e);c=84;break}case 47:switch(s[r+4>>1]|0){case 47:{F();break a}case 42:{x(1);break a}default:{e=f[68]|0;a=s[e>>1]|0;r:do{if(!($(a)|0))if(a<<16>>16==41){r=s[398]|0;if(!(K(f[(f[69]|0)+((r&65535)<<3)+4>>2]|0)|0))c=57}else c=56;else switch(a<<16>>16){case 46:if(((s[e+-2>>1]|0)+-48&65535)<10){c=56;break r}else break r;case 43:if((s[e+-2>>1]|0)==43){c=56;break r}else break r;case 45:if((s[e+-2>>1]|0)==45){c=56;break r}else break r;default:break r}}while(0);if((c|0)==56){r=s[398]|0;c=57}r:do{if((c|0)==57){c=0;if(r<<16>>16!=0?(k=f[69]|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?C(e+-4|0)|0:0)?B(f[k+(o<<3)+4>>2]|0,178,3)|0:0)break}else c=62;if((c|0)==62?(0,a<<16>>16==125):0){c=f[69]|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(!(h(e)|0)){switch(a<<16>>16){case 0:break r;case 47:{if(i[799]|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[799]=0;c=84;break a}r=f[3]|0;do{if(e>>>0<=r>>>0)break;e=e+-2|0;f[68]=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[68]=e}while(M(s[e>>1]|0)|0);if(q(e)|0){I();i[799]=0;c=84;break a}}i[799]=1;c=84;break a}}}while(0);I();i[799]=0;c=84;break a}}case 96:{r=f[69]|0;c=s[398]|0;f[r+((c&65535)<<3)+4>>2]=f[68];s[398]=c+1<<16>>16;f[r+((c&65535)<<3)>>2]=3;d();c=84;break}default:c=84}}while(0);if((c|0)==84){c=0;f[68]=f[71]}r=f[71]|0;e=f[72]|0}if((c|0)==21){ee();e=0}else if((c|0)==29){ee();e=0}else if((c|0)==42){ee();e=0}else if((c|0)==85)e=(i[798]|0)==0?(s[397]|s[398])<<16>>16==0:0;n=w;return e|0}function l(){var e=0,a=0,r=0,c=0,t=0,n=0;n=f[71]|0;f[71]=n+12;e=v(1)|0;r=f[71]|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,32,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[71]=r+10;e=v(1)|0;if(e<<16>>16==42){e=42;c=2;t=62;break}f[71]=r;r=0;t=28;break}if((S(r+2|0,22,10)|0)==0?L(s[r+12>>1]|0)|0:0){f[71]=r+12;e=v(1)|0;a=f[71]|0;if((a|0)!=(r+12|0)){if(e<<16>>16!=102){r=1;t=28;break}if(S(a+2|0,40,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[71]=r;r=0;t=28}else{a=r;e=115;r=0;t=60}}else{f[71]=r+2;switch((v(1)|0)<<16>>16){case 109:{e=f[71]|0;if(S(e+2|0,16,6)|0)break e;a=f[68]|0;if(!(N(a)|0)?(s[a>>1]|0)==46:0)break e;g(n,n,e+8|0,2);break e}case 115:{e=f[71]|0;if(S(e+2|0,22,10)|0)break e;a=f[68]|0;if(!(N(a)|0)?(s[a>>1]|0)==46:0)break e;f[71]=e+12;e=v(1)|0;r=1;t=28;break e}case 100:{e=f[71]|0;if(S(e+2|0,32,8)|0)break e;a=f[68]|0;if(!(N(a)|0)?(s[a>>1]|0)==46:0)break e;f[71]=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[69]|0;c=s[398]|0;f[a+((c&65535)<<3)>>2]=5;e=f[71]|0;s[398]=c+1<<16>>16;f[a+((c&65535)<<3)+4>>2]=e;if((s[f[68]>>1]|0)==46)break;f[71]=e+2;a=v(1)|0;g(n,f[71]|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[70]|0;n=s[397]|0;s[397]=n+1<<16>>16;f[c+((n&65535)<<2)>>2]=e;switch(a<<16>>16){case 39:{A(39);break}case 34:{A(34);break}case 96:{if(!(y()|0))t=37;break}default:t=37}if((t|0)==37){f[71]=(f[71]|0)+-2;break}e=(f[71]|0)+2|0;f[71]=e;switch((v(1)|0)<<16>>16){case 44:{f[71]=(f[71]|0)+2;v(1)|0;c=f[62]|0;f[c+4>>2]=e;n=f[71]|0;f[c+16>>2]=n;i[c+24>>0]=1;f[71]=n+-2;break e}case 41:{s[398]=(s[398]|0)+-1<<16>>16;n=f[62]|0;f[n+4>>2]=e;f[n+12>>2]=(f[71]|0)+2;i[n+24>>0]=1;s[397]=(s[397]|0)+-1<<16>>16;break e}default:{f[71]=(f[71]|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[71]|0;t=60;break}e=f[71]|0;if(s[398]|0){f[71]=e+-2;break}while(1){if(e>>>0>=(f[72]|0)>>>0)break;e=v(1)|0;if(!(ae(e)|0)){if(e<<16>>16==125){t=50;break}}else A(e);e=(f[71]|0)+2|0;f[71]=e}if((t|0)==50)f[71]=(f[71]|0)+2;c=(v(1)|0)<<16>>16==102;e=f[71]|0;if(c?S(e+2|0,40,6)|0:0){ee();break}f[71]=e+8;e=v(1)|0;if(ae(e)|0){w(n,e,0);break}else{ee();break}}}while(0);if((t|0)==60)if((a|0)==(n+12|0))f[71]=n+10;else{c=r;t=62}do{if((t|0)==62){if(!((e<<16>>16==42|(c|0)!=2)&(s[398]|0)==0)){f[71]=(f[71]|0)+-2;break}e=f[72]|0;a=f[71]|0;while(1){if(a>>>0>=e>>>0){t=69;break}r=s[a>>1]|0;if(ae(r)|0){t=67;break}t=a+2|0;f[71]=t;a=t}if((t|0)==67){w(n,r,c);break}else if((t|0)==69){ee();break}}}while(0);return}function u(){var e=0,a=0,r=0,i=0,c=0,t=0,n=0,k=0,l=0,u=0;k=f[71]|0;l=f[64]|0;f[71]=k+12;a=v(1)|0;e=f[71]|0;if(!((e|0)==(k+12|0)?!(O(a)|0):0))u=3;e:do{if((u|0)==3){a:do{switch(a<<16>>16){case 123:{f[71]=e+2;e=v(1)|0;r=f[71]|0;while(1){if(ae(e)|0){A(e);e=(f[71]|0)+2|0;f[71]=e}else{H(e)|0;e=f[71]|0}v(1)|0;e=p(r,e)|0;if(e<<16>>16==44){f[71]=(f[71]|0)+2;e=v(1)|0}a=r;r=f[71]|0;if(e<<16>>16==125){u=15;break}if((r|0)==(a|0)){u=12;break}if(r>>>0>(f[72]|0)>>>0){u=14;break}}if((u|0)==12){ee();break e}else if((u|0)==14){ee();break e}else if((u|0)==15){f[71]=r+2;u=49;break a}break}case 42:{f[71]=e+2;v(1)|0;u=f[71]|0;p(u,u)|0;u=49;break}case 100:{f[71]=e+14;switch((v(1)|0)<<16>>16){case 97:{a=f[71]|0;if((S(a+2|0,46,8)|0)==0?M(s[a+10>>1]|0)|0:0){f[71]=a+10;v(0)|0;u=21}break}case 102:{u=21;break}case 99:{a=f[71]|0;if(((S(a+2|0,68,8)|0)==0?(l=s[a+10>>1]|0,L(l)|0|l<<16>>16==123):0)?(f[71]=a+10,r=v(1)|0,r<<16>>16!=123):0){n=r;u=30}break}default:{}}r:do{if((u|0)==21?(i=f[71]|0,(S(i+2|0,54,14)|0)==0):0){a=s[i+16>>1]|0;if(!(L(a)|0))switch(a<<16>>16){case 40:case 42:break;default:break r}f[71]=i+16;a=v(1)|0;if(a<<16>>16==42){f[71]=(f[71]|0)+2;a=v(1)|0}if(a<<16>>16!=40){n=a;u=30}}}while(0);if((u|0)==30?(c=f[71]|0,H(n)|0,t=f[71]|0,t>>>0>c>>>0):0){E(e,e+14|0,c,t);f[71]=(f[71]|0)+-2;break e}E(e,e+14|0,0,0);f[71]=e+12;break e}case 97:{f[71]=e+10;v(0)|0;e=f[71]|0;u=34;break}case 102:{u=34;break}case 99:{if((S(e+2|0,68,8)|0)==0?D(s[e+10>>1]|0)|0:0){f[71]=e+10;u=v(1)|0;l=f[71]|0;H(u)|0;u=f[71]|0;E(l,u,l,u);f[71]=(f[71]|0)+-2;break e}f[71]=e+4;e=e+4|0;u=41;break}case 108:case 118:{u=41;break}default:break e}}while(0);if((u|0)==34){f[71]=e+16;e=v(1)|0;if(e<<16>>16==42){f[71]=(f[71]|0)+2;e=v(1)|0}l=f[71]|0;H(e)|0;u=f[71]|0;E(l,u,l,u);f[71]=(f[71]|0)+-2;break}else if((u|0)==41){f[71]=e+6;while(1){a=v(1)|0;e=f[71]|0;if(e>>>0>(f[72]|0)>>>0)break;a=P(a)|0;if((f[71]|0)==(e|0))break;if(a<<16>>16==61)a=b(1)|0;e=f[71]|0;if(a<<16>>16!=44)break;f[71]=e+2}f[71]=e+-2;break}else if((u|0)==49){u=(v(1)|0)<<16>>16==102;e=f[71]|0;if(u?(S(e+2|0,40,6)|0)==0:0){f[71]=e+8;w(k,v(1)|0,0);e=(l|0)==0?236:l+16|0;while(1){e=f[e>>2]|0;if(!e)break e;f[e+12>>2]=0;f[e+8>>2]=0;e=e+16|0}}f[71]=e+-2;break}}}while(0);return}function o(){var e=0,a=0,r=0,i=0,c=0,t=0,n=0;e=f[71]|0;c=(s[e>>1]|0)==123;f[71]=e+2;e=v(1)|0;t=c?125:93;e:while(1){if((t|0)==(e&65535|0))break;i=f[71]|0;if(i>>>0>(f[72]|0)>>>0)break;if((e<<16>>16==46?(s[i+2>>1]|0)==46:0)?(s[i+4>>1]|0)==46:0){f[71]=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){b(0)|0;f[71]=(f[71]|0)+2;a=i}else{if(ae(e)|0){A(e);f[71]=(f[71]|0)+2;a=i;break}if((e+-48&65535)>=10){H(e)|0;a=f[71]|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[71]=r;a=i}}while(0);e=v(1)|0;if(e<<16>>16==58){f[71]=(f[71]|0)+2;e=P(v(1)|0)|0;break}if(a>>>0>i>>>0)E(i,a,i,a)}else if(e<<16>>16==44){f[71]=i+2;e=v(1)|0;break a}else{e=P(e)|0;break}}while(0);if(e<<16>>16==61)e=b(0)|0;if(e<<16>>16!=44)break e;f[71]=(f[71]|0)+2;e=v(1)|0}}while(0)}return}function h(e){e=e|0;e:do{switch(s[e>>1]|0){case 100:switch(s[e+-2>>1]|0){case 105:{e=B(e+-4|0,76,2)|0;break e}case 108:{e=B(e+-4|0,80,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=B(e+-4|0,86,4)|0;break e}case 117:{e=B(e+-4|0,94,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=B(e+-8|0,106,6)|0;break e}case 112:{e=B(e+-8|0,118,2)|0;break e}default:{e=0;break e}}else e=0;break}case 107:{e=B(e+-2|0,122,4)|0;break}case 110:{if(z(e+-2|0,105)|0)e=1;else e=B(e+-2|0,130,5)|0;break}case 111:{e=z(e+-2|0,100)|0;break}case 114:{e=B(e+-2|0,140,7)|0;break}case 116:{e=B(e+-2|0,154,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=B(e+-4|0,162,3)|0;break e}default:{e=0;break e}}default:e=0}}while(0);return e|0}function w(e,a,r){e=e|0;a=a|0;r=r|0;var i=0,c=0;i=(f[71]|0)+2|0;switch(a<<16>>16){case 39:{A(39);c=5;break}case 34:{A(34);c=5;break}default:ee()}do{if((c|0)==5){g(e,i,f[71]|0,1);if((r|0)>0)f[(f[62]|0)+28>>2]=(r|0)==1?4:6;f[71]=(f[71]|0)+2;c=(v(0)|0)<<16>>16==119;a=f[71]|0;if(((c?(s[a+2>>1]|0)==105:0)?(s[a+4>>1]|0)==116:0)?(s[a+6>>1]|0)==104:0){f[71]=a+8;if((v(1)|0)<<16>>16!=123){f[71]=a;break}r=f[71]|0;i=r;e:while(1){f[71]=i+2;i=v(1)|0;switch(i<<16>>16){case 39:{A(39);f[71]=(f[71]|0)+2;i=v(1)|0;break}case 34:{A(34);f[71]=(f[71]|0)+2;i=v(1)|0;break}default:i=H(i)|0}if(i<<16>>16!=58){c=20;break}f[71]=(f[71]|0)+2;switch((v(1)|0)<<16>>16){case 39:{A(39);break}case 34:{A(34);break}default:{c=24;break e}}f[71]=(f[71]|0)+2;switch((v(1)|0)<<16>>16){case 125:{c=28;break e}case 44:break;default:{c=26;break e}}i=(f[71]|0)+2|0;f[71]=i}if((c|0)==20){f[71]=a;break}else if((c|0)==24){f[71]=a;break}else if((c|0)==26){f[71]=a;break}else if((c|0)==28){c=f[62]|0;f[c+16>>2]=r;f[c+12>>2]=(f[71]|0)+2;break}}f[71]=a+-2}}while(0);return}function d(){var e=0,a=0,r=0;a=f[72]|0;r=f[71]|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[71]=e;a=f[69]|0;r=s[398]|0;f[a+((r&65535)<<3)>>2]=4;s[398]=r+1<<16>>16;f[a+((r&65535)<<3)+4>>2]=e}else if((a|0)==7){f[71]=e;a=f[69]|0;r=(s[398]|0)+-1<<16>>16;s[398]=r;if((f[a+((r&65535)<<3)>>2]|0)!=3)ee()}else if((a|0)==10){f[71]=e;ee()}return}function v(e){e=e|0;var a=0,r=0,i=0;r=f[71]|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[71]|0;r=i+2|0;f[71]=r}while(i>>>0<(f[72]|0)>>>0);return a|0}function A(e){e=e|0;var a=0,r=0,i=0,c=0;c=f[72]|0;a=f[71]|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(se(r)|0){a=9;break}else a=i}if((a|0)==9){f[71]=i;ee()}else if((a|0)==10)f[71]=i;return}function C(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 g(e,a,r,s){e=e|0;a=a|0;r=r|0;s=s|0;var c=0,t=0;t=f[66]|0;f[66]=t+36;c=f[62]|0;f[((c|0)==0?232:c+32|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;return}function p(e,a){e=e|0;a=a|0;var r=0,i=0,c=0,t=0;r=f[71]|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[71]=r+4;r=v(1)|0;e=f[71]|0;if(ae(r)|0){A(r);a=(f[71]|0)+2|0;f[71]=a}else{H(r)|0;a=f[71]|0}i=v(1)|0;r=f[71]|0}if((r|0)!=(e|0))E(e,a,c,t);return i|0}function y(){var e=0,a=0,r=0,i=0;i=f[71]|0;r=f[72]|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[71]=i;e=0}else if((a|0)==8){f[71]=e;e=1}return e|0}function m(){var e=0,a=0,r=0;r=f[72]|0;a=f[71]|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[71]=e;ee();e=0}else if((a|0)==7){f[71]=e;e=93}return e|0}function I(){var e=0,a=0;e:while(1){e=f[71]|0;f[71]=e+2;if(e>>>0>=(f[72]|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[71]=e+4;break}default:{}}}if((a|0)==7)ee();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=B(e+-2|0,188,4)|0;break}case 121:{e=B(e+-2|0,196,6)|0;break}case 101:{e=B(e+-2|0,208,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[71]|0)+2|0;f[71]=c;r=f[72]|0;while(1){a=c+2|0;if(c>>>0>=r>>>0)break;i=s[a>>1]|0;if(!e?se(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[71]=a;a=c+4|0}f[71]=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){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 j(e){e=e|0;var a=0,r=0;r=n;n=n+16|0;f[r>>2]=0;f[65]=e;a=f[3]|0;s[a+(e<<1)>>1]=0;f[r>>2]=a+(e<<1)+2;f[66]=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 B(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=T(e+(0-r<<1)|0)|0;else i=0;return i|0}function E(e,a,r,i){e=e|0;a=a|0;r=r|0;i=i|0;var s=0,c=0;s=f[66]|0;f[66]=s+20;c=f[64]|0;f[((c|0)==0?236:c+16|0)>>2]=s;f[64]=s;f[s>>2]=e;f[s+4>>2]=a;f[s+8>>2]=r;f[s+12>>2]=i;f[s+16>>2]=0;return}function P(e){e=e|0;var a=0;switch(e<<16>>16){case 91:case 123:{o();f[71]=(f[71]|0)+2;break}default:{a=f[71]|0;H(e)|0;e=f[71]|0;if(e>>>0>a>>>0)E(a,e,a,e)}}return v(1)|0}function q(e){e=e|0;switch(s[e>>1]|0){case 107:{e=B(e+-2|0,122,4)|0;break}case 101:{if((s[e+-2>>1]|0)==117)e=B(e+-4|0,94,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[72]|0;r=f[71]|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[71]=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[71]|0)+2|0;f[71]=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(!(B(e,168,5)|0)?!(B(e,178,3)|0):0)e=B(e,184,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(e){e=e|0;if((f[3]|0)==(e|0))e=1;else e=T(e+-2|0)|0;return e|0}function R(){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 V(){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 W(){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 X(){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 Y(){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 Z(){var e=0;e=f[60]|0;e=f[((e|0)==0?232:e+32|0)>>2]|0;f[60]=e;return(e|0)!=0|0}function _(){var e=0;e=f[61]|0;e=f[((e|0)==0?236:e+16|0)>>2]|0;f[61]=e;return(e|0)!=0|0}function ee(){i[798]=1;f[67]=(f[71]|0)-(f[3]|0)>>1;f[71]=(f[72]|0)+2;return}function ae(e){e=e|0;return e<<16>>16==39|e<<16>>16==34|0}function re(){return(f[(f[60]|0)+8>>2]|0)-(f[3]|0)>>1|0}function ie(){return(f[(f[61]|0)+4>>2]|0)-(f[3]|0)>>1|0}function se(e){e=e|0;return e<<16>>16==13|e<<16>>16==10|0}function fe(){return(f[f[60]>>2]|0)-(f[3]|0)>>1|0}function ce(){return(f[f[61]>>2]|0)-(f[3]|0)>>1|0}function te(){return c[(f[60]|0)+24>>0]|0|0}function ne(e){e=e|0;f[3]=e;return}function be(){return f[(f[60]|0)+28>>2]|0}function ke(){return f[67]|0}function le(e,a){e=e|0;a=a|0;n=e+a+15&-16;return a}return{su:le,ai:X,e:ke,ee:ie,ele:R,els:W,es:ce,id:J,ie:Y,ip:te,is:fe,it:be,p:k,re:_,ri:Z,sa:j,se:V,ses:ne,ss:re}}("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;0,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,n:c,ln:f})}return[w,d];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=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})} diff --git a/node_modules/es-module-lexer/dist/lexer.minimal.cjs b/node_modules/es-module-lexer/dist/lexer.minimal.cjs new file mode 100644 index 0000000000000000000000000000000000000000..1ce30d9dc6f5c979714a18705cb91b8cf6e455ec --- /dev/null +++ b/node_modules/es-module-lexer/dist/lexer.minimal.cjs @@ -0,0 +1 @@ +"use strict";exports.initSync=exports.init=exports.ImportType=void 0,exports.parse=parse;var ImportType=exports.ImportType=function(A){return A[A.Static=1]="Static",A[A.Dynamic=2]="Dynamic",A[A.ImportMeta=3]="ImportMeta",A[A.StaticSourcePhase=4]="StaticSourcePhase",A[A.DynamicSourcePhase=5]="DynamicSourcePhase",A[A.StaticDeferPhase=6]="StaticDeferPhase",A[A.DynamicDeferPhase=7]="DynamicDeferPhase",A}({});const A=1===new Uint8Array(new Uint16Array([1]).buffer)[0];function parse(C,g="@"){if(!E)return init.then(()=>parse(C));const I=C.length+1,i=(E.__heap_base.value||E.__heap_base)+4*I-E.memory.buffer.byteLength;i>0&&E.memory.grow(Math.ceil(i/65536));const w=E.sa(I-1);if("undefined"!=typeof Buffer?Buffer.from(E.memory.buffer,w,2*(I-1)).write(C,"utf16le"):(A?B:Q)(C,new Uint16Array(E.memory.buffer,w,I)),!E.parse())throw Object.assign(new Error(`Parse error ${g}:${C.slice(0,E.e()).split("\n").length}:${E.e()-C.lastIndexOf("\n",E.e()-1)}`),{idx:E.e()});const G=[],D=[];for(;E.ri();){const A=E.is(),Q=E.ie(),B=E.it(),g=E.ai(),I=E.id(),i=E.ss(),w=E.se();let D;E.ip()&&(D=o(C.slice(-1===I?A-1:A,-1===I?Q+1:Q)));let J=null;G.push({n:D,t:B,s:A,e:Q,ss:i,se:w,d:I,a:g,at:J})}for(;E.re();){const A=E.es(),Q=E.ee(),B=E.els(),g=E.ele(),I=B<0?void 0:J(C.slice(B,g)),i=J(C.slice(A,Q));D.push({s:A,e:Q,ls:B,le:g,n:i,ln:I})}function o(A){try{return(0,eval)(A)}catch(A){}}function J(A){if(!A)return A;const Q=A[0];return('"'===Q||"'"===Q)&&o(A)||A}return[G,D]}function Q(A,Q){const B=A.length;let E=0;for(;E>>8}}function B(A,Q){const B=A.length;let E=0;for(;E{return A="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QCADIAQ2AhwLQfAJQfAJLwEAIgRBAWo7AQBBgAooAgAgBEECdGogAzYCAAJAIABBIkYgAEEnRnJFBEACQCAAQeAARw0AQYwKKAIAIQYgASEAA0AgACICIAZPDQECQAJAIABBAmoiAC8BACIHQdwAaw4FAAICAgUBCyACQQRqIQAMAQsgB0EkRw0AIAIvAQRB+wBHDQALC0GICiABQQJrNgIADwsgABAbQYgKKAIAIQALQYgKIABBAmoiADYCAAJAAkACQEEBEBpBKWsOBAECAgACC0GICkGICigCAEECajYCAEEBEBoaIAMgADYCBEGICigCACEAIANBAToAGCADIAA2AhAMCAtB8gkgBTsBACADIAA2AgRBiAooAgAhACADQQE6ABggAyAAQQJqNgIMQfAJIAQ7AQAPC0GICkGICigCAEECazYCAA8LIAdFIABB+wBHckUEQEGICigCACEAQfIJLwEADQZBjAooAgAhAQNAAkACQCAAIAFJBEBBARAaIgBBIkYgAEEnRnINASAAQf0ARw0CQYgKQYgKKAIAQQJqNgIAC0EBEBohAUGICigCACEAIAFB5gBGBEAgAEECakGSCEEGEBYNBwtBiAogAEEIajYCAEEBEBoiAEEiRyAAQSdHcQ0GIAYgAEEAEDAPCyAAEBsLQYgKQYgKKAIAQQJqIgA2AgAMAAsACwJAAkAgAEEnaw4EAwEBAwALIABBIkYNAgtBiAooAgAhBAsgBCAJRw0AQYgKIARBAms2AgAPCyAAQSpHIAVxDQJB8gkvAQANAkGICigCACEAQYwKKAIAIQIDQCAAIAJPDQEgAC8BACIBQSdHIAFBIkdxBEBBiAogAEECaiIANgIADAEFIAYgASADEDAPCwALAAsQKQsPC0GICkGICigCAEECazYCAA8LQYgKIABBAms2AgALCwAgAEGfgIAEEDMLfQEEf0GMCigCACEDQYgKKAIAIQEDQAJAAkACQCABLwEAIgJBL0YEQCABLwECIgFBKkcEQCABQS9GDQJBLw8LIAAQHQwCCyAABEAgAhAZDQIMAwsgAhAlDQEMAgsQHAtBiApBiAooAgAiBEECaiIBNgIAIAMgBEsNAQsLIAILhgEBBH9BiAooAgAhAUGMCigCACEEAkADQAJAIAEiAkECaiEBIAIgBE8NACABLwEAIgMgAEYNAiADQdwARwRAIANBCmsOBAECAgECCyACQQRqIQEgAi8BBEENRw0BIAJBBmogASACLwEGQQpGGyEBDAELC0GICiABNgIAECkPC0GICiABNgIAC0MBA39BiAooAgAhAEGMCigCACECA0ACQCAAQQJqIQEgACACTw0AIAEhACABLwEAQQprDgQAAQEAAQsLQYgKIAE2AgALcAEEf0GICigCAEECaiEBQYwKKAIAIQQCQANAIAEiAkECaiEBIAIgBE8NASABLwEAIQMCQCAARQRAIANBKkYNASADQQprDgQDAgIDAgsgA0EqRw0BCyACLwEEQS9HDQALIAJBBGohAQtBiAogATYCAAtuAQF/AkAgAEEpRyAAQShrQf//A3FBB0lxIABBIWsiAUEFTUEAQQEgAXRBMXEbckUEQCAAQTprIgFB//8DcUElT0K/gICAoAIgAa2Ip0EBcUVyDQELQQEPCyAAQf0ARyAAQfsAa0H//wNxQQRJcQsuAQF/QQEhAQJAIABBiglBBRAhDQAgAEGUCUEDECENACAAQZoJQQIQISEBCyABC28BAX8CfyAALwEAIgEQGSABQSlGciABQf0ARnJFBEBBACABQd0ARw0BGgsDQAJAIABBkIsETQ0AIAEQGUUNACAAQQJrIgAvAQAhAQwBCwtBASABQSlGIAFB3QBGciABQf0ARnINABogARArQQFzCws+AQJ/AkAgACACQQF0IgJrIgRBAmoiAEGQiwRJDQAgACABIAIQFg0AIABBkIsERgRAQQEPCyAEECohAwsgAwuDAQECf0EBIQICQAJAAkACQAJAAkAgAC8BACIBQTtrDgQFBAQBAAsCQCABQeUAaw4EAwQEAgALIAFBKUYNBCABQfkARw0DIABBAmtBpglBBhAhDwsgAEECay8BAEE9Rg8LIABBAmtBnglBBBAhDwsgAEECa0GyCUEDECEPC0EAIQILIAILqgMBAn8CQAJAAkACQAJAAkACQAJAAkACQCAALwEAQeQAaw4UAAECCQkJCQMJCQQFCQkGCQcJCQgJCwJAAkAgAEECay8BAEHpAGsOBAAKCgEKCyAAQQRrQa4IQQIQIQ8LIABBBGtBsghBAxAhDwsCQAJAAkAgAEECay8BAEHzAGsOAwABAgoLIABBBGsvAQAiAUHhAEcEQCABQewARw0KIABBBmtB5QAQMg8LIABBBmtB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","undefined"!=typeof Buffer?Buffer.from(A,"base64"):Uint8Array.from(atob(A),A=>A.charCodeAt(0));var A},init=exports.init=WebAssembly.compile(C()).then(WebAssembly.instantiate).then(({exports:A})=>{E=A}),initSync=()=>{if(E)return;const A=new WebAssembly.Module(C());E=new WebAssembly.Instance(A).exports};exports.initSync=initSync; \ No newline at end of file diff --git a/node_modules/es-module-lexer/dist/lexer.minimal.js b/node_modules/es-module-lexer/dist/lexer.minimal.js new file mode 100644 index 0000000000000000000000000000000000000000..7e2da5a35607a1f541665d8bab619bb484a65d41 --- /dev/null +++ b/node_modules/es-module-lexer/dist/lexer.minimal.js @@ -0,0 +1,2 @@ +/* es-module-lexer 2.3.1 */ +export var ImportType=function(A){return A[A.Static=1]="Static",A[A.Dynamic=2]="Dynamic",A[A.ImportMeta=3]="ImportMeta",A[A.StaticSourcePhase=4]="StaticSourcePhase",A[A.DynamicSourcePhase=5]="DynamicSourcePhase",A[A.StaticDeferPhase=6]="StaticDeferPhase",A[A.DynamicDeferPhase=7]="DynamicDeferPhase",A}({});const A=1===new Uint8Array(new Uint16Array([1]).buffer)[0];export function parse(C,g="@"){if(!E)return init.then(()=>parse(C));const I=C.length+1,w=(E.__heap_base.value||E.__heap_base)+4*I-E.memory.buffer.byteLength;w>0&&E.memory.grow(Math.ceil(w/65536));const i=E.sa(I-1);if("undefined"!=typeof Buffer?Buffer.from(E.memory.buffer,i,2*(I-1)).write(C,"utf16le"):(A?B:Q)(C,new Uint16Array(E.memory.buffer,i,I)),!E.parse())throw Object.assign(new Error(`Parse error ${g}:${C.slice(0,E.e()).split("\n").length}:${E.e()-C.lastIndexOf("\n",E.e()-1)}`),{idx:E.e()});const G=[],D=[];for(;E.ri();){const A=E.is(),Q=E.ie(),B=E.it(),g=E.ai(),I=E.id(),w=E.ss(),i=E.se();let D;E.ip()&&(D=o(C.slice(-1===I?A-1:A,-1===I?Q+1:Q)));let J=null;0,G.push({n:D,t:B,s:A,e:Q,ss:w,se:i,d:I,a:g,at:J})}for(;E.re();){const A=E.es(),Q=E.ee(),B=E.els(),g=E.ele(),I=B<0?void 0:J(C.slice(B,g)),w=J(C.slice(A,Q));D.push({s:A,e:Q,ls:B,le:g,n:w,ln:I})}function o(A){try{return(0,eval)(A)}catch(A){}}function J(A){if(!A)return A;const Q=A[0];return('"'===Q||"'"===Q)&&o(A)||A}return[G,D]}function Q(A,Q){const B=A.length;let E=0;for(;E>>8}}function B(A,Q){const B=A.length;let E=0;for(;E{return A="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QCADIAQ2AhwLQfAJQfAJLwEAIgRBAWo7AQBBgAooAgAgBEECdGogAzYCAAJAIABBIkYgAEEnRnJFBEACQCAAQeAARw0AQYwKKAIAIQYgASEAA0AgACICIAZPDQECQAJAIABBAmoiAC8BACIHQdwAaw4FAAICAgUBCyACQQRqIQAMAQsgB0EkRw0AIAIvAQRB+wBHDQALC0GICiABQQJrNgIADwsgABAbQYgKKAIAIQALQYgKIABBAmoiADYCAAJAAkACQEEBEBpBKWsOBAECAgACC0GICkGICigCAEECajYCAEEBEBoaIAMgADYCBEGICigCACEAIANBAToAGCADIAA2AhAMCAtB8gkgBTsBACADIAA2AgRBiAooAgAhACADQQE6ABggAyAAQQJqNgIMQfAJIAQ7AQAPC0GICkGICigCAEECazYCAA8LIAdFIABB+wBHckUEQEGICigCACEAQfIJLwEADQZBjAooAgAhAQNAAkACQCAAIAFJBEBBARAaIgBBIkYgAEEnRnINASAAQf0ARw0CQYgKQYgKKAIAQQJqNgIAC0EBEBohAUGICigCACEAIAFB5gBGBEAgAEECakGSCEEGEBYNBwtBiAogAEEIajYCAEEBEBoiAEEiRyAAQSdHcQ0GIAYgAEEAEDAPCyAAEBsLQYgKQYgKKAIAQQJqIgA2AgAMAAsACwJAAkAgAEEnaw4EAwEBAwALIABBIkYNAgtBiAooAgAhBAsgBCAJRw0AQYgKIARBAms2AgAPCyAAQSpHIAVxDQJB8gkvAQANAkGICigCACEAQYwKKAIAIQIDQCAAIAJPDQEgAC8BACIBQSdHIAFBIkdxBEBBiAogAEECaiIANgIADAEFIAYgASADEDAPCwALAAsQKQsPC0GICkGICigCAEECazYCAA8LQYgKIABBAms2AgALCwAgAEGfgIAEEDMLfQEEf0GMCigCACEDQYgKKAIAIQEDQAJAAkACQCABLwEAIgJBL0YEQCABLwECIgFBKkcEQCABQS9GDQJBLw8LIAAQHQwCCyAABEAgAhAZDQIMAwsgAhAlDQEMAgsQHAtBiApBiAooAgAiBEECaiIBNgIAIAMgBEsNAQsLIAILhgEBBH9BiAooAgAhAUGMCigCACEEAkADQAJAIAEiAkECaiEBIAIgBE8NACABLwEAIgMgAEYNAiADQdwARwRAIANBCmsOBAECAgECCyACQQRqIQEgAi8BBEENRw0BIAJBBmogASACLwEGQQpGGyEBDAELC0GICiABNgIAECkPC0GICiABNgIAC0MBA39BiAooAgAhAEGMCigCACECA0ACQCAAQQJqIQEgACACTw0AIAEhACABLwEAQQprDgQAAQEAAQsLQYgKIAE2AgALcAEEf0GICigCAEECaiEBQYwKKAIAIQQCQANAIAEiAkECaiEBIAIgBE8NASABLwEAIQMCQCAARQRAIANBKkYNASADQQprDgQDAgIDAgsgA0EqRw0BCyACLwEEQS9HDQALIAJBBGohAQtBiAogATYCAAtuAQF/AkAgAEEpRyAAQShrQf//A3FBB0lxIABBIWsiAUEFTUEAQQEgAXRBMXEbckUEQCAAQTprIgFB//8DcUElT0K/gICAoAIgAa2Ip0EBcUVyDQELQQEPCyAAQf0ARyAAQfsAa0H//wNxQQRJcQsuAQF/QQEhAQJAIABBiglBBRAhDQAgAEGUCUEDECENACAAQZoJQQIQISEBCyABC28BAX8CfyAALwEAIgEQGSABQSlGciABQf0ARnJFBEBBACABQd0ARw0BGgsDQAJAIABBkIsETQ0AIAEQGUUNACAAQQJrIgAvAQAhAQwBCwtBASABQSlGIAFB3QBGciABQf0ARnINABogARArQQFzCws+AQJ/AkAgACACQQF0IgJrIgRBAmoiAEGQiwRJDQAgACABIAIQFg0AIABBkIsERgRAQQEPCyAEECohAwsgAwuDAQECf0EBIQICQAJAAkACQAJAAkAgAC8BACIBQTtrDgQFBAQBAAsCQCABQeUAaw4EAwQEAgALIAFBKUYNBCABQfkARw0DIABBAmtBpglBBhAhDwsgAEECay8BAEE9Rg8LIABBAmtBnglBBBAhDwsgAEECa0GyCUEDECEPC0EAIQILIAILqgMBAn8CQAJAAkACQAJAAkACQAJAAkACQCAALwEAQeQAaw4UAAECCQkJCQMJCQQFCQkGCQcJCQgJCwJAAkAgAEECay8BAEHpAGsOBAAKCgEKCyAAQQRrQa4IQQIQIQ8LIABBBGtBsghBAxAhDwsCQAJAAkAgAEECay8BAEHzAGsOAwABAgoLIABBBGsvAQAiAUHhAEcEQCABQewARw0KIABBBmtB5QAQMg8LIABBBmtB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","undefined"!=typeof Buffer?Buffer.from(A,"base64"):Uint8Array.from(atob(A),A=>A.charCodeAt(0));var A};export const init=WebAssembly.compile(C()).then(WebAssembly.instantiate).then(({exports:A})=>{E=A});export const initSync=()=>{if(E)return;const A=new WebAssembly.Module(C());E=new WebAssembly.Instance(A).exports}; \ No newline at end of file diff --git a/node_modules/es-module-lexer/lexer.js b/node_modules/es-module-lexer/lexer.js new file mode 100644 index 0000000000000000000000000000000000000000..fae6cab4ef83cbb3ff783eb137e8a32653880e75 --- /dev/null +++ b/node_modules/es-module-lexer/lexer.js @@ -0,0 +1,1009 @@ +let source, pos, end, + openTokenDepth, + lastTokenPos, + openTokenPosStack, + openClassPosStack, + curDynamicImport, + templateStackDepth, + facade, + lastSlashWasDivision, + nextBraceIsClass, + templateDepth, + templateStack, + imports, + exports, + exportStatementStart, + name; + +function addImport (ss, s, e, d) { + const impt = { ss, se: d === -2 ? e : d === -1 ? e + 1 : 0, s, e, d, a: -1, n: undefined, at: null }; + imports.push(impt); + return impt; +} + +function addExport (s, e, ls, le) { + exports.push({ + s, + e, + ls, + le, + ss: exportStatementStart, + n: s[0] === '"' ? readString(s, '"') : s[0] === "'" ? readString(s, "'") : source.slice(s, e), + ln: ls[0] === '"' ? readString(ls, '"') : ls[0] === "'" ? readString(ls, "'") : source.slice(ls, le) + }); +} + +function readName (impt) { + let { d, s } = impt; + if (d !== -1) + s++; + impt.n = readString(s, source.charCodeAt(s - 1)); +} + +// Note: parsing is based on the _assumption_ that the source is already valid +export function parse (_source, _name) { + openTokenDepth = 0; + curDynamicImport = null; + templateDepth = -1; + lastTokenPos = -1; + lastSlashWasDivision = false; + templateStack = Array(1024); + templateStackDepth = 0; + openTokenPosStack = Array(1024); + openClassPosStack = Array(1024); + nextBraceIsClass = false; + facade = true; + name = _name || '@'; + + imports = []; + exports = []; + + source = _source; + pos = -1; + end = source.length - 1; + let ch = 0; + + // start with a pure "module-only" parser + m: while (pos++ < end) { + ch = source.charCodeAt(pos); + + if (ch === 32 || ch < 14 && ch > 8) + continue; + + switch (ch) { + case 101/*e*/: + if (openTokenDepth === 0 && keywordStart(pos) && source.startsWith('xport', pos + 1)) { + tryParseExportStatement(); + // export might have been a non-pure declaration + if (!facade) { + lastTokenPos = pos; + break m; + } + } + break; + case 105/*i*/: + if (keywordStart(pos) && source.startsWith('mport', pos + 1)) + tryParseImportStatement(); + break; + case 59/*;*/: + break; + case 47/*/*/: { + const next_ch = source.charCodeAt(pos + 1); + if (next_ch === 47/*/*/) { + lineComment(); + // dont update lastToken + continue; + } + else if (next_ch === 42/***/) { + blockComment(true); + // dont update lastToken + continue; + } + // fallthrough + } + default: + // as soon as we hit a non-module token, we go to main parser + facade = false; + pos--; + break m; + } + lastTokenPos = pos; + } + + while (pos++ < end) { + ch = source.charCodeAt(pos); + + if (ch === 32 || ch < 14 && ch > 8) + continue; + + switch (ch) { + case 101/*e*/: + if (openTokenDepth === 0 && keywordStart(pos) && source.startsWith('xport', pos + 1)) + tryParseExportStatement(); + break; + case 105/*i*/: + if (keywordStart(pos) && source.startsWith('mport', pos + 1)) + tryParseImportStatement(); + break; + case 99/*c*/: + if (keywordStart(pos) && source.startsWith('lass', pos + 1) && isBrOrWs(source.charCodeAt(pos + 5))) + nextBraceIsClass = true; + break; + case 40/*(*/: + openTokenPosStack[openTokenDepth++] = lastTokenPos; + break; + case 41/*)*/: + if (openTokenDepth === 0) + syntaxError(); + openTokenDepth--; + if (curDynamicImport && curDynamicImport.d === openTokenPosStack[openTokenDepth]) { + if (curDynamicImport.e === 0) + curDynamicImport.e = pos; + curDynamicImport.se = pos; + curDynamicImport = null; + } + break; + case 91/*[*/: + openTokenPosStack[openTokenDepth++] = lastTokenPos; + break; + case 93/*]*/: + if (openTokenDepth === 0) + syntaxError(); + openTokenDepth--; + break; + case 44/*,*/: + if (curDynamicImport && curDynamicImport.e === 0 && curDynamicImport.d === openTokenPosStack[openTokenDepth - 1]) { + curDynamicImport.e = lastTokenPos + 1; + pos++; + commentWhitespace(true); + curDynamicImport.a = pos; + pos--; + } + break; + case 123/*{*/: + // dynamic import followed by { is not a dynamic import (so remove) + // this is a sneaky way to get around { import () {} } v { import () } + // block / object ambiguity without a parser (assuming source is valid) + // se marks the closing paren; e is moved before the first comma for import(a, b) + if (source.charCodeAt(lastTokenPos) === 41/*)*/ && imports.length && imports[imports.length - 1].se === lastTokenPos) { + imports.pop(); + } + openClassPosStack[openTokenDepth] = nextBraceIsClass; + nextBraceIsClass = false; + openTokenPosStack[openTokenDepth++] = lastTokenPos; + break; + case 125/*}*/: + if (openTokenDepth === 0) + syntaxError(); + if (openTokenDepth-- === templateDepth) { + templateDepth = templateStack[--templateStackDepth]; + templateString(); + } + else { + if (templateDepth !== -1 && openTokenDepth < templateDepth) + syntaxError(); + } + break; + case 39/*'*/: + case 34/*"*/: + stringLiteral(ch); + break; + case 47/*/*/: { + const next_ch = source.charCodeAt(pos + 1); + if (next_ch === 47/*/*/) { + lineComment(); + // dont update lastToken + continue; + } + else if (next_ch === 42/***/) { + blockComment(true); + // dont update lastToken + continue; + } + else { + // Division / regex ambiguity handling based on checking backtrack analysis of: + // - what token came previously (lastToken) + // - if a closing brace or paren, what token came before the corresponding + // opening brace or paren (lastOpenTokenIndex) + const lastToken = source.charCodeAt(lastTokenPos); + const lastExport = exports[exports.length - 1]; + if (isExpressionPunctuator(lastToken) && + !(lastToken === 46/*.*/ && (source.charCodeAt(lastTokenPos - 1) >= 48/*0*/ && source.charCodeAt(lastTokenPos - 1) <= 57/*9*/)) && + !(lastToken === 43/*+*/ && source.charCodeAt(lastTokenPos - 1) === 43/*+*/) && !(lastToken === 45/*-*/ && source.charCodeAt(lastTokenPos - 1) === 45/*-*/) || + lastToken === 41/*)*/ && isParenKeyword(openTokenPosStack[openTokenDepth]) || + openTokenDepth > 0 && lastToken === 102/*f*/ && source.charCodeAt(lastTokenPos - 1) === 111/*o*/ && isForOfBinding(lastTokenPos - 2) && isForParen(openTokenPosStack[openTokenDepth - 1]) || + lastToken === 125/*}*/ && (isExpressionTerminator(openTokenPosStack[openTokenDepth]) || openClassPosStack[openTokenDepth]) || + lastToken === 47/*/*/ && lastSlashWasDivision || + isExpressionKeyword(lastTokenPos) || + !lastToken) { + regularExpression(); + lastSlashWasDivision = false; + } + else if (lastExport && lastTokenPos >= lastExport.s && lastTokenPos <= lastExport.e) { + // export default /some-regexp/ + regularExpression(); + lastSlashWasDivision = false; + } + else { + lastSlashWasDivision = true; + } + } + break; + } + case 96/*`*/: + templateString(); + break; + } + lastTokenPos = pos; + } + + if (templateDepth !== -1 || openTokenDepth) + syntaxError(); + + return [imports, exports, facade]; +} + +function tryParseImportStatement () { + const startPos = pos; + + pos += 6; + + let ch = commentWhitespace(true); + + switch (ch) { + // dynamic import + case 40/*(*/: + openTokenPosStack[openTokenDepth++] = startPos; + if (source.charCodeAt(lastTokenPos) === 46/*.*/) + return; + // dynamic import indicated by positive d + // try parse a string, to record a safe dynamic import string + pos++; + ch = commentWhitespace(true); + // The specifier start is recorded after leading whitespace/comments so it + // points at the literal, matching the C lexer (src/lexer.c). + const impt = addImport(startPos, pos, 0, startPos); + curDynamicImport = impt; + if (ch === 39/*'*/ || ch === 34/*"*/) { + stringLiteral(ch); + } + else if (ch === 96/*`*/ && noSubstitutionTemplate()) { + // A no-substitution template literal is a constant string, so it is a + // safe specifier exactly like a quoted one. An interpolated template + // leaves noSubstitutionTemplate() false and falls through to the open- + // token machinery, which records the import as unsafe (n stays unset). + } + else { + pos--; + return; + } + pos++; + ch = commentWhitespace(true); + if (ch === 44/*,*/) { + impt.e = pos; + pos++; + ch = commentWhitespace(true); + impt.a = pos; + readName(impt); + pos--; + } + else if (ch === 41/*)*/) { + openTokenDepth--; + impt.e = pos; + impt.se = pos; + readName(impt); + } + else { + pos--; + } + return; + // import.meta + case 46/*.*/: + pos++; + ch = commentWhitespace(true); + // import.meta indicated by d === -2 + if (ch === 109/*m*/ && source.startsWith('eta', pos + 1) && source.charCodeAt(lastTokenPos) !== 46/*.*/) + addImport(startPos, startPos, pos + 4, -2); + return; + + default: + // no space after "import" -> not an import keyword + if (pos === startPos + 6) + break; + case 34/*"*/: + case 39/*'*/: + case 123/*{*/: + case 42/***/: + // import statement only permitted at base-level + if (openTokenDepth !== 0) { + pos--; + return; + } + while (pos < end) { + ch = source.charCodeAt(pos); + if (ch === 39/*'*/ || ch === 34/*"*/) { + readImportString(startPos, ch); + return; + } + pos++; + } + syntaxError(); + } +} + +function tryParseExportStatement () { + const sStartPos = pos; + const prevExport = exports.length; + + pos += 6; + + const curPos = pos; + + let ch = commentWhitespace(true); + + // Only commit the statement start once this is a real export: skipExpression + // re-enters here for an `export`-prefixed identifier (e.g. `exports`) in an + // initializer, which would otherwise clobber the start for later bindings. + if (pos === curPos && !isPunctuator(ch)) + return; + + exportStatementStart = sStartPos; + + switch (ch) { + // export default ... + case 100/*d*/: + addExport(pos, pos + 7, -1, -1); + return; + + // export async? function*? name () { + case 97/*a*/: + pos += 5; + commentWhitespace(true); + // fallthrough + case 102/*f*/: + pos += 8; + ch = commentWhitespace(true); + if (ch === 42/***/) { + pos++; + ch = commentWhitespace(true); + } + const startPos = pos; + ch = readToWsOrPunctuator(ch); + addExport(startPos, pos, startPos, pos); + pos--; + return; + + // export class name ... + case 99/*c*/: + if (source.startsWith('lass', pos + 1) && isBrOrWsOrPunctuatorNotDot(source.charCodeAt(pos + 5))) { + pos += 5; + ch = commentWhitespace(true); + const startPos = pos; + ch = readToWsOrPunctuator(ch); + addExport(startPos, pos, startPos, pos); + pos--; + return; + } + pos += 2; + // fallthrough + + // export var/let/const name = ...(, name = ...)+ + case 118/*v*/: + case 109/*l*/: + // destructured initializations not currently supported (skipped for { or [) + // also, lexing names after variable equals is skipped (export var p = function () { ... }, q = 5 skips "q") + pos += 2; + facade = false; + do { + pos++; + ch = commentWhitespace(true); + const startPos = pos; + ch = readToWsOrPunctuator(ch); + // dont yet handle [ { destructurings + if (ch === 123/*{*/ || ch === 91/*[*/) { + pos--; + return; + } + if (pos === startPos) + return; + addExport(startPos, pos, startPos, pos); + ch = commentWhitespace(true); + if (ch === 61/*=*/) { + pos--; + return; + } + } while (ch === 44/*,*/); + pos--; + return; + + + // export {...} + case 123/*{*/: + pos++; + ch = commentWhitespace(true); + while (true) { + const startPos = pos; + readToWsOrPunctuator(ch); + const endPos = pos; + commentWhitespace(true); + ch = readExportAs(startPos, endPos); + // , + if (ch === 44/*,*/) { + pos++; + ch = commentWhitespace(true); + } + if (ch === 125/*}*/) + break; + if (pos === startPos) + return syntaxError(); + if (pos > end) + return syntaxError(); + } + pos++; + ch = commentWhitespace(true); + break; + + // export * + // export * as X + case 42/***/: + pos++; + commentWhitespace(true); + ch = readExportAs(pos, pos); + ch = commentWhitespace(true); + break; + } + + // from ... + if (ch === 102/*f*/ && source.startsWith('rom', pos + 1)) { + pos += 4; + readImportString(sStartPos, commentWhitespace(true)); + + // There were no local names. + for (let i = prevExport; i < exports.length; ++i) { + exports[i].ls = exports[i].le = -1; + exports[i].ln = undefined; + } + } + else { + pos--; + } +} + +/* + * Ported from Acorn + * + * MIT License + + * Copyright (C) 2012-2020 by various contributors (see AUTHORS) + + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +let acornPos; +function readString (start, quote) { + acornPos = start; + let out = '', chunkStart = acornPos; + for (;;) { + if (acornPos >= source.length) syntaxError(); + const ch = source.charCodeAt(acornPos); + if (ch === quote) break; + if (ch === 92) { // '\' + out += source.slice(chunkStart, acornPos); + out += readEscapedChar(); + chunkStart = acornPos; + } + else if (ch === 0x2028 || ch === 0x2029) { + ++acornPos; + } + else { + // Template literals (backtick quote) permit raw line breaks; string + // literals do not. + if (isBr(ch) && quote !== 96/*`*/) syntaxError(); + ++acornPos; + } + } + out += source.slice(chunkStart, acornPos++); + return out; +} + +// Used to read escaped characters + +function readEscapedChar () { + let ch = source.charCodeAt(++acornPos); + ++acornPos; + switch (ch) { + case 110: return '\n'; // 'n' -> '\n' + case 114: return '\r'; // 'r' -> '\r' + case 120: return String.fromCharCode(readHexChar(2)); // 'x' + case 117: return readCodePointToString(); // 'u' + case 116: return '\t'; // 't' -> '\t' + case 98: return '\b'; // 'b' -> '\b' + case 118: return '\u000b'; // 'v' -> '\u000b' + case 102: return '\f'; // 'f' -> '\f' + case 13: if (source.charCodeAt(acornPos) === 10) ++acornPos; // '\r\n' + case 10: // ' \n' + return ''; + case 56: + case 57: + syntaxError(); + default: + if (ch >= 48 && ch <= 55) { + let octalStr = source.substr(acornPos - 1, 3).match(/^[0-7]+/)[0]; + let octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + acornPos += octalStr.length - 1; + ch = source.charCodeAt(acornPos); + if (octalStr !== '0' || ch === 56 || ch === 57) + syntaxError(); + return String.fromCharCode(octal); + } + if (isBr(ch)) { + // Unicode new line characters after \ get removed from output in both + // template literals and strings + return ''; + } + return String.fromCharCode(ch); + } +} + +// Used to read character escape sequences ('\x', '\u', '\U'). + +function readHexChar (len) { + const start = acornPos; + let total = 0, lastCode = 0; + for (let i = 0; i < len; ++i, ++acornPos) { + let code = source.charCodeAt(acornPos), val; + + if (code === 95) { + if (lastCode === 95 || i === 0) syntaxError(); + lastCode = code; + continue; + } + + if (code >= 97) val = code - 97 + 10; // a + else if (code >= 65) val = code - 65 + 10; // A + else if (code >= 48 && code <= 57) val = code - 48; // 0-9 + else break; + if (val >= 16) break; + lastCode = code; + total = total * 16 + val; + } + + if (lastCode === 95 || acornPos - start !== len) syntaxError(); + + return total; +} + +// Read a string value, interpreting backslash-escapes. + +function readCodePointToString () { + const ch = source.charCodeAt(acornPos); + let code; + if (ch === 123) { // '{' + ++acornPos; + code = readHexChar(source.indexOf('}', acornPos) - acornPos); + ++acornPos; + if (code > 0x10FFFF) syntaxError(); + } else { + code = readHexChar(4); + } + // UTF-16 Decoding + if (code <= 0xFFFF) return String.fromCharCode(code); + code -= 0x10000; + return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00); +} + +/* + * + */ + +function readExportAs (startPos, endPos) { + let ch = source.charCodeAt(pos); + let ls = startPos, le = endPos; + if (ch === 97 /*a*/) { + pos += 2; + ch = commentWhitespace(true); + startPos = pos; + readToWsOrPunctuator(ch); + endPos = pos; + ch = commentWhitespace(true); + } + if (pos !== startPos) + addExport(startPos, endPos, ls, le); + return ch; +} + +function readImportString (ss, ch) { + const startPos = pos + 1; + if (ch === 39/*'*/ || ch === 34/*"*/) { + stringLiteral(ch); + } + else { + syntaxError(); + return; + } + const impt = addImport(ss, startPos, pos, -1); + readName(impt); + pos++; + ch = commentWhitespace(false); + if (ch !== 119/*w*/ || !source.startsWith('ith', pos + 1)) { + pos--; + return; + } + const attrIndex = pos; + + pos += 4; + ch = commentWhitespace(true); + if (ch !== 123/*{*/) { + pos = attrIndex; + return; + } + const attrStart = pos; + const attrs = []; + do { + pos++; + ch = commentWhitespace(true); + let key, keyStart, keyEnd; + if (ch === 39/*'*/ || ch === 34/*"*/) { + keyStart = pos; + stringLiteral(ch); + keyEnd = pos + 1; + key = readString(keyStart, ch); + pos++; + ch = commentWhitespace(true); + } + else { + keyStart = pos; + ch = readToWsOrPunctuator(ch); + keyEnd = pos; + key = source.slice(keyStart, keyEnd); + } + if (ch !== 58/*:*/) { + pos = attrIndex; + return; + } + pos++; + ch = commentWhitespace(true); + let value, valueStart; + if (ch === 39/*'*/ || ch === 34/*"*/) { + valueStart = pos; + stringLiteral(ch); + value = readString(valueStart, ch); + } + else { + pos = attrIndex; + return; + } + attrs.push([key, value]); + pos++; + ch = commentWhitespace(true); + if (ch === 44/*,*/) { + pos++; + continue; + } + if (ch === 125/*}*/) + break; + pos = attrIndex; + return; + } while (true); + impt.a = attrStart; + impt.at = attrs; + impt.se = pos + 1; +} + +function commentWhitespace (br) { + let ch; + do { + ch = source.charCodeAt(pos); + if (ch === 47/*/*/) { + const next_ch = source.charCodeAt(pos + 1); + if (next_ch === 47/*/*/) + lineComment(); + else if (next_ch === 42/***/) + blockComment(br); + else + return ch; + } + else if (br ? !isBrOrWs(ch): !isWsNotBr(ch)) { + return ch; + } + } while (pos++ < end); + return ch; +} + +function templateString () { + while (pos++ < end) { + const ch = source.charCodeAt(pos); + if (ch === 36/*$*/ && source.charCodeAt(pos + 1) === 123/*{*/) { + pos++; + templateStack[templateStackDepth++] = templateDepth; + templateDepth = ++openTokenDepth; + return; + } + if (ch === 96/*`*/) + return; + if (ch === 92/*\*/) + pos++; + } + syntaxError(); +} + +// pos AT the opening backtick. A no-substitution template literal (no ${...}) +// is a constant string, so a dynamic import can record it as a safe specifier. +// On success consumes it, leaves pos AT the closing backtick and returns true. +// On a substitution or EOF restores pos and returns false, leaving the literal +// to the main loop's template handling. +function noSubstitutionTemplate () { + const startPos = pos; + while (pos++ < end) { + const ch = source.charCodeAt(pos); + if (ch === 96/*`*/) + return true; + if (ch === 92/*\*/) { + pos++; + continue; + } + if (ch === 36/*$*/ && source.charCodeAt(pos + 1) === 123/*{*/) + break; + } + pos = startPos; + return false; +} + +function blockComment (br) { + pos++; + while (pos++ < end) { + const ch = source.charCodeAt(pos); + if (!br && isBr(ch)) + return; + if (ch === 42/***/ && source.charCodeAt(pos + 1) === 47/*/*/) { + pos++; + return; + } + } +} + +function lineComment () { + while (pos++ < end) { + const ch = source.charCodeAt(pos); + if (ch === 10/*\n*/ || ch === 13/*\r*/) + return; + } +} + +function stringLiteral (quote) { + while (pos++ < end) { + let ch = source.charCodeAt(pos); + if (ch === quote) + return; + if (ch === 92/*\*/) { + ch = source.charCodeAt(++pos); + if (ch === 13/*\r*/ && source.charCodeAt(pos + 1) === 10/*\n*/) + pos++; + } + else if (isBr(ch)) + break; + } + syntaxError(); +} + +function regexCharacterClass () { + while (pos++ < end) { + let ch = source.charCodeAt(pos); + if (ch === 93/*]*/) + return ch; + if (ch === 92/*\*/) + pos++; + else if (ch === 10/*\n*/ || ch === 13/*\r*/) + break; + } + syntaxError(); +} + +function regularExpression () { + while (pos++ < end) { + let ch = source.charCodeAt(pos); + if (ch === 47/*/*/) + return; + if (ch === 91/*[*/) + ch = regexCharacterClass(); + else if (ch === 92/*\*/) + pos++; + else if (ch === 10/*\n*/ || ch === 13/*\r*/) + break; + } + syntaxError(); +} + +function readToWsOrPunctuator (ch) { + do { + if (isBrOrWs(ch) || isPunctuator(ch)) + return ch; + } while (ch = source.charCodeAt(++pos)); + return ch; +} + +// Note: non-asii BR and whitespace checks omitted for perf / footprint +// if there is a significant user need this can be reconsidered +function isBr (c) { + return c === 13/*\r*/ || c === 10/*\n*/; +} + +function isWsNotBr (c) { + return c === 9 || c === 11 || c === 12 || c === 32 || c === 160; +} + +function isBrOrWs (c) { + return c > 8 && c < 14 || c === 32 || c === 160; +} + +function isBrOrWsOrPunctuatorNotDot (c) { + return c > 8 && c < 14 || c === 32 || c === 160 || isPunctuator(c) && c !== 46/*.*/; +} + +function keywordStart (pos) { + return pos === 0 || isBrOrWsOrPunctuatorNotDot(source.charCodeAt(pos - 1)); +} + +function readPrecedingKeyword (pos, match) { + if (pos < match.length - 1) + return false; + return source.startsWith(match, pos - match.length + 1) && (pos === 0 || isBrOrWsOrPunctuatorNotDot(source.charCodeAt(pos - match.length))); +} + +function readPrecedingKeyword1 (pos, ch) { + return source.charCodeAt(pos) === ch && (pos === 0 || isBrOrWsOrPunctuatorNotDot(source.charCodeAt(pos - 1))); +} + +// Detects one of case, debugger, delete, do, else, in, instanceof, new, +// return, throw, typeof, void, yield, await +function isExpressionKeyword (pos) { + switch (source.charCodeAt(pos)) { + case 100/*d*/: + switch (source.charCodeAt(pos - 1)) { + case 105/*i*/: + // void + return readPrecedingKeyword(pos - 2, 'vo'); + case 108/*l*/: + // yield + return readPrecedingKeyword(pos - 2, 'yie'); + default: + return false; + } + case 101/*e*/: + switch (source.charCodeAt(pos - 1)) { + case 115/*s*/: + switch (source.charCodeAt(pos - 2)) { + case 108/*l*/: + // else + return readPrecedingKeyword1(pos - 3, 101/*e*/); + case 97/*a*/: + // case + return readPrecedingKeyword1(pos - 3, 99/*c*/); + default: + return false; + } + case 116/*t*/: + // delete + return readPrecedingKeyword(pos - 2, 'dele'); + default: + return false; + } + case 102/*f*/: + if (source.charCodeAt(pos - 1) !== 111/*o*/ || source.charCodeAt(pos - 2) !== 101/*e*/) + return false; + switch (source.charCodeAt(pos - 3)) { + case 99/*c*/: + // instanceof + return readPrecedingKeyword(pos - 4, 'instan'); + case 112/*p*/: + // typeof + return readPrecedingKeyword(pos - 4, 'ty'); + default: + return false; + } + case 110/*n*/: + // in, return + return readPrecedingKeyword1(pos - 1, 105/*i*/) || readPrecedingKeyword(pos - 1, 'retur'); + case 111/*o*/: + // do + return readPrecedingKeyword1(pos - 1, 100/*d*/); + case 114/*r*/: + // debugger + return readPrecedingKeyword(pos - 1, 'debugge'); + case 116/*t*/: + // await + return readPrecedingKeyword(pos - 1, 'awai'); + case 119/*w*/: + switch (source.charCodeAt(pos - 1)) { + case 101/*e*/: + // new + return readPrecedingKeyword1(pos - 2, 110/*n*/); + case 111/*o*/: + // throw + return readPrecedingKeyword(pos - 2, 'thr'); + default: + return false; + } + } + return false; +} + +function isParenKeyword (curPos) { + return source.charCodeAt(curPos) === 101/*e*/ && source.startsWith('whil', curPos - 4) || + source.charCodeAt(curPos) === 114/*r*/ && source.startsWith('fo', curPos - 2) || + source.charCodeAt(curPos - 1) === 105/*i*/ && source.charCodeAt(curPos) === 102/*f*/; +} + +function isForParen (curPos) { + return source.charCodeAt(curPos) === 114/*r*/ && source.startsWith('fo', curPos - 2); +} + +// In valid JS, the for-of `of` keyword always follows a binding, +// which ends with an identifier-tail char, ']', '}', or ')'. +function isForOfBinding (pos) { + const ch = source.charCodeAt(pos); + if (!isBrOrWs(ch) && ch !== 93/*]*/ && ch !== 125/*}*/ && ch !== 41/*)*/) + return false; + while (pos > 0 && isBrOrWs(source.charCodeAt(pos))) + pos--; + const c = source.charCodeAt(pos); + return c === 93/*]*/ || c === 125/*}*/ || c === 41/*)*/ || !isPunctuator(c); +} + +function isPunctuator (ch) { + // 23 possible punctuator endings: !%&()*+,-./:;<=>?[]^{}|~ + return ch === 33/*!*/ || ch === 37/*%*/ || ch === 38/*&*/ || + ch > 39 && ch < 48 || ch > 57 && ch < 64 || + ch === 91/*[*/ || ch === 93/*]*/ || ch === 94/*^*/ || + ch > 122 && ch < 127; +} + +function isExpressionPunctuator (ch) { + // 20 possible expression endings: !%&(*+,-.:;<=>?[^{|~ + return ch === 33/*!*/ || ch === 37/*%*/ || ch === 38/*&*/ || + ch > 39 && ch < 47 && ch !== 41 || ch > 57 && ch < 64 || + ch === 91/*[*/ || ch === 94/*^*/ || ch > 122 && ch < 127 && ch !== 125/*}*/; +} + +function isExpressionTerminator (curPos) { + // detects: + // => ; ) finally catch else + // as all of these followed by a { will indicate a statement brace + switch (source.charCodeAt(curPos)) { + case 62/*>*/: + return source.charCodeAt(curPos - 1) === 61/*=*/; + case 59/*;*/: + case 41/*)*/: + return true; + case 104/*h*/: + return source.startsWith('catc', curPos - 4); + case 121/*y*/: + return source.startsWith('finall', curPos - 6); + case 101/*e*/: + return source.startsWith('els', curPos - 3); + } + return false; +} + +function syntaxError () { + throw Object.assign(new Error(`Parse error ${name}:${source.slice(0, pos).split('\n').length}:${pos - source.lastIndexOf('\n', pos - 1)}`), { idx: pos }); +} \ No newline at end of file diff --git a/node_modules/es-module-lexer/package.json b/node_modules/es-module-lexer/package.json new file mode 100644 index 0000000000000000000000000000000000000000..132029e10f43cee99429281d0f5dfe4f9c8613dc --- /dev/null +++ b/node_modules/es-module-lexer/package.json @@ -0,0 +1,67 @@ +{ + "name": "es-module-lexer", + "version": "2.3.1", + "description": "Lexes ES modules returning their import/export metadata", + "main": "dist/lexer.cjs", + "module": "dist/lexer.js", + "types": "types/lexer.d.ts", + "exports": { + ".": { + "types": "./types/lexer.d.ts", + "module": "./dist/lexer.js", + "import": "./dist/lexer.js", + "require": "./dist/lexer.cjs" + }, + "./js": { + "types": "./types/lexer.d.ts", + "default": "./dist/lexer.asm.js" + }, + "./minimal": { + "types": "./types/lexer.minimal.d.ts", + "module": "./dist/lexer.minimal.js", + "import": "./dist/lexer.minimal.js", + "require": "./dist/lexer.minimal.cjs" + }, + "./minimal/js": { + "types": "./types/lexer.minimal.d.ts", + "default": "./dist/lexer.minimal.asm.js" + } + }, + "scripts": { + "build": "npm install -g chomp ; chomp build", + "test": "npm install -g chomp ; chomp test" + }, + "author": "Guy Bedford", + "license": "MIT", + "devDependencies": { + "@babel/cli": "^7.29.7", + "@babel/core": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@swc/cli": "^0.8.1", + "@swc/core": "^1.15.41", + "@types/node": "^25.9.3", + "kleur": "^4.1.5", + "mocha": "^11.7.6", + "terser": "^5.48.0", + "typescript": "^6.0.3" + }, + "files": [ + "dist", + "types", + "lexer.js" + ], + "type": "module", + "repository": { + "type": "git", + "url": "git+https://github.com/guybedford/es-module-lexer.git" + }, + "bugs": { + "url": "https://github.com/guybedford/es-module-lexer/issues" + }, + "homepage": "https://github.com/guybedford/es-module-lexer#readme", + "directories": { + "lib": "lib", + "test": "test" + }, + "keywords": [] +} diff --git a/node_modules/es-module-lexer/types/lexer.d.ts b/node_modules/es-module-lexer/types/lexer.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..6218ade7a6947b787f16a2b3d10f3ef7a24fcb79 --- /dev/null +++ b/node_modules/es-module-lexer/types/lexer.d.ts @@ -0,0 +1,227 @@ +export declare enum ImportType { + /** + * A normal static using any syntax variations + * import .. from 'module' + */ + Static = 1, + /** + * A dynamic import expression `import(specifier)` + * or `import(specifier, opts)` + */ + Dynamic = 2, + /** + * An import.meta expression + */ + ImportMeta = 3, + /** + * A source phase import + * import source x from 'module' + */ + StaticSourcePhase = 4, + /** + * A dynamic source phase import + * import.source('module') + */ + DynamicSourcePhase = 5, + /** + * A defer phase import + * import defer * as x from 'module' + */ + StaticDeferPhase = 6, + /** + * A dynamic defer phase import + * import.defer('module') + */ + DynamicDeferPhase = 7 +} +export interface ImportSpecifier { + /** + * Module name + * + * To handle escape sequences in specifier strings, the .n field of imported specifiers will be provided where possible. + * + * For dynamic import expressions, this field will be empty if not a valid JS string. + * For static import expressions, this field will always be populated. + * + * @example + * const [imports1, exports1] = parse(String.raw`import './\u0061\u0062.js'`); + * imports1[0].n; + * // Returns "./ab.js" + * + * const [imports2, exports2] = parse(`import("./ab.js")`); + * imports2[0].n; + * // Returns "./ab.js" + * + * const [imports3, exports3] = parse(`import("./" + "ab.js")`); + * imports3[0].n; + * // Returns undefined + */ + readonly n: string | undefined; + /** + * Type of import statement + */ + readonly t: ImportType; + /** + * Start of module specifier + * + * @example + * const source = `import { a } from 'asdf'`; + * const [imports, exports] = parse(source); + * source.substring(imports[0].s, imports[0].e); + * // Returns "asdf" + */ + readonly s: number; + /** + * End of module specifier + */ + readonly e: number; + /** + * Start of import statement + * + * @example + * const source = `import { a } from 'asdf'`; + * const [imports, exports] = parse(source); + * source.substring(imports[0].ss, imports[0].se); + * // Returns "import { a } from 'asdf';" + */ + readonly ss: number; + /** + * End of import statement + */ + readonly se: number; + /** + * If this import keyword is a dynamic import, this is the start value. + * If this import keyword is a static import, this is -1. + * If this import keyword is an import.meta expresion, this is -2. + */ + readonly d: number; + /** + * If this import has an import attribute, this is the start value. + * Otherwise this is `-1`. + */ + readonly a: number; + /** + * Parsed import attributes as an array of [key, value] tuples. + * If this import has no attributes, this is `null`. + * + * @example + * const source = `import foo from 'bar' with { type: "json" }`; + * const [imports] = parse(source); + * imports[0].at; + * // Returns [['type', 'json']] + * + * @example + * const source = `import foo from 'bar' with { type: "json", integrity: "sha384-..." }`; + * const [imports] = parse(source); + * imports[0].at; + * // Returns [['type', 'json'], ['integrity', 'sha384-...']] + */ + readonly at: ReadonlyArray | null; +} +export interface ExportSpecifier { + /** + * Exported name + * + * @example + * const source = `export default []`; + * const [imports, exports] = parse(source); + * exports[0].n; + * // Returns "default" + * + * @example + * const source = `export const asdf = 42`; + * const [imports, exports] = parse(source); + * exports[0].n; + * // Returns "asdf" + */ + readonly n: string; + /** + * Local name, or undefined. + * + * @example + * const source = `export default []`; + * const [imports, exports] = parse(source); + * exports[0].ln; + * // Returns undefined + * + * @example + * const asdf = 42; + * const source = `export { asdf as a }`; + * const [imports, exports] = parse(source); + * exports[0].ln; + * // Returns "asdf" + */ + readonly ln: string | undefined; + /** + * Start of exported name + * + * @example + * const source = `export default []`; + * const [imports, exports] = parse(source); + * source.substring(exports[0].s, exports[0].e); + * // Returns "default" + * + * @example + * const source = `export { 42 as asdf }`; + * const [imports, exports] = parse(source); + * source.substring(exports[0].s, exports[0].e); + * // Returns "asdf" + */ + readonly s: number; + /** + * End of exported name + */ + readonly e: number; + /** + * Start of local name, or -1. + * + * @example + * const asdf = 42; + * const source = `export { asdf as a }`; + * const [imports, exports] = parse(source); + * source.substring(exports[0].ls, exports[0].le); + * // Returns "asdf" + */ + readonly ls: number; + /** + * End of local name, or -1. + */ + readonly le: number; + /** + * Start of the export statement. + * + * Only the statement start is provided; the statement end is not tracked + * (see https://github.com/guybedford/es-module-lexer/issues/112). Every + * specifier of a statement reports the same start, so `export { a, b }` + * returns the same `ss` for both `a` and `b`. + * + * @example + * const source = `export { a, b } from 'mod'`; + * const [imports, exports] = parse(source); + * source.slice(exports[0].ss, exports[0].ss + 6); + * // Returns "export" + */ + readonly ss: number; +} +export interface ParseError extends Error { + idx: number; +} +/** + * Outputs the list of exports and locations of import specifiers, + * including dynamic import and import meta handling. + * + * @param source Source code to parser + * @param name Optional sourcename + * @returns Tuple contaning imports list and exports list. + */ +export declare function parse(source: string, name?: string): readonly [ + imports: ReadonlyArray, + exports: ReadonlyArray, + facade: boolean, + hasModuleSyntax: boolean +]; +/** + * Wait for init to resolve before calling `parse`. + */ +export declare const init: Promise; +export declare const initSync: () => void; diff --git a/node_modules/es-module-lexer/types/lexer.minimal.d.ts b/node_modules/es-module-lexer/types/lexer.minimal.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f06edf5aac019aecd6bfe2649ecf6b7f8c0904f --- /dev/null +++ b/node_modules/es-module-lexer/types/lexer.minimal.d.ts @@ -0,0 +1,46 @@ +// Type definitions for the es-module-lexer minimal build (es-module-lexer/minimal). +// Auto-generated by build/gen-min-dts.mjs — do not edit. +import { ImportType, ImportSpecifier, ParseError } from './lexer.js'; +export { ImportType, ImportSpecifier, ParseError }; + +/** + * Export specifier — minimal build. + * + * Identical to the full ExportSpecifier except that the export statement start + * (`ss`) is not tracked in the minimal build. + */ +export interface ExportSpecifier { + /** Exported name */ + readonly n: string; + /** Local name, or undefined */ + readonly ln: string | undefined; + /** Start of exported name */ + readonly s: number; + /** End of exported name */ + readonly e: number; + /** Start of local name, or -1 */ + readonly ls: number; + /** End of local name, or -1 */ + readonly le: number; +} + +/** + * Outputs the lexical analysis of the source — minimal build. + * + * Returns a 2-tuple of imports and exports. Unlike the full build, the minimal + * build does not emit the facade / hasModuleSyntax flags, and ImportSpecifier + * `at` is always null (read assertions via `source.slice(a, se - 1)`). + * + * @param source Source code to parse + * @param name Optional sourcename + */ +export declare function parse(source: string, name?: string): readonly [ + imports: ReadonlyArray, + exports: ReadonlyArray +]; + +/** + * Wait for init to resolve before calling `parse`. + */ +export declare const init: Promise; +export declare const initSync: () => void; diff --git a/node_modules/es-object-atoms/.eslintrc b/node_modules/es-object-atoms/.eslintrc new file mode 100644 index 0000000000000000000000000000000000000000..d90a1bc657a8c3b85c939c7b20e4ed4e4aba4ab0 --- /dev/null +++ b/node_modules/es-object-atoms/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "eqeqeq": ["error", "allow-null"], + "id-length": "off", + "new-cap": ["error", { + "capIsNewExceptions": [ + "RequireObjectCoercible", + "ToObject", + ], + }], + }, +} diff --git a/node_modules/es-object-atoms/.github/FUNDING.yml b/node_modules/es-object-atoms/.github/FUNDING.yml new file mode 100644 index 0000000000000000000000000000000000000000..352bfdabd228c58a83d22f1d739a33d5e0b0cf0f --- /dev/null +++ b/node_modules/es-object-atoms/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-object +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/es-object-atoms/CHANGELOG.md b/node_modules/es-object-atoms/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..8efc7ba1a53065c18c1c777f2409066e83921441 --- /dev/null +++ b/node_modules/es-object-atoms/CHANGELOG.md @@ -0,0 +1,44 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.2](https://github.com/es-shims/es-object-atoms/compare/v1.1.1...v1.1.2) - 2026-05-22 + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `auto-changelog`, `eslint`, `npmignore` [`41e3d94`](https://github.com/es-shims/es-object-atoms/commit/41e3d94f6b49237fa490ec598e068f170c8b161e) +- [types] improve `isObject` type [`758edc2`](https://github.com/es-shims/es-object-atoms/commit/758edc2280fa6993a294a55957a43cee5951bf51) + +## [v1.1.1](https://github.com/es-shims/es-object-atoms/compare/v1.1.0...v1.1.1) - 2025-01-14 + +### Commits + +- [types] `ToObject`: improve types [`cfe8c8a`](https://github.com/es-shims/es-object-atoms/commit/cfe8c8a105c44820cb22e26f62d12ef0ad9715c8) + +## [v1.1.0](https://github.com/es-shims/es-object-atoms/compare/v1.0.1...v1.1.0) - 2025-01-14 + +### Commits + +- [New] add `isObject` [`51e4042`](https://github.com/es-shims/es-object-atoms/commit/51e4042df722eb3165f40dc5f4bf33d0197ecb07) + +## [v1.0.1](https://github.com/es-shims/es-object-atoms/compare/v1.0.0...v1.0.1) - 2025-01-13 + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/tape`, `auto-changelog`, `tape` [`38ab9eb`](https://github.com/es-shims/es-object-atoms/commit/38ab9eb00b62c2f4668644f5e513d9b414ebd595) +- [types] improve types [`7d1beb8`](https://github.com/es-shims/es-object-atoms/commit/7d1beb887958b78b6a728a210a1c8370ab7e2aa1) +- [Tests] replace `aud` with `npm audit` [`25863ba`](https://github.com/es-shims/es-object-atoms/commit/25863baf99178f1d1ad33d1120498db28631907e) +- [Dev Deps] add missing peer dep [`c012309`](https://github.com/es-shims/es-object-atoms/commit/c0123091287e6132d6f4240496340c427433df28) + +## v1.0.0 - 2024-03-16 + +### Commits + +- Initial implementation, tests, readme, types [`f1499db`](https://github.com/es-shims/es-object-atoms/commit/f1499db7d3e1741e64979c61d645ab3137705e82) +- Initial commit [`99eedc7`](https://github.com/es-shims/es-object-atoms/commit/99eedc7b5fde38a50a28d3c8b724706e3e4c5f6a) +- [meta] rename repo [`fc851fa`](https://github.com/es-shims/es-object-atoms/commit/fc851fa70616d2d182aaf0bd02c2ed7084dea8fa) +- npm init [`b909377`](https://github.com/es-shims/es-object-atoms/commit/b909377c50049bd0ec575562d20b0f9ebae8947f) +- Only apps should have lockfiles [`7249edd`](https://github.com/es-shims/es-object-atoms/commit/7249edd2178c1b9ddfc66ffcc6d07fdf0d28efc1) diff --git a/node_modules/es-object-atoms/LICENSE b/node_modules/es-object-atoms/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..f82f38963b0d282b529f64def2bcd40be3a9a947 --- /dev/null +++ b/node_modules/es-object-atoms/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/es-object-atoms/README.md b/node_modules/es-object-atoms/README.md new file mode 100644 index 0000000000000000000000000000000000000000..447695b2e1220bea0ee1572544a47ccb864e69c0 --- /dev/null +++ b/node_modules/es-object-atoms/README.md @@ -0,0 +1,63 @@ +# es-object-atoms [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +ES Object-related atoms: Object, ToObject, RequireObjectCoercible. + +## Example + +```js +const assert = require('assert'); + +const $Object = require('es-object-atoms'); +const isObject = require('es-object-atoms/isObject'); +const ToObject = require('es-object-atoms/ToObject'); +const RequireObjectCoercible = require('es-object-atoms/RequireObjectCoercible'); + +assert.equal($Object, Object); +assert.throws(() => ToObject(null), TypeError); +assert.throws(() => ToObject(undefined), TypeError); +assert.throws(() => RequireObjectCoercible(null), TypeError); +assert.throws(() => RequireObjectCoercible(undefined), TypeError); + +assert.equal(isObject(undefined), false); +assert.equal(isObject(null), false); +assert.equal(isObject({}), true); +assert.equal(isObject([]), true); +assert.equal(isObject(function () {}), true); + +assert.deepEqual(RequireObjectCoercible(true), true); +assert.deepEqual(ToObject(true), Object(true)); + +const obj = {}; +assert.equal(RequireObjectCoercible(obj), obj); +assert.equal(ToObject(obj), obj); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-object-atoms +[npm-version-svg]: https://versionbadg.es/ljharb/es-object-atoms.svg +[deps-svg]: https://david-dm.org/ljharb/es-object-atoms.svg +[deps-url]: https://david-dm.org/ljharb/es-object-atoms +[dev-deps-svg]: https://david-dm.org/ljharb/es-object-atoms/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-object-atoms#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-object-atoms.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-object-atoms.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-object.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-object-atoms +[codecov-image]: https://codecov.io/gh/ljharb/es-object-atoms/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-object-atoms/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-object-atoms +[actions-url]: https://github.com/ljharb/es-object-atoms/actions diff --git a/node_modules/es-object-atoms/RequireObjectCoercible.d.ts b/node_modules/es-object-atoms/RequireObjectCoercible.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7e26c45734d7f5c3c431972dfd915744d3967fac --- /dev/null +++ b/node_modules/es-object-atoms/RequireObjectCoercible.d.ts @@ -0,0 +1,3 @@ +declare function RequireObjectCoercible(value: T, optMessage?: string): T; + +export = RequireObjectCoercible; diff --git a/node_modules/es-object-atoms/RequireObjectCoercible.js b/node_modules/es-object-atoms/RequireObjectCoercible.js new file mode 100644 index 0000000000000000000000000000000000000000..8e191c6ef1521644b2bb0879f9f3e85ab7d21fd6 --- /dev/null +++ b/node_modules/es-object-atoms/RequireObjectCoercible.js @@ -0,0 +1,11 @@ +'use strict'; + +var $TypeError = require('es-errors/type'); + +/** @type {import('./RequireObjectCoercible')} */ +module.exports = function RequireObjectCoercible(value) { + if (value == null) { + throw new $TypeError((arguments.length > 0 && arguments[1]) || ('Cannot call method on ' + value)); + } + return value; +}; diff --git a/node_modules/es-object-atoms/ToObject.d.ts b/node_modules/es-object-atoms/ToObject.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d6dd3029d8c51858964fdf8e05228ab604334f5f --- /dev/null +++ b/node_modules/es-object-atoms/ToObject.d.ts @@ -0,0 +1,7 @@ +declare function ToObject(value: number): Number; +declare function ToObject(value: boolean): Boolean; +declare function ToObject(value: string): String; +declare function ToObject(value: bigint): BigInt; +declare function ToObject(value: T): T; + +export = ToObject; diff --git a/node_modules/es-object-atoms/ToObject.js b/node_modules/es-object-atoms/ToObject.js new file mode 100644 index 0000000000000000000000000000000000000000..2b99a7da025f57138b7bc98245ac032425655f25 --- /dev/null +++ b/node_modules/es-object-atoms/ToObject.js @@ -0,0 +1,10 @@ +'use strict'; + +var $Object = require('./'); +var RequireObjectCoercible = require('./RequireObjectCoercible'); + +/** @type {import('./ToObject')} */ +module.exports = function ToObject(value) { + RequireObjectCoercible(value); + return $Object(value); +}; diff --git a/node_modules/es-object-atoms/index.d.ts b/node_modules/es-object-atoms/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..8bdbfc8154dad2999f38aaba5a91257e668ad6ee --- /dev/null +++ b/node_modules/es-object-atoms/index.d.ts @@ -0,0 +1,3 @@ +declare const Object: ObjectConstructor; + +export = Object; diff --git a/node_modules/es-object-atoms/index.js b/node_modules/es-object-atoms/index.js new file mode 100644 index 0000000000000000000000000000000000000000..1d33cef45ac4212d8710fa253075ca7969c5cd81 --- /dev/null +++ b/node_modules/es-object-atoms/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Object; diff --git a/node_modules/es-object-atoms/isObject.d.ts b/node_modules/es-object-atoms/isObject.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9490fbbdc641d48687883869e5752bffc9ffa615 --- /dev/null +++ b/node_modules/es-object-atoms/isObject.d.ts @@ -0,0 +1,3 @@ +declare function isObject(x: T): x is T & object & Record; + +export = isObject; diff --git a/node_modules/es-object-atoms/isObject.js b/node_modules/es-object-atoms/isObject.js new file mode 100644 index 0000000000000000000000000000000000000000..ec49bf12877f62026e56899693bfadac77149498 --- /dev/null +++ b/node_modules/es-object-atoms/isObject.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isObject')} */ +module.exports = function isObject(x) { + return !!x && (typeof x === 'function' || typeof x === 'object'); +}; diff --git a/node_modules/es-object-atoms/package.json b/node_modules/es-object-atoms/package.json new file mode 100644 index 0000000000000000000000000000000000000000..cb6bc7bd4d7d648be50478cec32aa3005c55cc48 --- /dev/null +++ b/node_modules/es-object-atoms/package.json @@ -0,0 +1,79 @@ +{ + "name": "es-object-atoms", + "version": "1.1.2", + "description": "ES Object-related atoms: Object, ToObject, RequireObjectCoercible", + "main": "index.js", + "exports": { + ".": "./index.js", + "./RequireObjectCoercible": "./RequireObjectCoercible.js", + "./isObject": "./isObject.js", + "./ToObject": "./ToObject.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@\">= 10.2\" audit --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-object-atoms.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "toobject", + "coercible" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-object-atoms/issues" + }, + "homepage": "https://github.com/ljharb/es-object-atoms#readme", + "dependencies": { + "es-errors": "^1.3.0" + }, + "devDependencies": { + "@ljharb/eslint-config": "^22.2.3", + "@ljharb/tsconfig": "^0.3.2", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.1", + "eclint": "^2.8.1", + "eslint": "^8.57.1", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.5", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/es-object-atoms/test/index.js b/node_modules/es-object-atoms/test/index.js new file mode 100644 index 0000000000000000000000000000000000000000..430b705aca13c9c40f62066a3cb4815faacbd4ed --- /dev/null +++ b/node_modules/es-object-atoms/test/index.js @@ -0,0 +1,38 @@ +'use strict'; + +var test = require('tape'); + +var $Object = require('../'); +var isObject = require('../isObject'); +var ToObject = require('../ToObject'); +var RequireObjectCoercible = require('..//RequireObjectCoercible'); + +test('errors', function (t) { + t.equal($Object, Object); + // @ts-expect-error + t['throws'](function () { ToObject(null); }, TypeError); + // @ts-expect-error + t['throws'](function () { ToObject(undefined); }, TypeError); + // @ts-expect-error + t['throws'](function () { RequireObjectCoercible(null); }, TypeError); + // @ts-expect-error + t['throws'](function () { RequireObjectCoercible(undefined); }, TypeError); + + t.deepEqual(RequireObjectCoercible(true), true); + t.deepEqual(ToObject(true), Object(true)); + t.deepEqual(ToObject(42), Object(42)); + var f = function () {}; + t.equal(ToObject(f), f); + + t.equal(isObject(undefined), false); + t.equal(isObject(null), false); + t.equal(isObject({}), true); + t.equal(isObject([]), true); + t.equal(isObject(function () {}), true); + + var obj = {}; + t.equal(RequireObjectCoercible(obj), obj); + t.equal(ToObject(obj), obj); + + t.end(); +}); diff --git a/node_modules/es-object-atoms/tsconfig.json b/node_modules/es-object-atoms/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..c1ef7906fff3f0524501fec6eb1bbe3636351378 --- /dev/null +++ b/node_modules/es-object-atoms/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es5", + "ignoreDeprecations": "6.0", + }, +} diff --git a/node_modules/es-set-tostringtag/.eslintrc b/node_modules/es-set-tostringtag/.eslintrc new file mode 100644 index 0000000000000000000000000000000000000000..2612ed8fefad45d3a68ae842a28e0353ebcb5cf1 --- /dev/null +++ b/node_modules/es-set-tostringtag/.eslintrc @@ -0,0 +1,13 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/node_modules/es-set-tostringtag/.nycrc b/node_modules/es-set-tostringtag/.nycrc new file mode 100644 index 0000000000000000000000000000000000000000..bdd626ce91477abbdd489b79988baebadbd3c897 --- /dev/null +++ b/node_modules/es-set-tostringtag/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/es-set-tostringtag/CHANGELOG.md b/node_modules/es-set-tostringtag/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..00bdc038cb7c13f8462b70ee72f8bcf71a08d21e --- /dev/null +++ b/node_modules/es-set-tostringtag/CHANGELOG.md @@ -0,0 +1,67 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v2.1.0](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.3...v2.1.0) - 2025-01-01 + +### Commits + +- [actions] split out node 10-20, and 20+ [`ede033c`](https://github.com/es-shims/es-set-tostringtag/commit/ede033cc4e506c3966d2d482d4ac5987e329162a) +- [types] use shared config [`28ef164`](https://github.com/es-shims/es-set-tostringtag/commit/28ef164ad7c5bc21837c79f7ef25542a1f258ade) +- [New] add `nonConfigurable` option [`3bee3f0`](https://github.com/es-shims/es-set-tostringtag/commit/3bee3f04caddd318f3932912212ed20b2d62aad7) +- [Fix] validate boolean option argument [`3c8a609`](https://github.com/es-shims/es-set-tostringtag/commit/3c8a609c795a305ccca163f0ff6956caa88cdc0e) +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/tape`, `auto-changelog`, `tape` [`501a969`](https://github.com/es-shims/es-set-tostringtag/commit/501a96998484226e07f5ffd447e8f305a998f1d8) +- [Tests] add coverage [`18af289`](https://github.com/es-shims/es-set-tostringtag/commit/18af2897b4e937373c9b8c8831bc338932246470) +- [readme] document `force` option [`bd446a1`](https://github.com/es-shims/es-set-tostringtag/commit/bd446a107b71a2270278442e5124f45590d3ee64) +- [Tests] use `@arethetypeswrong/cli` [`7c2c2fa`](https://github.com/es-shims/es-set-tostringtag/commit/7c2c2fa3cca0f4d263603adb75426b239514598f) +- [Tests] replace `aud` with `npm audit` [`9e372d7`](https://github.com/es-shims/es-set-tostringtag/commit/9e372d7e6db3dab405599a14d9074a99a03b8242) +- [Deps] update `get-intrinsic` [`7df1216`](https://github.com/es-shims/es-set-tostringtag/commit/7df12167295385c2a547410e687cb0c04f3a34b9) +- [Deps] update `hasown` [`993a7d2`](https://github.com/es-shims/es-set-tostringtag/commit/993a7d200e2059fd857ec1a25d0a49c2c34ae6e2) +- [Dev Deps] add missing peer dep [`148ed8d`](https://github.com/es-shims/es-set-tostringtag/commit/148ed8db99a7a94f9af3823fd083e6e437fa1587) + +## [v2.0.3](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.2...v2.0.3) - 2024-02-20 + +### Commits + +- add types [`d538513`](https://github.com/es-shims/es-set-tostringtag/commit/d5385133592a32a0a416cb535327918af7fbc4ad) +- [Deps] update `get-intrinsic`, `has-tostringtag`, `hasown` [`d129b29`](https://github.com/es-shims/es-set-tostringtag/commit/d129b29536bccc8a9d03a47887ca4d1f7ad0c5b9) +- [Dev Deps] update `aud`, `npmignore`, `tape` [`132ed23`](https://github.com/es-shims/es-set-tostringtag/commit/132ed23c964a41ed55e4ab4a5a2c3fe185e821c1) +- [Tests] fix hasOwn require [`f89c831`](https://github.com/es-shims/es-set-tostringtag/commit/f89c831fe5f3edf1f979c597b56fee1be6111f56) + +## [v2.0.2](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.1...v2.0.2) - 2023-10-20 + +### Commits + +- [Refactor] use `hasown` instead of `has` [`0cc6c4e`](https://github.com/es-shims/es-set-tostringtag/commit/0cc6c4e61fd13e8f00b85424ae6e541ebf289e74) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`70e447c`](https://github.com/es-shims/es-set-tostringtag/commit/70e447cf9f82b896ddf359fda0a0498c16cf3ed2) +- [Deps] update `get-intrinsic` [`826aab7`](https://github.com/es-shims/es-set-tostringtag/commit/826aab76180392871c8efa99acc0f0bbf775c64e) + +## [v2.0.1](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.0...v2.0.1) - 2023-01-05 + +### Fixed + +- [Fix] move `has` to prod deps [`#2`](https://github.com/es-shims/es-set-tostringtag/issues/2) + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config` [`b9eecd2`](https://github.com/es-shims/es-set-tostringtag/commit/b9eecd23c10b7b43ba75089ac8ff8cc6b295798b) + +## [v2.0.0](https://github.com/es-shims/es-set-tostringtag/compare/v1.0.0...v2.0.0) - 2022-12-21 + +### Commits + +- [Tests] refactor tests [`168dcfb`](https://github.com/es-shims/es-set-tostringtag/commit/168dcfbb535c279dc48ccdc89419155125aaec18) +- [Breaking] do not set toStringTag if it is already set [`226ab87`](https://github.com/es-shims/es-set-tostringtag/commit/226ab874192c625d9e5f0e599d3f60d2b2aa83b5) +- [New] add `force` option to set even if already set [`1abd4ec`](https://github.com/es-shims/es-set-tostringtag/commit/1abd4ecb282f19718c4518284b0293a343564505) + +## v1.0.0 - 2022-12-21 + +### Commits + +- Initial implementation, tests, readme [`a0e1147`](https://github.com/es-shims/es-set-tostringtag/commit/a0e11473f79a233b46374525c962ea1b4d42418a) +- Initial commit [`ffd4aff`](https://github.com/es-shims/es-set-tostringtag/commit/ffd4afffbeebf29aff0d87a7cfc3f7844e09fe68) +- npm init [`fffe5bd`](https://github.com/es-shims/es-set-tostringtag/commit/fffe5bd1d1146d084730a387a9c672371f4a8fff) +- Only apps should have lockfiles [`d363871`](https://github.com/es-shims/es-set-tostringtag/commit/d36387139465623e161a15dbd39120537f150c62) diff --git a/node_modules/es-set-tostringtag/LICENSE b/node_modules/es-set-tostringtag/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..c2a8460a3c4c3b8de391983485f26f4bce0ba5a6 --- /dev/null +++ b/node_modules/es-set-tostringtag/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/es-set-tostringtag/README.md b/node_modules/es-set-tostringtag/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c27bc9fc0c44620607d2e39a20387079694a2c7b --- /dev/null +++ b/node_modules/es-set-tostringtag/README.md @@ -0,0 +1,53 @@ +# es-set-tostringtag [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A helper to optimistically set Symbol.toStringTag, when possible. + +## Example +Most common usage: +```js +var assert = require('assert'); +var setToStringTag = require('es-set-tostringtag'); + +var obj = {}; + +assert.equal(Object.prototype.toString.call(obj), '[object Object]'); + +setToStringTag(obj, 'tagged!'); + +assert.equal(Object.prototype.toString.call(obj), '[object tagged!]'); +``` + +## Options +An optional options argument can be provided as the third argument. The available options are: + +### `force` +If the `force` option is set to `true`, the toStringTag will be set even if it is already set. + +### `nonConfigurable` +If the `nonConfigurable` option is set to `true`, the toStringTag will be defined as non-configurable when possible. + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.com/package/es-set-tostringtag +[npm-version-svg]: https://versionbadg.es/es-shims/es-set-tostringtag.svg +[deps-svg]: https://david-dm.org/es-shims/es-set-tostringtag.svg +[deps-url]: https://david-dm.org/es-shims/es-set-tostringtag +[dev-deps-svg]: https://david-dm.org/es-shims/es-set-tostringtag/dev-status.svg +[dev-deps-url]: https://david-dm.org/es-shims/es-set-tostringtag#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-set-tostringtag.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-set-tostringtag.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-set-tostringtag.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-set-tostringtag +[codecov-image]: https://codecov.io/gh/es-shims/es-set-tostringtag/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/es-shims/es-set-tostringtag/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/es-set-tostringtag +[actions-url]: https://github.com/es-shims/es-set-tostringtag/actions diff --git a/node_modules/es-set-tostringtag/index.d.ts b/node_modules/es-set-tostringtag/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..c9a8fc4d4693439805d9eadcecc93f8a0c423eb8 --- /dev/null +++ b/node_modules/es-set-tostringtag/index.d.ts @@ -0,0 +1,10 @@ +declare function setToStringTag( + object: object & { [Symbol.toStringTag]?: unknown }, + value: string | unknown, + options?: { + force?: boolean; + nonConfigurable?: boolean; + }, +): void; + +export = setToStringTag; \ No newline at end of file diff --git a/node_modules/es-set-tostringtag/index.js b/node_modules/es-set-tostringtag/index.js new file mode 100644 index 0000000000000000000000000000000000000000..6b6b49c7734d884e49f33256602bf2cb755d839e --- /dev/null +++ b/node_modules/es-set-tostringtag/index.js @@ -0,0 +1,35 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); + +var hasToStringTag = require('has-tostringtag/shams')(); +var hasOwn = require('hasown'); +var $TypeError = require('es-errors/type'); + +var toStringTag = hasToStringTag ? Symbol.toStringTag : null; + +/** @type {import('.')} */ +module.exports = function setToStringTag(object, value) { + var overrideIfSet = arguments.length > 2 && !!arguments[2] && arguments[2].force; + var nonConfigurable = arguments.length > 2 && !!arguments[2] && arguments[2].nonConfigurable; + if ( + (typeof overrideIfSet !== 'undefined' && typeof overrideIfSet !== 'boolean') + || (typeof nonConfigurable !== 'undefined' && typeof nonConfigurable !== 'boolean') + ) { + throw new $TypeError('if provided, the `overrideIfSet` and `nonConfigurable` options must be booleans'); + } + if (toStringTag && (overrideIfSet || !hasOwn(object, toStringTag))) { + if ($defineProperty) { + $defineProperty(object, toStringTag, { + configurable: !nonConfigurable, + enumerable: false, + value: value, + writable: false + }); + } else { + object[toStringTag] = value; // eslint-disable-line no-param-reassign + } + } +}; diff --git a/node_modules/es-set-tostringtag/package.json b/node_modules/es-set-tostringtag/package.json new file mode 100644 index 0000000000000000000000000000000000000000..277c3e5a6407b8d4440961dfa8ea1fed19ff9f5c --- /dev/null +++ b/node_modules/es-set-tostringtag/package.json @@ -0,0 +1,78 @@ +{ + "name": "es-set-tostringtag", + "version": "2.1.0", + "description": "A helper to optimistically set Symbol.toStringTag, when possible.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@\">= 10.2\" audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/es-set-tostringtag.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/es-set-tostringtag/issues" + }, + "homepage": "https://github.com/es-shims/es-set-tostringtag#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.2", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/get-intrinsic": "^1.2.3", + "@types/has-symbols": "^1.0.2", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "./test/index.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/node_modules/es-set-tostringtag/test/index.js b/node_modules/es-set-tostringtag/test/index.js new file mode 100644 index 0000000000000000000000000000000000000000..f1757b3a803db86e4f41186a4ff2b7411724d39a --- /dev/null +++ b/node_modules/es-set-tostringtag/test/index.js @@ -0,0 +1,85 @@ +'use strict'; + +var test = require('tape'); +var hasToStringTag = require('has-tostringtag/shams')(); +var hasOwn = require('hasown'); + +var setToStringTag = require('../'); + +test('setToStringTag', function (t) { + t.equal(typeof setToStringTag, 'function', 'is a function'); + + /** @type {{ [Symbol.toStringTag]?: typeof sentinel }} */ + var obj = {}; + var sentinel = {}; + + setToStringTag(obj, sentinel); + + t['throws']( + // @ts-expect-error + function () { setToStringTag(obj, sentinel, { force: 'yes' }); }, + TypeError, + 'throws if options is not an object' + ); + + t.test('has Symbol.toStringTag', { skip: !hasToStringTag }, function (st) { + st.ok(hasOwn(obj, Symbol.toStringTag), 'has toStringTag property'); + + st.equal(obj[Symbol.toStringTag], sentinel, 'toStringTag property is as expected'); + + st.equal(String(obj), '[object Object]', 'toStringTag works'); + + /** @type {{ [Symbol.toStringTag]?: string }} */ + var tagged = {}; + tagged[Symbol.toStringTag] = 'already tagged'; + st.equal(String(tagged), '[object already tagged]', 'toStringTag works'); + + setToStringTag(tagged, 'new tag'); + st.equal(String(tagged), '[object already tagged]', 'toStringTag is unchanged'); + + setToStringTag(tagged, 'new tag', { force: true }); + st.equal(String(tagged), '[object new tag]', 'toStringTag is changed with force: true'); + + st.deepEqual( + Object.getOwnPropertyDescriptor(tagged, Symbol.toStringTag), + { + configurable: true, + enumerable: false, + value: 'new tag', + writable: false + }, + 'has expected property descriptor' + ); + + setToStringTag(tagged, 'new tag', { force: true, nonConfigurable: true }); + st.deepEqual( + Object.getOwnPropertyDescriptor(tagged, Symbol.toStringTag), + { + configurable: false, + enumerable: false, + value: 'new tag', + writable: false + }, + 'is nonconfigurable' + ); + + st.end(); + }); + + t.test('does not have Symbol.toStringTag', { skip: hasToStringTag }, function (st) { + var passed = true; + for (var key in obj) { // eslint-disable-line no-restricted-syntax + if (hasOwn(obj, key)) { + st.fail('object has own key ' + key); + passed = false; + } + } + if (passed) { + st.ok(true, 'object has no enumerable own keys'); + } + + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/es-set-tostringtag/tsconfig.json b/node_modules/es-set-tostringtag/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..d9a6668c3ae6be748c78fbd5694053706b3d6942 --- /dev/null +++ b/node_modules/es-set-tostringtag/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/es-toolkit/CHANGELOG.md b/node_modules/es-toolkit/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..60bb02183b6d9f05fb4f24d7e215b70d554c2e16 --- /dev/null +++ b/node_modules/es-toolkit/CHANGELOG.md @@ -0,0 +1,936 @@ +# es-toolkit Changelog + +## Version v1.50.0 + +Released on July 24th, 2026. + +- Added the `es-toolkit/types` entrypoint: a declaration-only module of compile-time + type utilities TypeScript lacks natively — `ValueOf`, `Simplify`, `Writable`, + `NonEmptyArray`, `DeepPartial`, and `DeepReadonly`. ([#1818]) +- Added `flow` to `es-toolkit/fp`, a reusable data-last composition built on `pipe`. ([#1812]) + +The following bring `es-toolkit/compat` closer to Lodash. Behavior for the affected +edge cases now matches Lodash, so results may differ if you relied on the previous output. + +- Fixed `compat/intersectionBy` to dedupe a single array (including by the iteratee) + and to keep results consistent with Lodash. ([#1935]) +- Fixed `compat/findIndex` and `compat/findLastIndex` to coerce a `NaN` `fromIndex` + to `0` and to convert `fromIndex` to an integer. ([#1828], [#1834], [#1938]) +- Fixed `compat/lastIndexOf` to coerce `fromIndex` like Lodash. ([#1832]) +- Fixed `compat/every` to treat a falsy, non-nullish `doesMatch` as a `_.property` + shorthand instead of identity. ([#1940]) +- Fixed `compat/nth` to support string inputs. ([#1833]) +- Fixed `compat/inRange` to not throw on a lone negative bound. ([#1835]) +- Fixed `compat/toArray` to convert `Set`s to arrays like Lodash. ([#1840]) +- Fixed `compat/values` to treat sparse array holes as `undefined`. ([#1894]) +- Fixed `compat/maxBy` and `compat/minBy` to restore Lodash-compatible comparison. ([#1893]) +- Fixed `compat/includes` to exclude the `length` property when matching array-like values. ([#1886]) +- Fixed the case functions to split ordinal numbers like Lodash, and to count string + size and padding by code points for multi-byte characters. ([#1836], [#1852], [#1853]) +- Fixed `compat/unset` to not treat an own literal dotted key as a deep path. ([#1808]) +- Moved `compat/flattenDepth`'s flattening logic out of `flatten`. ([#1847]) +- Restored the standalone `eq` and `templateSettings` entry points. ([#1895]) + +- Fixed `deburr` to remove all combining diacritical marks, matching Lodash. ([#1807]) +- Fixed `partition` to accept any predicate return value, like `Array.prototype.filter`. ([#1937]) +- Fixed `has` and `hasIn` to prioritize nullish literal keys over paths. ([#1810]) +- Fixed `invokeMap` to normalize a string path via `toPath` for `this` binding. ([#1814]) +- Fixed `isDeepKey` to detect deep keys with stricter patterns. ([#1621]) +- Fixed `unzipWith` to return an empty array instead of throwing on empty input. ([#1816]) + +- Improved documentation, JSDoc accuracy, and internal refactoring across `compat` + and `fp`. ([#1817], [#1820], [#1822], [#1823], [#1825], [#1829], [#1830], [#1842], + [#1845], [#1851], [#1858], [#1867], [#1879]) + +We sincerely thank @Antoliny0919, @raon0211, @dayongkr, @spokodev, @sarathfrancis90, +@mayur-shenoy, @mahirhir, @kojesung, @Hprogram, @BangDori, and everyone else who +contributed. We appreciate your great efforts! + +## Version v1.49.0 + +Released on June 26th, 2026. + +- Added the `es-toolkit/fp` entrypoint with data-last, pipeable utilities, + documentation, benchmarks, and bundle-size checks. ([#1781]) +- Added a broad set of array utilities to `es-toolkit/fp`, covering slicing, + grouping, set operations, ordering, zipping, and collection helpers. ([#1801]) +- Fixed `trimStart` to validate multi-character trim strings correctly before + it stops trimming. ([#1615]) +- Fixed `compat/pick` to prefer a literal key over a dot-notation path when the + picked value is `undefined`. ([#1775]) +- Fixed `compat/random` to better match Lodash behavior for coerced bounds and + floating-point options. ([#1767]) +- Fixed `compat/chunk` to handle `NaN` and `Infinity` size values consistently + with Lodash. ([#1797]) +- Improved documentation and JSDoc accuracy across array, function, and compat + references. ([#1785], [#1786], [#1788], [#1790], [#1791], [#1792], [#1793], + [#1795], [#1800]) + +We sincerely thank @Antoliny0919, @D-Sketon, @eunwoo-levi, and @raon0211 for +their contributions. We appreciate your great efforts! + +## Version v1.48.1 + +Released on June 21st, 2026. + +- Fixed the `jsdelivr` and `unpkg` CDN `