diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000..a11cb1e --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "restricted" +} \ No newline at end of file diff --git a/.changeset/swift-apricots-divide.md b/.changeset/swift-apricots-divide.md new file mode 100644 index 0000000..65b22af --- /dev/null +++ b/.changeset/swift-apricots-divide.md @@ -0,0 +1,5 @@ +--- +'@lunarclient/molang': major +--- + +Initial Release diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..eb8468b --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,56 @@ +name: Quality & Release + +on: [push] + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + quality: + name: Quality + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v3 + + - name: Install + uses: moonsworth/actions/setup-node@master + with: + node_version: 20 + node_scope: '@LunarClient' + github_token: ${{ secrets.GITHUB_TOKEN }} + npm_token: ${{ secrets.NPM_TOKEN }} + + - name: Build Packages + run: pnpm build + + - name: Run Tests + run: pnpm test + + - name: Check Types + run: pnpm types + release: + name: Release + runs-on: ubuntu-latest + needs: quality + if: github.ref == 'refs/heads/master' + steps: + - name: Checkout Repo + uses: actions/checkout@v3 + + - name: Install + uses: moonsworth/actions/setup-node@master + with: + node_version: 20 + node_scope: '@LunarClient' + github_token: ${{ secrets.GITHUB_TOKEN }} + npm_token: ${{ secrets.GITHUB_TOKEN }} + + - name: Create Release Pull Request or Publish to npm + id: changesets + uses: changesets/action@v1 + with: + publish: pnpm release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 85bd6f8..44e3650 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ node_modules perf/* - tsconfig.tsbuildinfo .DS_STORE \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..ed9bfca --- /dev/null +++ b/.npmrc @@ -0,0 +1,6 @@ +auto-install-peers=false +node-linker=hoisted +strict-peer-dependencies=false +dedupe-peer-dependents=true +@lunarclient:registry=https://npm.pkg.github.com/ +@moonsworth:registry=https://npm.pkg.github.com/ \ No newline at end of file diff --git a/dist/MoLang.d.ts b/dist/MoLang.d.ts deleted file mode 100644 index f1e408a..0000000 --- a/dist/MoLang.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ExecutionEnvironment } from './env/env'; -import { IExpression, IParserConfig } from './main'; -import { MolangParser } from './parser/molang'; -export declare class Molang { - protected config: Partial; - protected expressionCache: Record; - protected totalCacheEntries: number; - protected executionEnvironment: ExecutionEnvironment; - protected parser: MolangParser; - constructor(env?: Record, config?: Partial); - updateConfig(newConfig: Partial): void; - updateExecutionEnv(env: Record, isFlat?: boolean): void; - clearCache(): void; - execute(expression: string): unknown; - executeAndCatch(expression: string): unknown; - parse(expression: string): IExpression; - resolveStatic(ast: IExpression): IExpression; - minimize(ast: IExpression): IExpression; - getParser(): MolangParser; -} diff --git a/dist/custom/class.d.ts b/dist/custom/class.d.ts deleted file mode 100644 index 840fb48..0000000 --- a/dist/custom/class.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Parser } from '../parser/parse'; -import { Token } from '../tokenizer/token'; -import { IPrefixParselet } from '../parser/parselets/prefix'; -import { Expression, IExpression } from '../parser/expression'; -export declare class CustomClassParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): CustomClassExpression; -} -declare class CustomClassExpression extends Expression { - protected functionBody: IExpression; - type: string; - constructor(functions: Map, functionName: string, args: string[], functionBody: IExpression); - get allExpressions(): IExpression[]; - setExpressionAt(_: number, expr: IExpression): void; - get isReturn(): boolean; - isStatic(): boolean; - eval(): number; -} -export {}; diff --git a/dist/custom/function.d.ts b/dist/custom/function.d.ts deleted file mode 100644 index 9461b58..0000000 --- a/dist/custom/function.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Parser } from '../parser/parse'; -import { Token } from '../parser/../tokenizer/token'; -import { IPrefixParselet } from '../parser/parselets/prefix'; -import { Expression, IExpression } from '../parser/expression'; -export declare class CustomFunctionParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): CustomFunctionExpression; -} -declare class CustomFunctionExpression extends Expression { - protected functionBody: IExpression; - type: string; - constructor(functions: Map, functionName: string, args: string[], functionBody: IExpression); - get allExpressions(): IExpression[]; - setExpressionAt(_: number, expr: IExpression): void; - get isReturn(): boolean; - isStatic(): boolean; - eval(): number; -} -export {}; diff --git a/dist/custom/main.d.ts b/dist/custom/main.d.ts deleted file mode 100644 index 7023d59..0000000 --- a/dist/custom/main.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { IParserConfig } from '../main'; -import { MolangParser } from '../parser/molang'; -import { IExpression } from '../parser/expression'; -export declare class CustomMolangParser extends MolangParser { - readonly functions: Map; - readonly classes: Map; - constructor(config: Partial); - reset(): void; -} -export declare class CustomMolang { - protected parser: CustomMolangParser; - constructor(env: any); - get functions(): Map; - parse(expression: string): IExpression; - transform(source: string): string; - reset(): void; -} diff --git a/dist/custom/transformStatement.d.ts b/dist/custom/transformStatement.d.ts deleted file mode 100644 index 545bbaa..0000000 --- a/dist/custom/transformStatement.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { IExpression } from '../parser/expression'; -import { GroupExpression } from '../parser/expressions/group'; -import { StatementExpression } from '../parser/expressions/statement'; -export declare function transformStatement(expression: IExpression): IExpression | GroupExpression | StatementExpression; diff --git a/dist/env/env.d.ts b/dist/env/env.d.ts deleted file mode 100644 index a2e63f4..0000000 --- a/dist/env/env.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -export declare type TVariableHandler = (variableName: string, variables: Record) => unknown; -export interface IEnvConfig { - useRadians?: boolean; - convertUndefined?: boolean; - variableHandler?: TVariableHandler; - isFlat?: boolean; -} -export declare class ExecutionEnvironment { - readonly config: IEnvConfig; - protected env: Record; - constructor(env: Record, config: IEnvConfig); - updateConfig({ variableHandler, convertUndefined, useRadians, }: IEnvConfig): void; - get(): Record; - protected flattenEnv(newEnv: Record, addKey?: string, current?: any): any; - setAt(lookup: string, value: unknown): unknown; - getFrom(lookup: string): any; -} -export declare class Context { - readonly env: any; - readonly __isContext = true; - constructor(env: any); -} diff --git a/dist/env/math.d.ts b/dist/env/math.d.ts deleted file mode 100644 index 0b89ce0..0000000 --- a/dist/env/math.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -export declare const MolangMathLib: (useRadians: boolean) => { - 'math.abs': (x: number) => number; - 'math.acos': (x: number) => number; - 'math.asin': (x: number) => number; - 'math.atan': (x: number) => number; - 'math.atan2': (y: number, x: number) => number; - 'math.ceil': (x: number) => number; - 'math.clamp': (value: number, min: number, max: number) => number; - 'math.cos': (x: number) => number; - 'math.die_roll': (sum: number, low: number, high: number) => number; - 'math.die_roll_integer': (sum: number, low: number, high: number) => number; - 'math.exp': (x: number) => number; - 'math.floor': (x: number) => number; - 'math.hermite_blend': (value: number) => number; - 'math.lerp': (start: number, end: number, amount: number) => number; - 'math.lerp_rotate': (start: number, end: number, amount: number) => number; - 'math.ln': (x: number) => number; - 'math.max': (...values: number[]) => number; - 'math.min': (...values: number[]) => number; - 'math.min_angle': (value: number) => number; - 'math.mod': (value: number, denominator: number) => number; - 'math.pi': number; - 'math.pow': (x: number, y: number) => number; - 'math.random': (low: number, high: number) => number; - 'math.random_integer': (low: number, high: number) => number; - 'math.round': (x: number) => number; - 'math.sin': (x: number) => number; - 'math.sqrt': (x: number) => number; - 'math.trunc': (x: number) => number; -}; diff --git a/dist/env/queries.d.ts b/dist/env/queries.d.ts deleted file mode 100644 index 967b567..0000000 --- a/dist/env/queries.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare const standardQueries: { - 'query.in_range': (value: number, min: number, max: number) => boolean; - 'query.all': (mustMatch: unknown, ...values: unknown[]) => boolean; - 'query.any': (mustMatch: unknown, ...values: unknown[]) => boolean; - 'query.count': (countable: unknown) => number; -}; diff --git a/dist/env/standardEnv.d.ts b/dist/env/standardEnv.d.ts deleted file mode 100644 index f8e26ce..0000000 --- a/dist/env/standardEnv.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -export declare const standardEnv: (useRadians: boolean) => { - 'query.in_range': (value: number, min: number, max: number) => boolean; - 'query.all': (mustMatch: unknown, ...values: unknown[]) => boolean; - 'query.any': (mustMatch: unknown, ...values: unknown[]) => boolean; - 'query.count': (countable: unknown) => number; - 'math.abs': (x: number) => number; - 'math.acos': (x: number) => number; - 'math.asin': (x: number) => number; - 'math.atan': (x: number) => number; - 'math.atan2': (y: number, x: number) => number; - 'math.ceil': (x: number) => number; - 'math.clamp': (value: number, min: number, max: number) => number; - 'math.cos': (x: number) => number; - 'math.die_roll': (sum: number, low: number, high: number) => number; - 'math.die_roll_integer': (sum: number, low: number, high: number) => number; - 'math.exp': (x: number) => number; - 'math.floor': (x: number) => number; - 'math.hermite_blend': (value: number) => number; - 'math.lerp': (start: number, end: number, amount: number) => number; - 'math.lerp_rotate': (start: number, end: number, amount: number) => number; - 'math.ln': (x: number) => number; - 'math.max': (...values: number[]) => number; - 'math.min': (...values: number[]) => number; - 'math.min_angle': (value: number) => number; - 'math.mod': (value: number, denominator: number) => number; - 'math.pi': number; - 'math.pow': (x: number, y: number) => number; - 'math.random': (low: number, high: number) => number; - 'math.random_integer': (low: number, high: number) => number; - 'math.round': (x: number) => number; - 'math.sin': (x: number) => number; - 'math.sqrt': (x: number) => number; - 'math.trunc': (x: number) => number; -}; diff --git a/dist/main.d.ts b/dist/main.d.ts deleted file mode 100644 index 0984c92..0000000 --- a/dist/main.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { TVariableHandler } from './env/env'; -import { Tokenizer } from './tokenizer/Tokenizer'; -export interface IParserConfig { - useCache: boolean; - maxCacheSize: number; - useOptimizer: boolean; - useAgressiveStaticOptimizer: boolean; - earlyReturnsSkipParsing: boolean; - earlyReturnsSkipTokenization: boolean; - tokenizer: Tokenizer; - keepGroups: boolean; - convertUndefined: boolean; - useRadians: boolean; - variableHandler: TVariableHandler; - assumeFlatEnvironment: boolean; -} -export { Tokenizer } from './tokenizer/Tokenizer'; -export type { IExpression } from './parser/expression'; -export { CustomMolang } from './custom/main'; -export { Molang } from './Molang'; -export * as expressions from './parser/expressions/index'; -export { Context } from './env/env'; diff --git a/dist/molang.es.js b/dist/molang.es.js deleted file mode 100644 index 6ddc7e5..0000000 --- a/dist/molang.es.js +++ /dev/null @@ -1,1793 +0,0 @@ -var oe = Object.defineProperty; -var ae = (r, e, t) => e in r ? oe(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t; -var o = (r, e, t) => (ae(r, typeof e != "symbol" ? e + "" : e, t), t); -const he = { - "!": "BANG", - "&": "AND", - "(": "LEFT_PARENT", - ")": "RIGHT_PARENT", - "*": "ASTERISK", - "+": "PLUS", - ",": "COMMA", - "-": "MINUS", - "/": "SLASH", - ":": "COLON", - ";": "SEMICOLON", - "<": "SMALLER", - "=": "EQUALS", - ">": "GREATER", - "?": "QUESTION", - "[": "ARRAY_LEFT", - "]": "ARRAY_RIGHT", - "{": "CURLY_LEFT", - "|": "OR", - "}": "CURLY_RIGHT" -}, H = /* @__PURE__ */ new Set([ - "return", - "continue", - "break", - "for_each", - "loop", - "false", - "true" -]); -class N { - constructor(e, t, s, n) { - this.type = e, this.text = t, this.startColumn = s, this.startLine = n; - } - getType() { - return this.type; - } - getText() { - return this.text; - } - getPosition() { - return { - startColumn: this.startColumn, - startLineNumber: this.startLine, - endColumn: this.startColumn + this.text.length, - endLineNumber: this.startLine - }; - } -} -class D { - constructor(e) { - o(this, "keywordTokens"); - o(this, "i", 0); - o(this, "currentColumn", 0); - o(this, "currentLine", 0); - o(this, "lastColumns", 0); - o(this, "expression"); - e ? this.keywordTokens = /* @__PURE__ */ new Set([...H, ...e]) : this.keywordTokens = H; - } - init(e) { - this.currentLine = 0, this.currentColumn = 0, this.lastColumns = 0, this.i = 0, this.expression = e; - } - next() { - for (this.currentColumn = this.i - this.lastColumns; this.i < this.expression.length && (this.expression[this.i] === " " || this.expression[this.i] === " " || this.expression[this.i] === ` -`); ) - this.expression[this.i] === ` -` && (this.currentLine++, this.currentColumn = 0, this.lastColumns = this.i + 1), this.i++; - if (this.expression[this.i] === "#") { - const t = this.expression.indexOf(` -`, this.i + 1); - return this.i = t === -1 ? this.expression.length : t, this.currentLine++, this.lastColumns = this.i + 1, this.currentColumn = 0, this.next(); - } - let e = he[this.expression[this.i]]; - if (e) - return new N( - e, - this.expression[this.i++], - this.currentColumn, - this.currentLine - ); - if (this.isLetter(this.expression[this.i]) || this.expression[this.i] === "_") { - let t = this.i + 1; - for (; t < this.expression.length && (this.isLetter(this.expression[t]) || this.isNumber(this.expression[t]) || this.expression[t] === "_" || this.expression[t] === "."); ) - t++; - const s = this.expression.substring(this.i, t).toLowerCase(); - return this.i = t, new N( - this.keywordTokens.has(s) ? s.toUpperCase() : "NAME", - s, - this.currentColumn, - this.currentLine - ); - } else if (this.isNumber(this.expression[this.i]) || this.expression[this.i] === ".") { - let t = this.i + 1, s = this.expression[this.i] === "."; - for (; t < this.expression.length && (this.isNumber(this.expression[t]) || this.expression[t] === "." && !s); ) - this.expression[t] === "." && (s = !0), t++; - const n = new N( - "NUMBER", - this.expression.substring(this.i, t), - this.currentColumn, - this.currentLine - ), i = s && this.expression[t] === "f"; - return this.i = i ? t + 1 : t, n; - } else if (this.expression[this.i] === "'") { - let t = this.i + 1; - for (; t < this.expression.length && this.expression[t] !== "'"; ) - t++; - t++; - const s = new N( - "STRING", - this.expression.substring(this.i, t), - this.currentColumn, - this.currentLine - ); - return this.i = t, s; - } - return this.hasNext() ? (this.i++, this.next()) : new N("EOF", "", this.currentColumn, this.currentLine); - } - hasNext() { - return this.i < this.expression.length; - } - isLetter(e) { - return e >= "a" && e <= "z" || e >= "A" && e <= "Z"; - } - isNumber(e) { - return e >= "0" && e <= "9"; - } -} -const ue = (r, e, t) => typeof r != "number" || Number.isNaN(r) ? e : r > t ? t : r < e ? e : r, ce = (r, e, t) => { - let s = 0, n = 0; - for (; s < r; ) - n += V(e, t); - return n; -}, le = (r, e, t) => { - let s = 0, n = 0; - for (; s < r; ) - n += j(e, t); - return n; -}, pe = (r) => 3 * r ** 2 - 2 * r ** 3, fe = (r, e, t) => (t < 0 ? t = 0 : t > 1 && (t = 1), r + (e - r) * t), xe = (r, e, t) => { - const s = (n) => ((n + 180) % 360 + 180) % 360; - if (r = s(r), e = s(e), r > e) { - let n = r; - r = e, e = n; - } - return e - r > 180 ? s(e + t * (360 - (e - r))) : r + t * (e - r); -}, Ee = (r, e) => r % e, V = (r, e) => r + Math.random() * (e - r), j = (r, e) => Math.round(r + Math.random() * (e - r)), ge = (r) => (r = r % 360, r = (r + 360) % 360, r > 179 && (r -= 360), r), me = (r) => { - const e = r ? 1 : Math.PI / 180; - return { - "math.abs": Math.abs, - "math.acos": (t) => Math.acos(t) / e, - "math.asin": (t) => Math.asin(t) / e, - "math.atan": (t) => Math.atan(t) / e, - "math.atan2": (t, s) => Math.atan2(t, s) / e, - "math.ceil": Math.ceil, - "math.clamp": ue, - "math.cos": (t) => Math.cos(t * e), - "math.die_roll": ce, - "math.die_roll_integer": le, - "math.exp": Math.exp, - "math.floor": Math.floor, - "math.hermite_blend": pe, - "math.lerp": fe, - "math.lerp_rotate": xe, - "math.ln": Math.log, - "math.max": Math.max, - "math.min": Math.min, - "math.min_angle": ge, - "math.mod": Ee, - "math.pi": Math.PI, - "math.pow": Math.pow, - "math.random": V, - "math.random_integer": j, - "math.round": Math.round, - "math.sin": (t) => Math.sin(t * e), - "math.sqrt": Math.sqrt, - "math.trunc": Math.trunc - }; -}, we = (r, e, t) => typeof r != "number" || typeof e != "number" || typeof t != "number" ? (console.error('"query.in_range": value, min and max must be numbers'), !1) : r >= e && r <= t, Se = (r, ...e) => e.every((t) => t === r), ve = (r, ...e) => e.some((t) => t === r), Re = (r) => Array.isArray(r) ? r.length : 1, de = { - "query.in_range": we, - "query.all": Se, - "query.any": ve, - "query.count": Re -}, q = (r) => ({ - ...me(r), - ...de -}); -class I { - constructor(e, t) { - o(this, "env"); - var s; - if (this.config = t, !e) - throw new Error("Provided environment must be an object"); - this.env = { - ...q((s = t.useRadians) != null ? s : !1), - "query.self": () => this.env, - ...t.isFlat ? e : this.flattenEnv(e) - }; - } - updateConfig({ - variableHandler: e, - convertUndefined: t, - useRadians: s - }) { - t !== void 0 && (this.config.convertUndefined = t), typeof e == "function" && (this.config.variableHandler = e), !!this.config.useRadians != !!s && (this.env = Object.assign(this.env, q(!!s))); - } - get() { - return this.env; - } - flattenEnv(e, t = "", s = {}) { - var n; - for (let i in e) { - let a = i; - if (i[1] === ".") - switch (i[0]) { - case "q": - a = "query" + i.substring(1, i.length); - break; - case "t": - a = "temp" + i.substring(1, i.length); - break; - case "v": - a = "variable" + i.substring(1, i.length); - break; - case "c": - a = "context" + i.substring(1, i.length); - break; - case "f": - a = "function" + i.substring(1, i.length); - break; - } - (n = e[i]) != null && n.__isContext ? s[`${t}${a}`] = e[i].env : typeof e[i] == "object" && !Array.isArray(e[i]) ? this.flattenEnv(e[i], `${t}${i}.`, s) : s[`${t}${a}`] = e[i]; - } - return s; - } - setAt(e, t) { - if (e[1] === ".") - switch (e[0]) { - case "q": - e = "query" + e.substring(1, e.length); - break; - case "t": - e = "temp" + e.substring(1, e.length); - break; - case "v": - e = "variable" + e.substring(1, e.length); - break; - case "c": - e = "context" + e.substring(1, e.length); - break; - case "f": - e = "function" + e.substring(1, e.length); - break; - } - return this.env[e] = t; - } - getFrom(e) { - var s, n, i; - if (e[1] === ".") - switch (e[0]) { - case "q": - e = "query" + e.substring(1, e.length); - break; - case "t": - e = "temp" + e.substring(1, e.length); - break; - case "v": - e = "variable" + e.substring(1, e.length); - break; - case "c": - e = "context" + e.substring(1, e.length); - break; - case "f": - e = "function" + e.substring(1, e.length); - break; - } - const t = (i = this.env[e]) != null ? i : (n = (s = this.config).variableHandler) == null ? void 0 : n.call(s, e, this.env); - return t === void 0 && this.config.convertUndefined ? 0 : t; - } -} -class at { - constructor(e) { - o(this, "__isContext", !0); - this.env = e; - } -} -class u { - toString() { - return `${this.eval()}`; - } - walk(e, t = /* @__PURE__ */ new Set()) { - var n; - let s = (n = e(this)) != null ? n : this; - return s.iterate(e, t), s; - } - iterate(e, t) { - var s; - for (let n = 0; n < this.allExpressions.length; n++) { - const i = this.allExpressions[n]; - if (t.has(i)) - continue; - t.add(i); - const a = (s = e(i)) != null ? s : i; - a !== i && t.has(a) || (t.add(a), this.setExpressionAt(n, a), a.iterate(e, t)); - } - } - some(e) { - return this.allExpressions.some( - (t) => e(t) || t.some(e) - ); - } -} -class d extends u { - constructor() { - super(...arguments); - o(this, "type", "VoidExpression"); - } - get allExpressions() { - return []; - } - setExpressionAt() { - } - isStatic() { - return !0; - } - eval() { - return 0; - } - toString() { - return ""; - } -} -class ye { - constructor(e) { - o(this, "prefixParselets", /* @__PURE__ */ new Map()); - o(this, "infixParselets", /* @__PURE__ */ new Map()); - o(this, "readTokens", []); - o(this, "tokenIterator", new D()); - o(this, "executionEnv"); - this.config = e; - } - updateConfig(e) { - this.config = e; - } - init(e) { - this.tokenIterator.init(e), this.readTokens = []; - } - setTokenizer(e) { - this.tokenIterator = e; - } - setExecutionEnvironment(e) { - this.executionEnv = e; - } - parseExpression(e = 0) { - let t = this.consume(); - if (t.getType() === "EOF") - return new d(); - const s = this.prefixParselets.get(t.getType()); - if (!s) - throw new Error( - `Cannot parse ${t.getType()} expression "${t.getType()}"` - ); - let n = s.parse(this, t); - return this.parseInfixExpression(n, e); - } - parseInfixExpression(e, t = 0) { - let s; - for (; this.getPrecedence() > t; ) { - s = this.consume(); - let n = s.getType(); - n === "EQUALS" && !this.match("EQUALS") && (n = "ASSIGN"); - const i = this.infixParselets.get(n); - if (!i) - throw new Error(`Unknown infix parselet: "${n}"`); - e = i.parse(this, e, s); - } - return e; - } - getPrecedence() { - var t; - const e = this.infixParselets.get(this.lookAhead(0).getType()); - return (t = e == null ? void 0 : e.precedence) != null ? t : 0; - } - consume(e) { - const t = this.lookAhead(0); - if (e && t.getType() !== e) - throw new Error( - `Expected token "${e}" and found "${t.getType()}"` - ); - return this.readTokens.shift(), t; - } - match(e, t = !0) { - return this.lookAhead(0).getType() !== e ? !1 : (t && this.consume(), !0); - } - lookAhead(e) { - for (; e >= this.readTokens.length; ) - this.readTokens.push(this.tokenIterator.next()); - return this.readTokens[e]; - } - registerInfix(e, t) { - this.infixParselets.set(e, t); - } - registerPrefix(e, t) { - this.prefixParselets.set(e, t); - } - getInfix(e) { - return this.infixParselets.get(e); - } - getPrefix(e) { - return this.prefixParselets.get(e); - } -} -class c extends u { - constructor(t, s, n, i) { - super(); - o(this, "type", "GenericOperatorExpression"); - this.left = t, this.right = s, this.operator = n, this.evalHelper = i; - } - get allExpressions() { - return [this.left, this.right]; - } - setExpressionAt(t, s) { - t === 0 ? this.left = s : t === 1 && (this.right = s); - } - isStatic() { - return this.left.isStatic() && this.right.isStatic(); - } - eval() { - return this.evalHelper(this.left, this.right); - } - toString() { - return `${this.left.toString()}${this.operator}${this.right.toString()}`; - } -} -const Te = (r, e) => { - const t = r.eval(), s = e.eval(); - if (!(typeof t == "number" || typeof t == "boolean") || !(typeof s == "number" || typeof s == "boolean")) - throw new Error( - `Cannot use numeric operators for expression "${t} + ${s}"` - ); - return t + s; -}, Ae = (r, e) => { - const t = r.eval(), s = e.eval(); - if (!(typeof t == "number" || typeof t == "boolean") || !(typeof s == "number" || typeof s == "boolean")) - throw new Error( - `Cannot use numeric operators for expression "${t} - ${s}"` - ); - return t - s; -}, Ce = (r, e) => { - const t = r.eval(), s = e.eval(); - if (!(typeof t == "number" || typeof t == "boolean") || !(typeof s == "number" || typeof s == "boolean")) - throw new Error( - `Cannot use numeric operators for expression "${t} / ${s}"` - ); - return t / s; -}, Ne = (r, e) => { - const t = r.eval(), s = e.eval(); - if (!(typeof t == "number" || typeof t == "boolean") || !(typeof s == "number" || typeof s == "boolean")) - throw new Error( - `Cannot use numeric operators for expression "${t} * ${s}"` - ); - return t * s; -}, ke = (r, e) => { - if (r.setPointer) - return r.setPointer(e.eval()), 0; - throw Error(`Cannot assign to ${r.type}`); -}; -class k { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t, s) { - const n = e.parseExpression(this.precedence), i = s.getText(); - switch (i) { - case "+": - return new c( - t, - n, - i, - Te - ); - case "-": - return new c( - t, - n, - i, - Ae - ); - case "*": - return new c( - t, - n, - i, - Ne - ); - case "/": - return new c( - t, - n, - i, - Ce - ); - case "=": - return new c( - t, - n, - "=", - ke - ); - default: - throw new Error("Operator not implemented"); - } - } -} -var h = /* @__PURE__ */ ((r) => (r[r.SCOPE = 1] = "SCOPE", r[r.STATEMENT = 2] = "STATEMENT", r[r.ASSIGNMENT = 3] = "ASSIGNMENT", r[r.CONDITIONAL = 4] = "CONDITIONAL", r[r.ARRAY_ACCESS = 5] = "ARRAY_ACCESS", r[r.NULLISH_COALESCING = 6] = "NULLISH_COALESCING", r[r.AND = 7] = "AND", r[r.OR = 8] = "OR", r[r.EQUALS_COMPARE = 9] = "EQUALS_COMPARE", r[r.COMPARE = 10] = "COMPARE", r[r.SUM = 11] = "SUM", r[r.PRODUCT = 12] = "PRODUCT", r[r.EXPONENT = 13] = "EXPONENT", r[r.PREFIX = 14] = "PREFIX", r[r.POSTFIX = 15] = "POSTFIX", r[r.FUNCTION = 16] = "FUNCTION", r))(h || {}); -class X extends u { - constructor(t, s) { - super(); - o(this, "type", "PrefixExpression"); - this.tokenType = t, this.expression = s; - } - get allExpressions() { - return [this.expression]; - } - setExpressionAt(t, s) { - this.expression = s; - } - isStatic() { - return this.expression.isStatic(); - } - eval() { - const t = this.expression.eval(); - if (typeof t != "number") - throw new Error( - `Cannot use "${this.tokenType}" operator in front of ${typeof t} "${t}"` - ); - switch (this.tokenType) { - case "MINUS": - return -t; - case "BANG": - return !t; - } - } - toString() { - switch (this.tokenType) { - case "MINUS": - return `-${this.expression.toString()}`; - case "BANG": - return `!${this.expression.toString()}`; - } - throw new Error(`Unknown prefix operator: "${this.tokenType}"`); - } -} -class Q { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - return new X( - t.getType(), - e.parseExpression(this.precedence) - ); - } -} -class L extends u { - constructor(t) { - super(); - o(this, "type", "NumberExpression"); - this.value = t; - } - get allExpressions() { - return []; - } - setExpressionAt() { - } - isStatic() { - return !0; - } - eval() { - return this.value; - } - toString() { - const t = "" + this.value; - return t.startsWith("0.") ? t.slice(1) : t; - } -} -class be { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - return new L(Number(t.getText())); - } -} -class v extends u { - constructor(t, s, n = !1) { - super(); - o(this, "type", "NameExpression"); - this.executionEnv = t, this.name = s, this.isFunctionCall = n; - } - get allExpressions() { - return []; - } - setExpressionAt() { - } - isStatic() { - return !1; - } - setPointer(t) { - this.executionEnv.setAt(this.name, t); - } - setFunctionCall(t = !0) { - this.isFunctionCall = t; - } - setName(t) { - this.name = t; - } - setExecutionEnv(t) { - this.executionEnv = t; - } - eval() { - const t = this.executionEnv.getFrom(this.name); - return !this.isFunctionCall && typeof t == "function" ? t() : t; - } - toString() { - return this.name; - } -} -class Oe extends u { - constructor(t, s) { - super(); - o(this, "type", "NameExpression"); - this.leftExpr = t, this.rightExpr = s; - } - get allExpressions() { - return [this.leftExpr, this.rightExpr]; - } - setExpressionAt(t, s) { - if (!(s instanceof v)) - throw new Error( - `Cannot use context switch operator "->" on ${s.type}` - ); - t === 0 ? this.leftExpr = s : t === 1 && (this.rightExpr = s); - } - isStatic() { - return !1; - } - eval() { - const t = this.leftExpr.eval(); - return typeof t != "object" ? 0 : (this.rightExpr.setExecutionEnv( - new I( - t, - this.rightExpr.executionEnv.config - ) - ), this.rightExpr.eval()); - } - toString() { - return `${this.leftExpr.toString()}->${this.rightExpr.toString()}`; - } -} -class Ie { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - const s = new v( - e.executionEnv, - t.getText() - ), n = [e.lookAhead(0), e.lookAhead(1)]; - if (n[0].getType() === "MINUS" && n[1].getType() === "GREATER") { - e.consume("MINUS"), e.consume("GREATER"); - const i = e.parseExpression(h.FUNCTION - 1); - if (i.type !== "NameExpression" && i.type !== "FunctionExpression") - throw new Error( - `Cannot use context switch operator "->" on ${i.type}` - ); - return new Oe( - s, - i - ); - } - return s; - } -} -class g extends u { - constructor(t, s) { - super(); - o(this, "type", "GroupExpression"); - this.expression = t, this.brackets = s; - } - get allExpressions() { - return [this.expression]; - } - setExpressionAt(t, s) { - this.expression = s; - } - isStatic() { - return this.expression.isStatic(); - } - get isReturn() { - return this.expression.isReturn; - } - get isBreak() { - return this.expression.isBreak; - } - get isContinue() { - return this.expression.isContinue; - } - eval() { - return this.expression.eval(); - } - toString() { - return `${this.brackets[0]}${this.expression.toString()}${this.brackets[1]}`; - } -} -class Le { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - const s = e.parseExpression(this.precedence); - return e.consume("RIGHT_PARENT"), e.config.keepGroups ? new g(s, "()") : s; - } -} -class w extends u { - constructor(t) { - super(); - o(this, "type", "ReturnExpression"); - o(this, "isReturn", !0); - this.expression = t; - } - get allExpressions() { - return [this.expression]; - } - setExpressionAt(t, s) { - this.expression = s; - } - isStatic() { - return !1; - } - eval() { - return this.expression.eval(); - } - toString() { - return `return ${this.expression.toString()}`; - } -} -class Pe { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - const s = e.parseExpression(h.STATEMENT + 1); - return new w( - e.match("SEMICOLON", !1) ? s : new L(0) - ); - } -} -class S extends u { - constructor(t, s = !1) { - super(); - o(this, "type", "StaticExpression"); - this.value = t, this.isReturn = s; - } - get allExpressions() { - return []; - } - setExpressionAt() { - } - isStatic() { - return !0; - } - eval() { - return this.value; - } - toString() { - let t = this.value; - return typeof t == "string" && (t = `'${t}'`), this.isReturn ? `return ${t}` : "" + t; - } -} -class x extends u { - constructor(t) { - super(); - o(this, "type", "StatementExpression"); - o(this, "didReturn"); - o(this, "wasLoopBroken", !1); - o(this, "wasLoopContinued", !1); - this.expressions = t; - } - get allExpressions() { - return this.expressions; - } - setExpressionAt(t, s) { - this.expressions[t] = s; - } - get isReturn() { - if (this.didReturn !== void 0) - return this.didReturn; - let t = 0; - for (; t < this.expressions.length; ) { - const s = this.expressions[t]; - if (s.isBreak || s.isContinue) - return !1; - if (s.isReturn) - return this.didReturn = !0, !0; - t++; - } - return this.didReturn = !1, !1; - } - get isBreak() { - return this.wasLoopBroken ? (this.wasLoopBroken = !1, !0) : !1; - } - get isContinue() { - return this.wasLoopContinued ? (this.wasLoopContinued = !1, !0) : !1; - } - isStatic() { - let t = 0; - for (; t < this.expressions.length; ) { - if (!this.expressions[t].isStatic()) - return !1; - t++; - } - return !0; - } - eval() { - this.didReturn = !1, this.wasLoopBroken = !1, this.wasLoopContinued = !1; - let t = 0; - for (; t < this.expressions.length; ) { - let s = this.expressions[t].eval(); - if (this.expressions[t].isReturn) - return this.didReturn = !0, s; - if (this.expressions[t].isContinue) { - this.wasLoopContinued = !0; - return; - } else if (this.expressions[t].isBreak) { - this.wasLoopBroken = !0; - return; - } - t++; - } - return 0; - } - toString() { - let t = ""; - for (const s of this.expressions) { - if (s instanceof d || s instanceof S && !s.isReturn) - continue; - const n = s.toString(); - n && (t += `${n};`); - } - return t; - } -} -class Me { - constructor(e = 0) { - this.precedence = e; - } - findReEntryPoint(e) { - let t = 1, s = e.lookAhead(0).getType(); - for (; s !== "EOF" && (s == "CURLY_RIGHT" ? t-- : s === "CURLY_LEFT" && t++, t !== 0); ) - e.consume(), s = e.lookAhead(0).getType(); - } - parse(e, t, s) { - if (e.config.useOptimizer && (t.isStatic() && (t = new S(t.eval(), t.isReturn)), e.config.earlyReturnsSkipParsing && t.isReturn)) - return e.config.earlyReturnsSkipTokenization || this.findReEntryPoint(e), new x([t]); - const n = [t]; - if (!e.match("CURLY_RIGHT", !1)) - do { - let a = e.parseExpression(this.precedence); - if (e.config.useOptimizer) { - if (a.isStatic()) { - if (e.config.useAgressiveStaticOptimizer && !a.isReturn) - continue; - a = new S(a.eval(), a.isReturn); - } - if (e.config.earlyReturnsSkipParsing && (a.isBreak || a.isContinue || a.isReturn)) - return n.push(a), e.config.earlyReturnsSkipTokenization || this.findReEntryPoint(e), new x(n); - } - n.push(a); - } while (e.match("SEMICOLON") && !e.match("EOF") && !e.match("CURLY_RIGHT", !1)); - return e.match("SEMICOLON"), new x(n); - } -} -class O extends u { - constructor(t) { - super(); - o(this, "type", "StringExpression"); - this.name = t; - } - get allExpressions() { - return []; - } - setExpressionAt() { - } - isStatic() { - return !0; - } - eval() { - return this.name.substring(1, this.name.length - 1); - } - toString() { - return this.name; - } -} -class $e { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - return new O(t.getText()); - } -} -class W extends u { - constructor(t, s) { - super(); - o(this, "type", "FunctionExpression"); - this.name = t, this.args = s; - } - get allExpressions() { - return [this.name, ...this.args]; - } - setExpressionAt(t, s) { - t === 0 ? this.name = s : t > 0 && (this.args[t - 1] = s); - } - setExecutionEnv(t) { - this.name.setExecutionEnv(t); - } - get executionEnv() { - return this.name.executionEnv; - } - isStatic() { - return !1; - } - eval() { - const t = []; - let s = 0; - for (; s < this.args.length; ) - t.push(this.args[s++].eval()); - const n = this.name.eval(); - if (typeof n != "function") - throw new Error( - `${this.name.toString()} is not callable!` - ); - return n(...t); - } - toString() { - let t = `${this.name.toString()}(`; - for (let s = 0; s < this.args.length; s++) - t += `${this.args[s].toString()}${s + 1 < this.args.length ? "," : ""}`; - return `${t})`; - } -} -class _e { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t, s) { - const n = []; - if (!t.setFunctionCall) - throw new Error(`${t.type} is not callable!`); - if (t.setFunctionCall(!0), !e.match("RIGHT_PARENT")) { - do - n.push(e.parseExpression()); - while (e.match("COMMA")); - e.consume("RIGHT_PARENT"); - } - return new W(t, n); - } -} -class K extends u { - constructor(t, s) { - super(); - o(this, "type", "ArrayAccessExpression"); - this.name = t, this.lookup = s; - } - get allExpressions() { - return [this.name, this.lookup]; - } - setExpressionAt(t, s) { - t === 0 ? this.name = s : t === 1 && (this.lookup = s); - } - isStatic() { - return !1; - } - setPointer(t) { - this.name.eval()[this.lookup.eval()] = t; - } - eval() { - return this.name.eval()[this.lookup.eval()]; - } - toString() { - return `${this.name.toString()}[${this.lookup.toString()}]`; - } -} -class Ue { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t, s) { - const n = e.parseExpression(this.precedence - 1); - if (!t.setPointer) - throw new Error(`"${t.type}" is not an array`); - if (!e.match("ARRAY_RIGHT")) - throw new Error( - `No closing bracket for opening bracket "[${n.eval()}"` - ); - return new K(t, n); - } -} -class Fe { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - let s = e.parseExpression(this.precedence); - return e.config.useOptimizer && e.config.earlyReturnsSkipTokenization && s.isReturn ? e.match("CURLY_RIGHT") : e.consume("CURLY_RIGHT"), e.config.keepGroups ? new g(s, "{}") : s; - } -} -class Z extends u { - constructor(t, s) { - super(); - o(this, "type", "LoopExpression"); - this.count = t, this.expression = s; - } - get allExpressions() { - return [this.count, this.expression]; - } - get isNoopLoop() { - return this.count.isStatic() && this.count.eval() === 0; - } - setExpressionAt(t, s) { - t === 0 ? this.count = s : t === 1 && (this.expression = s); - } - get isReturn() { - return this.isNoopLoop ? !1 : this.expression.isReturn; - } - isStatic() { - return this.count.isStatic() && this.expression.isStatic(); - } - eval() { - const t = Number(this.count.eval()); - if (t === 0) - return 0; - if (Number.isNaN(t)) - throw new Error( - `First loop() argument must be of type number, received "${typeof this.count.eval()}"` - ); - if (t > 1024) - throw new Error( - `Cannot loop more than 1024x times, received "${t}"` - ); - let s = 0; - for (; s < t; ) { - s++; - const n = this.expression.eval(); - if (this.expression.isBreak) - break; - if (this.expression.isContinue) - continue; - if (this.expression.isReturn) - return n; - } - return 0; - } - toString() { - return this.isNoopLoop ? "" : `loop(${this.count.toString()},${this.expression.toString()})`; - } -} -class Ge { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - e.consume("LEFT_PARENT"); - const s = []; - if (e.match("RIGHT_PARENT")) - throw new Error("loop() called without arguments"); - do - s.push(e.parseExpression()); - while (e.match("COMMA")); - if (e.consume("RIGHT_PARENT"), s.length !== 2) - throw new Error( - `There must be exactly two loop() arguments; found ${s.length}` - ); - return new Z(s[0], s[1]); - } -} -class J extends u { - constructor(t, s, n) { - super(); - o(this, "type", "ForEachExpression"); - if (this.variable = t, this.arrayExpression = s, this.expression = n, !this.variable.setPointer) - throw new Error( - `First for_each() argument must be a variable, received "${typeof this.variable.eval()}"` - ); - } - get isReturn() { - return this.expression.isReturn; - } - get allExpressions() { - return [this.variable, this.arrayExpression, this.expression]; - } - setExpressionAt(t, s) { - t === 0 ? this.variable = s : t === 1 ? this.arrayExpression = s : t === 2 && (this.expression = s); - } - isStatic() { - return this.variable.isStatic() && this.arrayExpression.isStatic() && this.expression.isStatic(); - } - eval() { - var n, i; - const t = this.arrayExpression.eval(); - if (!Array.isArray(t)) - throw new Error( - `Second for_each() argument must be an array, received "${typeof t}"` - ); - let s = 0; - for (; s < t.length; ) { - (i = (n = this.variable).setPointer) == null || i.call(n, t[s++]); - const a = this.expression.eval(); - if (this.expression.isBreak) - break; - if (this.expression.isContinue) - continue; - if (this.expression.isReturn) - return a; - } - return 0; - } - toString() { - return `for_each(${this.variable.toString()},${this.arrayExpression.toString()},${this.expression.toString()})`; - } -} -class Be { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - e.consume("LEFT_PARENT"); - const s = []; - if (e.match("RIGHT_PARENT")) - throw new Error("for_each() called without arguments"); - do - s.push(e.parseExpression()); - while (e.match("COMMA")); - if (e.consume("RIGHT_PARENT"), s.length !== 3) - throw new Error( - `There must be exactly three for_each() arguments; found ${s.length}` - ); - return new J(s[0], s[1], s[2]); - } -} -class ee extends u { - constructor() { - super(); - o(this, "type", "ContinueExpression"); - o(this, "isContinue", !0); - } - get allExpressions() { - return []; - } - setExpressionAt() { - } - isStatic() { - return !1; - } - eval() { - return 0; - } - toString() { - return "continue"; - } -} -class ze { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - return new ee(); - } -} -class te extends u { - constructor() { - super(); - o(this, "type", "BreakExpression"); - o(this, "isBreak", !0); - } - get allExpressions() { - return []; - } - setExpressionAt() { - } - isStatic() { - return !1; - } - eval() { - return 0; - } - isString() { - return "break"; - } -} -class He { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - return new te(); - } -} -class se extends u { - constructor(t) { - super(); - o(this, "type", "BooleanExpression"); - this.value = t; - } - get allExpressions() { - return []; - } - setExpressionAt() { - } - isStatic() { - return !0; - } - eval() { - return this.value; - } -} -class Y { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - return new se(t.getText() === "true"); - } -} -class qe { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t, s) { - return new c( - t, - e.parseExpression(this.precedence), - "==", - (n, i) => n.eval() === i.eval() - ); - } -} -class Qe { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t, s) { - if (e.match("EQUALS")) - return new c( - t, - e.parseExpression(this.precedence), - "!=", - (n, i) => n.eval() !== i.eval() - ); - throw new Error("! was used as a binary operator"); - } -} -class Ye { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t, s) { - if (e.match("AND")) - return new c( - t, - e.parseExpression(this.precedence), - "&&", - (n, i) => n.eval() && i.eval() - ); - throw new Error('"&" not followed by another "&"'); - } -} -class De { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t, s) { - if (e.match("OR")) - return new c( - t, - e.parseExpression(this.precedence), - "||", - (n, i) => n.eval() || i.eval() - ); - throw new Error('"|" not followed by another "|"'); - } -} -class Ve { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t, s) { - return e.match("EQUALS") ? new c( - t, - e.parseExpression(this.precedence), - "<=", - (n, i) => n.eval() <= i.eval() - ) : new c( - t, - e.parseExpression(this.precedence), - "<", - (n, i) => n.eval() < i.eval() - ); - } -} -class je { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t, s) { - return e.match("EQUALS") ? new c( - t, - e.parseExpression(this.precedence), - ">=", - (n, i) => n.eval() >= i.eval() - ) : new c( - t, - e.parseExpression(this.precedence), - ">", - (n, i) => n.eval() > i.eval() - ); - } -} -class P extends u { - constructor(t, s, n) { - super(); - o(this, "type", "TernaryExpression"); - o(this, "leftResult"); - this.leftExpression = t, this.thenExpression = s, this.elseExpression = n; - } - get allExpressions() { - return this.leftExpression.isStatic() ? [ - this.leftExpression, - this.leftExpression.eval() ? this.thenExpression : this.elseExpression - ] : [this.leftExpression, this.thenExpression, this.elseExpression]; - } - setExpressionAt(t, s) { - t === 0 ? this.leftExpression = s : t === 1 ? this.thenExpression = s : t === 2 && (this.elseExpression = s); - } - get isReturn() { - return this.leftResult === void 0 ? this.thenExpression.isReturn && this.elseExpression.isReturn : this.leftResult ? this.thenExpression.isReturn : this.elseExpression.isReturn; - } - get hasReturn() { - return this.thenExpression.isReturn || this.elseExpression.isReturn; - } - get isContinue() { - return this.leftResult === void 0 ? this.thenExpression.isContinue && this.elseExpression.isContinue : this.leftResult ? this.thenExpression.isContinue : this.elseExpression.isContinue; - } - get isBreak() { - return this.leftResult === void 0 ? this.thenExpression.isBreak && this.elseExpression.isBreak : this.leftResult ? this.thenExpression.isBreak : this.elseExpression.isBreak; - } - isStatic() { - return this.leftExpression.isStatic() && this.thenExpression.isStatic() && this.elseExpression.isStatic(); - } - eval() { - return this.leftResult = this.leftExpression.eval(), this.leftResult ? this.thenExpression.eval() : this.elseExpression.eval(); - } - toString() { - return this.elseExpression instanceof d ? `${this.leftExpression.toString()}?${this.thenExpression.toString()}` : `${this.leftExpression.toString()}?${this.thenExpression.toString()}:${this.elseExpression.toString()}`; - } -} -class Xe { - constructor(e = 0) { - o(this, "exprName", "Ternary"); - this.precedence = e; - } - parse(e, t, s) { - let n = e.parseExpression(this.precedence - 1), i; - return e.match("COLON") ? i = e.parseExpression(this.precedence - 1) : i = new d(), e.config.useOptimizer && t.isStatic() ? t.eval() ? n : i : new P(t, n, i); - } -} -const We = new Xe(h.CONDITIONAL); -class Ke { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t, s) { - return e.match("QUESTION") ? new c( - t, - e.parseExpression(this.precedence), - "??", - (n, i) => { - var a; - return (a = n.eval()) != null ? a : i.eval(); - } - ) : We.parse(e, t, s); - } -} -class re extends ye { - constructor(e) { - super(e), this.registerPrefix("NAME", new Ie()), this.registerPrefix("STRING", new $e()), this.registerPrefix("NUMBER", new be()), this.registerPrefix("TRUE", new Y(h.PREFIX)), this.registerPrefix("FALSE", new Y(h.PREFIX)), this.registerPrefix("RETURN", new Pe()), this.registerPrefix("CONTINUE", new ze()), this.registerPrefix("BREAK", new He()), this.registerPrefix("LOOP", new Ge()), this.registerPrefix("FOR_EACH", new Be()), this.registerInfix( - "QUESTION", - new Ke(h.CONDITIONAL) - ), this.registerPrefix("LEFT_PARENT", new Le()), this.registerInfix( - "LEFT_PARENT", - new _e(h.FUNCTION) - ), this.registerInfix( - "ARRAY_LEFT", - new Ue(h.ARRAY_ACCESS) - ), this.registerPrefix("CURLY_LEFT", new Fe(h.SCOPE)), this.registerInfix( - "SEMICOLON", - new Me(h.STATEMENT) - ), this.registerPrefix("MINUS", new Q(h.PREFIX)), this.registerPrefix("BANG", new Q(h.PREFIX)), this.registerInfix("PLUS", new k(h.SUM)), this.registerInfix("MINUS", new k(h.SUM)), this.registerInfix("ASTERISK", new k(h.PRODUCT)), this.registerInfix("SLASH", new k(h.PRODUCT)), this.registerInfix( - "EQUALS", - new qe(h.EQUALS_COMPARE) - ), this.registerInfix( - "BANG", - new Qe(h.EQUALS_COMPARE) - ), this.registerInfix("GREATER", new je(h.COMPARE)), this.registerInfix("SMALLER", new Ve(h.COMPARE)), this.registerInfix("AND", new Ye(h.AND)), this.registerInfix("OR", new De(h.OR)), this.registerInfix("ASSIGN", new k(h.ASSIGNMENT)); - } -} -class Ze { - constructor(e = 0) { - this.precedence = e; - } - parse(e, t) { - if (e.consume("LEFT_PARENT"), e.match("RIGHT_PARENT")) - throw new Error("function() called without arguments"); - let s = [], n, i; - do { - const a = e.parseExpression(); - if (a instanceof O) - i ? s.push(a.eval()) : i = a.eval(); - else if (a instanceof x || a instanceof g) - n = a; - else - throw new Error( - `Unexpected expresion: found "${a.constructor.name}"` - ); - } while (e.match("COMMA")); - if (e.consume("RIGHT_PARENT"), !i) - throw new Error( - `Missing function() name (argument 1); found "${i}"` - ); - if (!n) - throw new Error( - `Missing function() body (argument ${s.length + 2})` - ); - if (e.lookAhead(0).getType() !== "SEMICOLON") - throw new Error("Missing semicolon after function expression"); - return new Je( - e.functions, - i, - s, - n - ); - } -} -class Je extends u { - constructor(t, s, n, i) { - super(); - o(this, "type", "CustomFunctionExpression"); - this.functionBody = i, t.set(s.toLowerCase(), [ - n, - i instanceof g ? i.allExpressions[0].toString() : i.toString() - ]); - } - get allExpressions() { - return [this.functionBody]; - } - setExpressionAt(t, s) { - this.functionBody = s; - } - get isReturn() { - return !1; - } - isStatic() { - return !0; - } - eval() { - return 0; - } -} -class et extends u { - constructor(t, s) { - super(); - o(this, "type", "PostfixExpression"); - this.expression = t, this.tokenType = s; - } - get allExpressions() { - return [this.expression]; - } - setExpressionAt(t, s) { - this.expression = s; - } - isStatic() { - return this.expression.isStatic(); - } - eval() { - switch (this.tokenType) { - } - } -} -const ht = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - ArrayAccessExpression: K, - BooleanExpression: se, - BreakExpression: te, - ContinueExpression: ee, - ForEachExpression: J, - FunctionExpression: W, - GenericOperatorExpression: c, - GroupExpression: g, - LoopExpression: Z, - NameExpression: v, - NumberExpression: L, - PostfixExpression: et, - PrefixExpression: X, - ReturnExpression: w, - StatementExpression: x, - StaticExpression: S, - StringExpression: O, - TernaryExpression: P, - VoidExpression: d -}, Symbol.toStringTag, { value: "Module" })); -class tt { - constructor(e = {}, t = {}) { - o(this, "expressionCache", {}); - o(this, "totalCacheEntries", 0); - o(this, "executionEnvironment"); - o(this, "parser"); - this.config = t, t.useOptimizer === void 0 && (this.config.useOptimizer = !0), t.useCache === void 0 && (this.config.useCache = !0), t.earlyReturnsSkipParsing === void 0 && (this.config.earlyReturnsSkipParsing = !0), t.earlyReturnsSkipTokenization === void 0 && (this.config.earlyReturnsSkipTokenization = !0), t.convertUndefined === void 0 && (this.config.convertUndefined = !1), this.parser = new re({ - ...this.config, - tokenizer: void 0 - }), this.updateExecutionEnv(e, t.assumeFlatEnvironment); - } - updateConfig(e) { - e = Object.assign(this.config, e), e.tokenizer && this.parser.setTokenizer(e.tokenizer), this.parser.updateConfig({ ...this.config, tokenizer: void 0 }), this.executionEnvironment.updateConfig(e); - } - updateExecutionEnv(e, t = !1) { - this.executionEnvironment = new I(e, { - useRadians: this.config.useRadians, - convertUndefined: this.config.convertUndefined, - isFlat: t, - variableHandler: this.config.variableHandler - }), this.parser.setExecutionEnvironment(this.executionEnvironment); - } - clearCache() { - this.expressionCache = {}, this.totalCacheEntries = 0; - } - execute(e) { - this.parser.setExecutionEnvironment(this.executionEnvironment); - const s = this.parse(e).eval(); - return s === void 0 ? 0 : typeof s == "boolean" ? Number(s) : s; - } - executeAndCatch(e) { - try { - return this.execute(e); - } catch { - return 0; - } - } - parse(e) { - var s, n, i; - if ((s = this.config.useCache) == null || s) { - const a = this.expressionCache[e]; - if (a) - return a; - } - this.parser.init(e); - let t = this.parser.parseExpression(); - return ((n = this.config.useOptimizer) != null ? n : !0) && t.isStatic() && (t = new S(t.eval())), ((i = this.config.useCache) == null || i) && (this.totalCacheEntries > (this.config.maxCacheSize || 256) && this.clearCache(), this.expressionCache[e] = t, this.totalCacheEntries++), t; - } - resolveStatic(e) { - return e = e.walk((t) => { - if (!(t instanceof O) && t.isStatic()) - return new S(t.eval()); - }), e = e.walk((t) => { - if (t instanceof c) - switch (t.operator) { - case "+": - case "-": { - const s = t.allExpressions.find( - (n) => n.isStatic() && n.eval() === 0 - ); - if (s) - return t.allExpressions.find( - (n) => n !== s - ); - break; - } - case "*": - if (t.allExpressions.find( - (n) => n.isStatic() && n.eval() === 0 - )) - return new S(0); - case "*": - case "/": { - const s = t.allExpressions.find( - (n) => n.isStatic() && n.eval() === 1 - ); - if (s) - return t.allExpressions.find( - (n) => n !== s - ); - break; - } - } - }), e; - } - minimize(e) { - e = this.resolveStatic(e); - const t = /* @__PURE__ */ new Map([ - ["query.", "q."], - ["variable.", "v."], - ["context.", "c."], - ["temp.", "t."] - ]); - e = e.walk((n) => { - if (n instanceof v) { - const i = n.toString(); - for (const [a, y] of t) - i.startsWith(a) && n.setName(i.replace(a, y)); - return n; - } - }); - const s = /* @__PURE__ */ new Map(); - return e = e.walk((n) => { - if (n instanceof v) { - const i = n.toString(); - if (!i.startsWith("v.") && !i.startsWith("t.")) - return; - if (s.has(i)) - n.setName(s.get(i)); - else { - const a = `v.v${s.size}`; - s.set(i, a), n.setName(a); - } - return n; - } - }), e; - } - getParser() { - return this.parser; - } -} -function st(r) { - if (r instanceof w) - return new g(r.allExpressions[0], "()"); - if (!(r instanceof x) || r.allExpressions.length > 1) - return r; - const e = r.allExpressions[0]; - return e instanceof w ? new g(e.allExpressions[0], "()") : r; -} -class rt extends re { - constructor(t) { - super(t); - o(this, "functions", /* @__PURE__ */ new Map()); - o(this, "classes", /* @__PURE__ */ new Map()); - this.registerPrefix("FUNCTION", new Ze()); - } - reset() { - this.functions.clear(); - } -} -class ut { - constructor(e) { - o(this, "parser"); - this.parser = new rt({ - useCache: !1, - useOptimizer: !0, - useAgressiveStaticOptimizer: !0, - keepGroups: !0, - earlyReturnsSkipParsing: !1, - earlyReturnsSkipTokenization: !1 - }), this.parser.setExecutionEnvironment( - new I(this.parser, e) - ), this.parser.setTokenizer( - new D(/* @__PURE__ */ new Set(["function"])) - ); - } - get functions() { - return this.parser.functions; - } - parse(e) { - return this.parser.init(e.replace(/\"/g, "'")), this.parser.parseExpression(); - } - transform(e) { - const t = new tt( - {}, - { - useCache: !1, - keepGroups: !0, - useOptimizer: !0, - useAgressiveStaticOptimizer: !0, - earlyReturnsSkipParsing: !0, - earlyReturnsSkipTokenization: !1 - } - ); - let s = 0, n = t.parse(e), i = !1; - n instanceof x && (i = !0); - let a = !1; - n = n.walk((T) => { - var _, U, F, G, B; - if (T.type !== "FunctionExpression" || !((U = (_ = T.name.name).startsWith) != null && U.call(_, "f.")) && !((G = (F = T.name.name).startsWith) != null && G.call(F, "function."))) - return; - const ne = T.name.name.replace(/(f|function)\./g, ""), ie = T.args; - let [M, A] = (B = this.functions.get(ne)) != null ? B : []; - if (!A || !M) - return; - A = A.replace( - /(a|arg)\.(\w+)/g, - (p, E, l) => { - var R, C; - return ((C = (R = ie[M.indexOf(l)]) == null ? void 0 : R.toString()) != null ? C : "0").replace(/(t|temp)\./, "outer_temp."); - } - ); - let m = st(t.parse(A)); - if (m instanceof x) { - const p = m.allExpressions.some( - (l) => l instanceof w - ), E = p || m.some((l) => l instanceof w); - m = t.parse( - `({${A}}+${E ? p ? "t.return_value" : "(t.return_value??0)" : "0"})` - ), a = !0; - } - const $ = /* @__PURE__ */ new Map(); - return m = m.walk((p) => { - if (p instanceof v) { - let l = p.toString().split("."); - const f = l.shift(), [R, ...C] = l, z = C.length > 0 ? "." + C.join(".") : ""; - if (f === "t" || f === "temp") { - let b = $.get(R); - b || (b = `t.__scvar${s++}`, $.set(R, b)), p.setName(`${b}${z}`); - } else - f === "outer_temp" && p.setName(`t.${R}${z}`); - return; - } else if (p instanceof w) { - const E = new v( - t.getParser().executionEnv, - "t.return_value" - ), l = p.allExpressions[0]; - return new c( - E, - l, - "=", - () => { - E.setPointer(l.eval()); - } - ); - } else if (p instanceof x) { - const E = []; - for (let l = 0; l < p.allExpressions.length; l++) { - const f = p.allExpressions[l]; - if (f instanceof P && f.hasReturn) { - nt( - f, - p.allExpressions.slice(l + 1) - ), E.push(f); - break; - } else if (f.isReturn) { - E.push(f); - break; - } - E.push(f); - } - return new x(E); - } - }), m; - }); - const y = t.parse(n.toString()); - return t.resolveStatic(y), !i && a ? `return ${y.toString()};` : y.toString(); - } - reset() { - this.functions.clear(); - } -} -function nt(r, e) { - if (r.isReturn) - return; - const t = r.allExpressions[2].isReturn ? 1 : 2, s = r.allExpressions[t]; - s instanceof d || (s instanceof g && s.allExpressions[0] instanceof x ? e.unshift(...s.allExpressions) : e.unshift(s)), e.length > 0 && r.setExpressionAt( - t, - new g( - new x(e), - "{}" - ) - ); -} -export { - at as Context, - ut as CustomMolang, - tt as Molang, - D as Tokenizer, - ht as expressions -}; diff --git a/dist/molang.umd.js b/dist/molang.umd.js deleted file mode 100644 index 127a5f4..0000000 --- a/dist/molang.umd.js +++ /dev/null @@ -1,4 +0,0 @@ -(function(l,x){typeof exports=="object"&&typeof module<"u"?x(exports):typeof define=="function"&&define.amd?define(["exports"],x):(l=typeof globalThis<"u"?globalThis:l||self,x(l.Molang={}))})(this,function(l){"use strict";var rt=Object.defineProperty;var nt=(l,x,S)=>x in l?rt(l,x,{enumerable:!0,configurable:!0,writable:!0,value:S}):l[x]=S;var o=(l,x,S)=>(nt(l,typeof x!="symbol"?x+"":x,S),S);const x={"!":"BANG","&":"AND","(":"LEFT_PARENT",")":"RIGHT_PARENT","*":"ASTERISK","+":"PLUS",",":"COMMA","-":"MINUS","/":"SLASH",":":"COLON",";":"SEMICOLON","<":"SMALLER","=":"EQUALS",">":"GREATER","?":"QUESTION","[":"ARRAY_LEFT","]":"ARRAY_RIGHT","{":"CURLY_LEFT","|":"OR","}":"CURLY_RIGHT"},S=new Set(["return","continue","break","for_each","loop","false","true"]);class C{constructor(e,t,s,n){this.type=e,this.text=t,this.startColumn=s,this.startLine=n}getType(){return this.type}getText(){return this.text}getPosition(){return{startColumn:this.startColumn,startLineNumber:this.startLine,endColumn:this.startColumn+this.text.length,endLineNumber:this.startLine}}}class P{constructor(e){o(this,"keywordTokens");o(this,"i",0);o(this,"currentColumn",0);o(this,"currentLine",0);o(this,"lastColumns",0);o(this,"expression");e?this.keywordTokens=new Set([...S,...e]):this.keywordTokens=S}init(e){this.currentLine=0,this.currentColumn=0,this.lastColumns=0,this.i=0,this.expression=e}next(){for(this.currentColumn=this.i-this.lastColumns;this.i="a"&&e<="z"||e>="A"&&e<="Z"}isNumber(e){return e>="0"&&e<="9"}}const ae=(r,e,t)=>typeof r!="number"||Number.isNaN(r)?e:r>t?t:r{let s=0,n=0;for(;s{let s=0,n=0;for(;s3*r**2-2*r**3,le=(r,e,t)=>(t<0?t=0:t>1&&(t=1),r+(e-r)*t),pe=(r,e,t)=>{const s=n=>((n+180)%360+180)%360;if(r=s(r),e=s(e),r>e){let n=r;r=e,e=n}return e-r>180?s(e+t*(360-(e-r))):r+t*(e-r)},fe=(r,e)=>r%e,F=(r,e)=>r+Math.random()*(e-r),G=(r,e)=>Math.round(r+Math.random()*(e-r)),xe=r=>(r=r%360,r=(r+360)%360,r>179&&(r-=360),r),Ee=r=>{const e=r?1:Math.PI/180;return{"math.abs":Math.abs,"math.acos":t=>Math.acos(t)/e,"math.asin":t=>Math.asin(t)/e,"math.atan":t=>Math.atan(t)/e,"math.atan2":(t,s)=>Math.atan2(t,s)/e,"math.ceil":Math.ceil,"math.clamp":ae,"math.cos":t=>Math.cos(t*e),"math.die_roll":he,"math.die_roll_integer":ue,"math.exp":Math.exp,"math.floor":Math.floor,"math.hermite_blend":ce,"math.lerp":le,"math.lerp_rotate":pe,"math.ln":Math.log,"math.max":Math.max,"math.min":Math.min,"math.min_angle":xe,"math.mod":fe,"math.pi":Math.PI,"math.pow":Math.pow,"math.random":F,"math.random_integer":G,"math.round":Math.round,"math.sin":t=>Math.sin(t*e),"math.sqrt":Math.sqrt,"math.trunc":Math.trunc}},ge={"query.in_range":(r,e,t)=>typeof r!="number"||typeof e!="number"||typeof t!="number"?(console.error('"query.in_range": value, min and max must be numbers'),!1):r>=e&&r<=t,"query.all":(r,...e)=>e.every(t=>t===r),"query.any":(r,...e)=>e.some(t=>t===r),"query.count":r=>Array.isArray(r)?r.length:1},B=r=>({...Ee(r),...ge});class ${constructor(e,t){o(this,"env");var s;if(this.config=t,!e)throw new Error("Provided environment must be an object");this.env={...B((s=t.useRadians)!=null?s:!1),"query.self":()=>this.env,...t.isFlat?e:this.flattenEnv(e)}}updateConfig({variableHandler:e,convertUndefined:t,useRadians:s}){t!==void 0&&(this.config.convertUndefined=t),typeof e=="function"&&(this.config.variableHandler=e),!!this.config.useRadians!=!!s&&(this.env=Object.assign(this.env,B(!!s)))}get(){return this.env}flattenEnv(e,t="",s={}){var n;for(let i in e){let a=i;if(i[1]===".")switch(i[0]){case"q":a="query"+i.substring(1,i.length);break;case"t":a="temp"+i.substring(1,i.length);break;case"v":a="variable"+i.substring(1,i.length);break;case"c":a="context"+i.substring(1,i.length);break;case"f":a="function"+i.substring(1,i.length);break}(n=e[i])!=null&&n.__isContext?s[`${t}${a}`]=e[i].env:typeof e[i]=="object"&&!Array.isArray(e[i])?this.flattenEnv(e[i],`${t}${i}.`,s):s[`${t}${a}`]=e[i]}return s}setAt(e,t){if(e[1]===".")switch(e[0]){case"q":e="query"+e.substring(1,e.length);break;case"t":e="temp"+e.substring(1,e.length);break;case"v":e="variable"+e.substring(1,e.length);break;case"c":e="context"+e.substring(1,e.length);break;case"f":e="function"+e.substring(1,e.length);break}return this.env[e]=t}getFrom(e){var s,n,i;if(e[1]===".")switch(e[0]){case"q":e="query"+e.substring(1,e.length);break;case"t":e="temp"+e.substring(1,e.length);break;case"v":e="variable"+e.substring(1,e.length);break;case"c":e="context"+e.substring(1,e.length);break;case"f":e="function"+e.substring(1,e.length);break}const t=(i=this.env[e])!=null?i:(n=(s=this.config).variableHandler)==null?void 0:n.call(s,e,this.env);return t===void 0&&this.config.convertUndefined?0:t}}class me{constructor(e){o(this,"__isContext",!0);this.env=e}}class u{toString(){return`${this.eval()}`}walk(e,t=new Set){var n;let s=(n=e(this))!=null?n:this;return s.iterate(e,t),s}iterate(e,t){var s;for(let n=0;ne(t)||t.some(e))}}class T extends u{constructor(){super(...arguments);o(this,"type","VoidExpression")}get allExpressions(){return[]}setExpressionAt(){}isStatic(){return!0}eval(){return 0}toString(){return""}}class we{constructor(e){o(this,"prefixParselets",new Map);o(this,"infixParselets",new Map);o(this,"readTokens",[]);o(this,"tokenIterator",new P);o(this,"executionEnv");this.config=e}updateConfig(e){this.config=e}init(e){this.tokenIterator.init(e),this.readTokens=[]}setTokenizer(e){this.tokenIterator=e}setExecutionEnvironment(e){this.executionEnv=e}parseExpression(e=0){let t=this.consume();if(t.getType()==="EOF")return new T;const s=this.prefixParselets.get(t.getType());if(!s)throw new Error(`Cannot parse ${t.getType()} expression "${t.getType()}"`);let n=s.parse(this,t);return this.parseInfixExpression(n,e)}parseInfixExpression(e,t=0){let s;for(;this.getPrecedence()>t;){s=this.consume();let n=s.getType();n==="EQUALS"&&!this.match("EQUALS")&&(n="ASSIGN");const i=this.infixParselets.get(n);if(!i)throw new Error(`Unknown infix parselet: "${n}"`);e=i.parse(this,e,s)}return e}getPrecedence(){var t;const e=this.infixParselets.get(this.lookAhead(0).getType());return(t=e==null?void 0:e.precedence)!=null?t:0}consume(e){const t=this.lookAhead(0);if(e&&t.getType()!==e)throw new Error(`Expected token "${e}" and found "${t.getType()}"`);return this.readTokens.shift(),t}match(e,t=!0){return this.lookAhead(0).getType()!==e?!1:(t&&this.consume(),!0)}lookAhead(e){for(;e>=this.readTokens.length;)this.readTokens.push(this.tokenIterator.next());return this.readTokens[e]}registerInfix(e,t){this.infixParselets.set(e,t)}registerPrefix(e,t){this.prefixParselets.set(e,t)}getInfix(e){return this.infixParselets.get(e)}getPrefix(e){return this.prefixParselets.get(e)}}class c extends u{constructor(t,s,n,i){super();o(this,"type","GenericOperatorExpression");this.left=t,this.right=s,this.operator=n,this.evalHelper=i}get allExpressions(){return[this.left,this.right]}setExpressionAt(t,s){t===0?this.left=s:t===1&&(this.right=s)}isStatic(){return this.left.isStatic()&&this.right.isStatic()}eval(){return this.evalHelper(this.left,this.right)}toString(){return`${this.left.toString()}${this.operator}${this.right.toString()}`}}const Se=(r,e)=>{const t=r.eval(),s=e.eval();if(!(typeof t=="number"||typeof t=="boolean")||!(typeof s=="number"||typeof s=="boolean"))throw new Error(`Cannot use numeric operators for expression "${t} + ${s}"`);return t+s},ve=(r,e)=>{const t=r.eval(),s=e.eval();if(!(typeof t=="number"||typeof t=="boolean")||!(typeof s=="number"||typeof s=="boolean"))throw new Error(`Cannot use numeric operators for expression "${t} - ${s}"`);return t-s},de=(r,e)=>{const t=r.eval(),s=e.eval();if(!(typeof t=="number"||typeof t=="boolean")||!(typeof s=="number"||typeof s=="boolean"))throw new Error(`Cannot use numeric operators for expression "${t} / ${s}"`);return t/s},Re=(r,e)=>{const t=r.eval(),s=e.eval();if(!(typeof t=="number"||typeof t=="boolean")||!(typeof s=="number"||typeof s=="boolean"))throw new Error(`Cannot use numeric operators for expression "${t} * ${s}"`);return t*s},ye=(r,e)=>{if(r.setPointer)return r.setPointer(e.eval()),0;throw Error(`Cannot assign to ${r.type}`)};class N{constructor(e=0){this.precedence=e}parse(e,t,s){const n=e.parseExpression(this.precedence),i=s.getText();switch(i){case"+":return new c(t,n,i,Se);case"-":return new c(t,n,i,ve);case"*":return new c(t,n,i,Re);case"/":return new c(t,n,i,de);case"=":return new c(t,n,"=",ye);default:throw new Error("Operator not implemented")}}}var h=(r=>(r[r.SCOPE=1]="SCOPE",r[r.STATEMENT=2]="STATEMENT",r[r.ASSIGNMENT=3]="ASSIGNMENT",r[r.CONDITIONAL=4]="CONDITIONAL",r[r.ARRAY_ACCESS=5]="ARRAY_ACCESS",r[r.NULLISH_COALESCING=6]="NULLISH_COALESCING",r[r.AND=7]="AND",r[r.OR=8]="OR",r[r.EQUALS_COMPARE=9]="EQUALS_COMPARE",r[r.COMPARE=10]="COMPARE",r[r.SUM=11]="SUM",r[r.PRODUCT=12]="PRODUCT",r[r.EXPONENT=13]="EXPONENT",r[r.PREFIX=14]="PREFIX",r[r.POSTFIX=15]="POSTFIX",r[r.FUNCTION=16]="FUNCTION",r))(h||{});class z extends u{constructor(t,s){super();o(this,"type","PrefixExpression");this.tokenType=t,this.expression=s}get allExpressions(){return[this.expression]}setExpressionAt(t,s){this.expression=s}isStatic(){return this.expression.isStatic()}eval(){const t=this.expression.eval();if(typeof t!="number")throw new Error(`Cannot use "${this.tokenType}" operator in front of ${typeof t} "${t}"`);switch(this.tokenType){case"MINUS":return-t;case"BANG":return!t}}toString(){switch(this.tokenType){case"MINUS":return`-${this.expression.toString()}`;case"BANG":return`!${this.expression.toString()}`}throw new Error(`Unknown prefix operator: "${this.tokenType}"`)}}class H{constructor(e=0){this.precedence=e}parse(e,t){return new z(t.getType(),e.parseExpression(this.precedence))}}class _ extends u{constructor(t){super();o(this,"type","NumberExpression");this.value=t}get allExpressions(){return[]}setExpressionAt(){}isStatic(){return!0}eval(){return this.value}toString(){const t=""+this.value;return t.startsWith("0.")?t.slice(1):t}}class Te{constructor(e=0){this.precedence=e}parse(e,t){return new _(Number(t.getText()))}}class v extends u{constructor(t,s,n=!1){super();o(this,"type","NameExpression");this.executionEnv=t,this.name=s,this.isFunctionCall=n}get allExpressions(){return[]}setExpressionAt(){}isStatic(){return!1}setPointer(t){this.executionEnv.setAt(this.name,t)}setFunctionCall(t=!0){this.isFunctionCall=t}setName(t){this.name=t}setExecutionEnv(t){this.executionEnv=t}eval(){const t=this.executionEnv.getFrom(this.name);return!this.isFunctionCall&&typeof t=="function"?t():t}toString(){return this.name}}class Ae extends u{constructor(t,s){super();o(this,"type","NameExpression");this.leftExpr=t,this.rightExpr=s}get allExpressions(){return[this.leftExpr,this.rightExpr]}setExpressionAt(t,s){if(!(s instanceof v))throw new Error(`Cannot use context switch operator "->" on ${s.type}`);t===0?this.leftExpr=s:t===1&&(this.rightExpr=s)}isStatic(){return!1}eval(){const t=this.leftExpr.eval();return typeof t!="object"?0:(this.rightExpr.setExecutionEnv(new $(t,this.rightExpr.executionEnv.config)),this.rightExpr.eval())}toString(){return`${this.leftExpr.toString()}->${this.rightExpr.toString()}`}}class Ce{constructor(e=0){this.precedence=e}parse(e,t){const s=new v(e.executionEnv,t.getText()),n=[e.lookAhead(0),e.lookAhead(1)];if(n[0].getType()==="MINUS"&&n[1].getType()==="GREATER"){e.consume("MINUS"),e.consume("GREATER");const i=e.parseExpression(h.FUNCTION-1);if(i.type!=="NameExpression"&&i.type!=="FunctionExpression")throw new Error(`Cannot use context switch operator "->" on ${i.type}`);return new Ae(s,i)}return s}}class w extends u{constructor(t,s){super();o(this,"type","GroupExpression");this.expression=t,this.brackets=s}get allExpressions(){return[this.expression]}setExpressionAt(t,s){this.expression=s}isStatic(){return this.expression.isStatic()}get isReturn(){return this.expression.isReturn}get isBreak(){return this.expression.isBreak}get isContinue(){return this.expression.isContinue}eval(){return this.expression.eval()}toString(){return`${this.brackets[0]}${this.expression.toString()}${this.brackets[1]}`}}class Ne{constructor(e=0){this.precedence=e}parse(e,t){const s=e.parseExpression(this.precedence);return e.consume("RIGHT_PARENT"),e.config.keepGroups?new w(s,"()"):s}}class d extends u{constructor(t){super();o(this,"type","ReturnExpression");o(this,"isReturn",!0);this.expression=t}get allExpressions(){return[this.expression]}setExpressionAt(t,s){this.expression=s}isStatic(){return!1}eval(){return this.expression.eval()}toString(){return`return ${this.expression.toString()}`}}class be{constructor(e=0){this.precedence=e}parse(e,t){const s=e.parseExpression(h.STATEMENT+1);return new d(e.match("SEMICOLON",!1)?s:new _(0))}}class R extends u{constructor(t,s=!1){super();o(this,"type","StaticExpression");this.value=t,this.isReturn=s}get allExpressions(){return[]}setExpressionAt(){}isStatic(){return!0}eval(){return this.value}toString(){let t=this.value;return typeof t=="string"&&(t=`'${t}'`),this.isReturn?`return ${t}`:""+t}}class E extends u{constructor(t){super();o(this,"type","StatementExpression");o(this,"didReturn");o(this,"wasLoopBroken",!1);o(this,"wasLoopContinued",!1);this.expressions=t}get allExpressions(){return this.expressions}setExpressionAt(t,s){this.expressions[t]=s}get isReturn(){if(this.didReturn!==void 0)return this.didReturn;let t=0;for(;t0&&(this.args[t-1]=s)}setExecutionEnv(t){this.name.setExecutionEnv(t)}get executionEnv(){return this.name.executionEnv}isStatic(){return!1}eval(){const t=[];let s=0;for(;s1024)throw new Error(`Cannot loop more than 1024x times, received "${t}"`);let s=0;for(;sn.eval()===i.eval())}}class Ge{constructor(e=0){this.precedence=e}parse(e,t,s){if(e.match("EQUALS"))return new c(t,e.parseExpression(this.precedence),"!=",(n,i)=>n.eval()!==i.eval());throw new Error("! was used as a binary operator")}}class Be{constructor(e=0){this.precedence=e}parse(e,t,s){if(e.match("AND"))return new c(t,e.parseExpression(this.precedence),"&&",(n,i)=>n.eval()&&i.eval());throw new Error('"&" not followed by another "&"')}}class ze{constructor(e=0){this.precedence=e}parse(e,t,s){if(e.match("OR"))return new c(t,e.parseExpression(this.precedence),"||",(n,i)=>n.eval()||i.eval());throw new Error('"|" not followed by another "|"')}}class He{constructor(e=0){this.precedence=e}parse(e,t,s){return e.match("EQUALS")?new c(t,e.parseExpression(this.precedence),"<=",(n,i)=>n.eval()<=i.eval()):new c(t,e.parseExpression(this.precedence),"<",(n,i)=>n.eval()=",(n,i)=>n.eval()>=i.eval()):new c(t,e.parseExpression(this.precedence),">",(n,i)=>n.eval()>i.eval())}}class U extends u{constructor(t,s,n){super();o(this,"type","TernaryExpression");o(this,"leftResult");this.leftExpression=t,this.thenExpression=s,this.elseExpression=n}get allExpressions(){return this.leftExpression.isStatic()?[this.leftExpression,this.leftExpression.eval()?this.thenExpression:this.elseExpression]:[this.leftExpression,this.thenExpression,this.elseExpression]}setExpressionAt(t,s){t===0?this.leftExpression=s:t===1?this.thenExpression=s:t===2&&(this.elseExpression=s)}get isReturn(){return this.leftResult===void 0?this.thenExpression.isReturn&&this.elseExpression.isReturn:this.leftResult?this.thenExpression.isReturn:this.elseExpression.isReturn}get hasReturn(){return this.thenExpression.isReturn||this.elseExpression.isReturn}get isContinue(){return this.leftResult===void 0?this.thenExpression.isContinue&&this.elseExpression.isContinue:this.leftResult?this.thenExpression.isContinue:this.elseExpression.isContinue}get isBreak(){return this.leftResult===void 0?this.thenExpression.isBreak&&this.elseExpression.isBreak:this.leftResult?this.thenExpression.isBreak:this.elseExpression.isBreak}isStatic(){return this.leftExpression.isStatic()&&this.thenExpression.isStatic()&&this.elseExpression.isStatic()}eval(){return this.leftResult=this.leftExpression.eval(),this.leftResult?this.thenExpression.eval():this.elseExpression.eval()}toString(){return this.elseExpression instanceof T?`${this.leftExpression.toString()}?${this.thenExpression.toString()}`:`${this.leftExpression.toString()}?${this.thenExpression.toString()}:${this.elseExpression.toString()}`}}class Qe{constructor(e=0){o(this,"exprName","Ternary");this.precedence=e}parse(e,t,s){let n=e.parseExpression(this.precedence-1),i;return e.match("COLON")?i=e.parseExpression(this.precedence-1):i=new T,e.config.useOptimizer&&t.isStatic()?t.eval()?n:i:new U(t,n,i)}}const Ye=new Qe(h.CONDITIONAL);class De{constructor(e=0){this.precedence=e}parse(e,t,s){return e.match("QUESTION")?new c(t,e.parseExpression(this.precedence),"??",(n,i)=>{var a;return(a=n.eval())!=null?a:i.eval()}):Ye.parse(e,t,s)}}class K extends we{constructor(e){super(e),this.registerPrefix("NAME",new Ce),this.registerPrefix("STRING",new Oe),this.registerPrefix("NUMBER",new Te),this.registerPrefix("TRUE",new W(h.PREFIX)),this.registerPrefix("FALSE",new W(h.PREFIX)),this.registerPrefix("RETURN",new be),this.registerPrefix("CONTINUE",new _e),this.registerPrefix("BREAK",new Ue),this.registerPrefix("LOOP",new Pe),this.registerPrefix("FOR_EACH",new $e),this.registerInfix("QUESTION",new De(h.CONDITIONAL)),this.registerPrefix("LEFT_PARENT",new Ne),this.registerInfix("LEFT_PARENT",new Ie(h.FUNCTION)),this.registerInfix("ARRAY_LEFT",new Le(h.ARRAY_ACCESS)),this.registerPrefix("CURLY_LEFT",new Me(h.SCOPE)),this.registerInfix("SEMICOLON",new ke(h.STATEMENT)),this.registerPrefix("MINUS",new H(h.PREFIX)),this.registerPrefix("BANG",new H(h.PREFIX)),this.registerInfix("PLUS",new N(h.SUM)),this.registerInfix("MINUS",new N(h.SUM)),this.registerInfix("ASTERISK",new N(h.PRODUCT)),this.registerInfix("SLASH",new N(h.PRODUCT)),this.registerInfix("EQUALS",new Fe(h.EQUALS_COMPARE)),this.registerInfix("BANG",new Ge(h.EQUALS_COMPARE)),this.registerInfix("GREATER",new qe(h.COMPARE)),this.registerInfix("SMALLER",new He(h.COMPARE)),this.registerInfix("AND",new Be(h.AND)),this.registerInfix("OR",new ze(h.OR)),this.registerInfix("ASSIGN",new N(h.ASSIGNMENT))}}class je{constructor(e=0){this.precedence=e}parse(e,t){if(e.consume("LEFT_PARENT"),e.match("RIGHT_PARENT"))throw new Error("function() called without arguments");let s=[],n,i;do{const a=e.parseExpression();if(a instanceof L)i?s.push(a.eval()):i=a.eval();else if(a instanceof E||a instanceof w)n=a;else throw new Error(`Unexpected expresion: found "${a.constructor.name}"`)}while(e.match("COMMA"));if(e.consume("RIGHT_PARENT"),!i)throw new Error(`Missing function() name (argument 1); found "${i}"`);if(!n)throw new Error(`Missing function() body (argument ${s.length+2})`);if(e.lookAhead(0).getType()!=="SEMICOLON")throw new Error("Missing semicolon after function expression");return new Ve(e.functions,i,s,n)}}class Ve extends u{constructor(t,s,n,i){super();o(this,"type","CustomFunctionExpression");this.functionBody=i,t.set(s.toLowerCase(),[n,i instanceof w?i.allExpressions[0].toString():i.toString()])}get allExpressions(){return[this.functionBody]}setExpressionAt(t,s){this.functionBody=s}get isReturn(){return!1}isStatic(){return!0}eval(){return 0}}class Xe extends u{constructor(t,s){super();o(this,"type","PostfixExpression");this.expression=t,this.tokenType=s}get allExpressions(){return[this.expression]}setExpressionAt(t,s){this.expression=s}isStatic(){return this.expression.isStatic()}eval(){switch(this.tokenType){}}}const We=Object.freeze(Object.defineProperty({__proto__:null,ArrayAccessExpression:Q,BooleanExpression:X,BreakExpression:V,ContinueExpression:j,ForEachExpression:D,FunctionExpression:q,GenericOperatorExpression:c,GroupExpression:w,LoopExpression:Y,NameExpression:v,NumberExpression:_,PostfixExpression:Xe,PrefixExpression:z,ReturnExpression:d,StatementExpression:E,StaticExpression:R,StringExpression:L,TernaryExpression:U,VoidExpression:T},Symbol.toStringTag,{value:"Module"}));class Z{constructor(e={},t={}){o(this,"expressionCache",{});o(this,"totalCacheEntries",0);o(this,"executionEnvironment");o(this,"parser");this.config=t,t.useOptimizer===void 0&&(this.config.useOptimizer=!0),t.useCache===void 0&&(this.config.useCache=!0),t.earlyReturnsSkipParsing===void 0&&(this.config.earlyReturnsSkipParsing=!0),t.earlyReturnsSkipTokenization===void 0&&(this.config.earlyReturnsSkipTokenization=!0),t.convertUndefined===void 0&&(this.config.convertUndefined=!1),this.parser=new K({...this.config,tokenizer:void 0}),this.updateExecutionEnv(e,t.assumeFlatEnvironment)}updateConfig(e){e=Object.assign(this.config,e),e.tokenizer&&this.parser.setTokenizer(e.tokenizer),this.parser.updateConfig({...this.config,tokenizer:void 0}),this.executionEnvironment.updateConfig(e)}updateExecutionEnv(e,t=!1){this.executionEnvironment=new $(e,{useRadians:this.config.useRadians,convertUndefined:this.config.convertUndefined,isFlat:t,variableHandler:this.config.variableHandler}),this.parser.setExecutionEnvironment(this.executionEnvironment)}clearCache(){this.expressionCache={},this.totalCacheEntries=0}execute(e){this.parser.setExecutionEnvironment(this.executionEnvironment);const s=this.parse(e).eval();return s===void 0?0:typeof s=="boolean"?Number(s):s}executeAndCatch(e){try{return this.execute(e)}catch{return 0}}parse(e){var s,n,i;if((s=this.config.useCache)==null||s){const a=this.expressionCache[e];if(a)return a}this.parser.init(e);let t=this.parser.parseExpression();return((n=this.config.useOptimizer)!=null?n:!0)&&t.isStatic()&&(t=new R(t.eval())),((i=this.config.useCache)==null||i)&&(this.totalCacheEntries>(this.config.maxCacheSize||256)&&this.clearCache(),this.expressionCache[e]=t,this.totalCacheEntries++),t}resolveStatic(e){return e=e.walk(t=>{if(!(t instanceof L)&&t.isStatic())return new R(t.eval())}),e=e.walk(t=>{if(t instanceof c)switch(t.operator){case"+":case"-":{const s=t.allExpressions.find(n=>n.isStatic()&&n.eval()===0);if(s)return t.allExpressions.find(n=>n!==s);break}case"*":if(t.allExpressions.find(n=>n.isStatic()&&n.eval()===0))return new R(0);case"*":case"/":{const s=t.allExpressions.find(n=>n.isStatic()&&n.eval()===1);if(s)return t.allExpressions.find(n=>n!==s);break}}}),e}minimize(e){e=this.resolveStatic(e);const t=new Map([["query.","q."],["variable.","v."],["context.","c."],["temp.","t."]]);e=e.walk(n=>{if(n instanceof v){const i=n.toString();for(const[a,b]of t)i.startsWith(a)&&n.setName(i.replace(a,b));return n}});const s=new Map;return e=e.walk(n=>{if(n instanceof v){const i=n.toString();if(!i.startsWith("v.")&&!i.startsWith("t."))return;if(s.has(i))n.setName(s.get(i));else{const a=`v.v${s.size}`;s.set(i,a),n.setName(a)}return n}}),e}getParser(){return this.parser}}function Ke(r){if(r instanceof d)return new w(r.allExpressions[0],"()");if(!(r instanceof E)||r.allExpressions.length>1)return r;const e=r.allExpressions[0];return e instanceof d?new w(e.allExpressions[0],"()"):r}class Ze extends K{constructor(t){super(t);o(this,"functions",new Map);o(this,"classes",new Map);this.registerPrefix("FUNCTION",new je)}reset(){this.functions.clear()}}class Je{constructor(e){o(this,"parser");this.parser=new Ze({useCache:!1,useOptimizer:!0,useAgressiveStaticOptimizer:!0,keepGroups:!0,earlyReturnsSkipParsing:!1,earlyReturnsSkipTokenization:!1}),this.parser.setExecutionEnvironment(new $(this.parser,e)),this.parser.setTokenizer(new P(new Set(["function"])))}get functions(){return this.parser.functions}parse(e){return this.parser.init(e.replace(/\"/g,"'")),this.parser.parseExpression()}transform(e){const t=new Z({},{useCache:!1,keepGroups:!0,useOptimizer:!0,useAgressiveStaticOptimizer:!0,earlyReturnsSkipParsing:!0,earlyReturnsSkipTokenization:!1});let s=0,n=t.parse(e),i=!1;n instanceof E&&(i=!0);let a=!1;n=n.walk(k=>{var te,se,re,ne,ie;if(k.type!=="FunctionExpression"||!((se=(te=k.name.name).startsWith)!=null&&se.call(te,"f."))&&!((ne=(re=k.name.name).startsWith)!=null&&ne.call(re,"function.")))return;const tt=k.name.name.replace(/(f|function)\./g,""),st=k.args;let[J,O]=(ie=this.functions.get(tt))!=null?ie:[];if(!O||!J)return;O=O.replace(/(a|arg)\.(\w+)/g,(f,m,p)=>{var A,I;return((I=(A=st[J.indexOf(p)])==null?void 0:A.toString())!=null?I:"0").replace(/(t|temp)\./,"outer_temp.")});let y=Ke(t.parse(O));if(y instanceof E){const f=y.allExpressions.some(p=>p instanceof d),m=f||y.some(p=>p instanceof d);y=t.parse(`({${O}}+${m?f?"t.return_value":"(t.return_value??0)":"0"})`),a=!0}const ee=new Map;return y=y.walk(f=>{if(f instanceof v){let p=f.toString().split(".");const g=p.shift(),[A,...I]=p,oe=I.length>0?"."+I.join("."):"";if(g==="t"||g==="temp"){let M=ee.get(A);M||(M=`t.__scvar${s++}`,ee.set(A,M)),f.setName(`${M}${oe}`)}else g==="outer_temp"&&f.setName(`t.${A}${oe}`);return}else if(f instanceof d){const m=new v(t.getParser().executionEnv,"t.return_value"),p=f.allExpressions[0];return new c(m,p,"=",()=>{m.setPointer(p.eval())})}else if(f instanceof E){const m=[];for(let p=0;p0&&r.setExpressionAt(t,new w(new E(e),"{}"))}l.Context=me,l.CustomMolang=Je,l.Molang=Z,l.Tokenizer=P,l.expressions=We,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}); diff --git a/dist/parser/expression.d.ts b/dist/parser/expression.d.ts deleted file mode 100644 index 57ae07e..0000000 --- a/dist/parser/expression.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -export interface IExpression { - readonly type: string; - readonly isReturn?: boolean; - readonly isBreak?: boolean; - readonly isContinue?: boolean; - readonly allExpressions: IExpression[]; - setFunctionCall?: (value: boolean) => void; - setPointer?: (value: unknown) => void; - setExpressionAt(index: number, expr: IExpression): void; - eval(): unknown; - isStatic(): boolean; - walk(cb: TIterateCallback): IExpression; - iterate(cb: TIterateCallback, visited: Set): void; - some(predicate: (expr: IExpression) => boolean): boolean; -} -export declare abstract class Expression implements IExpression { - abstract readonly type: string; - abstract eval(): unknown; - abstract isStatic(): boolean; - toString(): string; - abstract allExpressions: IExpression[]; - abstract setExpressionAt(index: number, expr: IExpression): void; - walk(cb: TIterateCallback, visited?: Set): IExpression; - iterate(cb: TIterateCallback, visited: Set): void; - some(predicate: (expr: IExpression) => boolean): boolean; -} -export declare type TIterateCallback = (expr: IExpression) => IExpression | undefined; diff --git a/dist/parser/expressions/ContextSwitch.d.ts b/dist/parser/expressions/ContextSwitch.d.ts deleted file mode 100644 index cf68785..0000000 --- a/dist/parser/expressions/ContextSwitch.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Expression, IExpression } from '../expression'; -import { FunctionExpression } from './function'; -import { NameExpression } from './name'; -export declare class ContextSwitchExpression extends Expression { - protected leftExpr: NameExpression | FunctionExpression; - protected rightExpr: NameExpression | FunctionExpression; - type: string; - constructor(leftExpr: NameExpression | FunctionExpression, rightExpr: NameExpression | FunctionExpression); - get allExpressions(): (NameExpression | FunctionExpression)[]; - setExpressionAt(index: number, expr: IExpression): void; - isStatic(): boolean; - eval(): any; - toString(): string; -} diff --git a/dist/parser/expressions/arrayAccess.d.ts b/dist/parser/expressions/arrayAccess.d.ts deleted file mode 100644 index 7fb9e94..0000000 --- a/dist/parser/expressions/arrayAccess.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Expression, IExpression } from '../expression'; -export declare class ArrayAccessExpression extends Expression { - protected name: IExpression; - protected lookup: IExpression; - type: string; - constructor(name: IExpression, lookup: IExpression); - get allExpressions(): IExpression[]; - setExpressionAt(index: number, expr: IExpression): void; - isStatic(): boolean; - setPointer(value: unknown): void; - eval(): any; - toString(): string; -} diff --git a/dist/parser/expressions/boolean.d.ts b/dist/parser/expressions/boolean.d.ts deleted file mode 100644 index 045d4cc..0000000 --- a/dist/parser/expressions/boolean.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Expression } from '../expression'; -export declare class BooleanExpression extends Expression { - protected value: boolean; - type: string; - constructor(value: boolean); - get allExpressions(): never[]; - setExpressionAt(): void; - isStatic(): boolean; - eval(): boolean; -} diff --git a/dist/parser/expressions/break.d.ts b/dist/parser/expressions/break.d.ts deleted file mode 100644 index a94be60..0000000 --- a/dist/parser/expressions/break.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Expression } from '../expression'; -export declare class BreakExpression extends Expression { - type: string; - isBreak: boolean; - constructor(); - get allExpressions(): never[]; - setExpressionAt(): void; - isStatic(): boolean; - eval(): number; - isString(): string; -} diff --git a/dist/parser/expressions/continue.d.ts b/dist/parser/expressions/continue.d.ts deleted file mode 100644 index 7b78440..0000000 --- a/dist/parser/expressions/continue.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Expression } from '../expression'; -export declare class ContinueExpression extends Expression { - type: string; - isContinue: boolean; - constructor(); - get allExpressions(): never[]; - setExpressionAt(): void; - isStatic(): boolean; - eval(): number; - toString(): string; -} diff --git a/dist/parser/expressions/forEach.d.ts b/dist/parser/expressions/forEach.d.ts deleted file mode 100644 index 524b8b8..0000000 --- a/dist/parser/expressions/forEach.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Expression, IExpression } from '../expression'; -export declare class ForEachExpression extends Expression { - protected variable: IExpression; - protected arrayExpression: IExpression; - protected expression: IExpression; - type: string; - constructor(variable: IExpression, arrayExpression: IExpression, expression: IExpression); - get isReturn(): boolean | undefined; - get allExpressions(): IExpression[]; - setExpressionAt(index: number, expr: IExpression): void; - isStatic(): boolean; - eval(): unknown; - toString(): string; -} diff --git a/dist/parser/expressions/function.d.ts b/dist/parser/expressions/function.d.ts deleted file mode 100644 index 35404e1..0000000 --- a/dist/parser/expressions/function.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { NameExpression } from './name'; -import { Expression, IExpression } from '../expression'; -import { ExecutionEnvironment } from '../../env/env'; -export declare class FunctionExpression extends Expression { - protected name: NameExpression; - protected args: IExpression[]; - type: string; - constructor(name: NameExpression, args: IExpression[]); - get allExpressions(): (IExpression | NameExpression)[]; - setExpressionAt(index: number, expr: Expression): void; - setExecutionEnv(executionEnv: ExecutionEnvironment): void; - get executionEnv(): ExecutionEnvironment; - isStatic(): boolean; - eval(): unknown; - toString(): string; -} diff --git a/dist/parser/expressions/genericOperator.d.ts b/dist/parser/expressions/genericOperator.d.ts deleted file mode 100644 index 0043b5a..0000000 --- a/dist/parser/expressions/genericOperator.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Expression, IExpression } from '../expression'; -export declare class GenericOperatorExpression extends Expression { - protected left: IExpression; - protected right: IExpression; - readonly operator: string; - protected evalHelper: (leftExpression: IExpression, rightExpression: IExpression) => unknown; - type: string; - constructor(left: IExpression, right: IExpression, operator: string, evalHelper: (leftExpression: IExpression, rightExpression: IExpression) => unknown); - get allExpressions(): IExpression[]; - setExpressionAt(index: number, expr: IExpression): void; - isStatic(): boolean; - eval(): unknown; - toString(): string; -} diff --git a/dist/parser/expressions/group.d.ts b/dist/parser/expressions/group.d.ts deleted file mode 100644 index d170a2f..0000000 --- a/dist/parser/expressions/group.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Expression, IExpression } from '../expression'; -export declare class GroupExpression extends Expression { - protected expression: IExpression; - protected brackets: string; - type: string; - constructor(expression: IExpression, brackets: string); - get allExpressions(): IExpression[]; - setExpressionAt(_: number, expr: IExpression): void; - isStatic(): boolean; - get isReturn(): boolean | undefined; - get isBreak(): boolean | undefined; - get isContinue(): boolean | undefined; - eval(): unknown; - toString(): string; -} diff --git a/dist/parser/expressions/index.d.ts b/dist/parser/expressions/index.d.ts deleted file mode 100644 index ce6fc72..0000000 --- a/dist/parser/expressions/index.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -export { ArrayAccessExpression } from './arrayAccess'; -export { BooleanExpression } from './boolean'; -export { BreakExpression } from './break'; -export { ContinueExpression } from './continue'; -export { ForEachExpression } from './forEach'; -export { FunctionExpression } from './function'; -export { GenericOperatorExpression } from './genericOperator'; -export { GroupExpression } from './group'; -export { LoopExpression } from './loop'; -export { NameExpression } from './name'; -export { NumberExpression } from './number'; -export { PostfixExpression } from './postfix'; -export { PrefixExpression } from './prefix'; -export { ReturnExpression } from './return'; -export { StatementExpression } from './statement'; -export { StaticExpression } from './static'; -export { StringExpression } from './string'; -export { TernaryExpression } from './ternary'; -export { VoidExpression } from './void'; diff --git a/dist/parser/expressions/loop.d.ts b/dist/parser/expressions/loop.d.ts deleted file mode 100644 index 5f5cbe5..0000000 --- a/dist/parser/expressions/loop.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Expression, IExpression } from '../expression'; -export declare class LoopExpression extends Expression { - protected count: IExpression; - protected expression: IExpression; - type: string; - constructor(count: IExpression, expression: IExpression); - get allExpressions(): IExpression[]; - get isNoopLoop(): boolean; - setExpressionAt(index: number, expr: IExpression): void; - get isReturn(): boolean | undefined; - isStatic(): boolean; - eval(): unknown; - toString(): string; -} diff --git a/dist/parser/expressions/name.d.ts b/dist/parser/expressions/name.d.ts deleted file mode 100644 index c8c44f4..0000000 --- a/dist/parser/expressions/name.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ExecutionEnvironment } from '../../env/env'; -import { Expression } from '../expression'; -export declare class NameExpression extends Expression { - executionEnv: ExecutionEnvironment; - protected name: string; - protected isFunctionCall: boolean; - type: string; - constructor(executionEnv: ExecutionEnvironment, name: string, isFunctionCall?: boolean); - get allExpressions(): never[]; - setExpressionAt(): void; - isStatic(): boolean; - setPointer(value: unknown): void; - setFunctionCall(value?: boolean): void; - setName(name: string): void; - setExecutionEnv(executionEnv: ExecutionEnvironment): void; - eval(): any; - toString(): string; -} diff --git a/dist/parser/expressions/number.d.ts b/dist/parser/expressions/number.d.ts deleted file mode 100644 index 141ac1f..0000000 --- a/dist/parser/expressions/number.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Expression } from '../expression'; -export declare class NumberExpression extends Expression { - protected value: number; - type: string; - constructor(value: number); - get allExpressions(): never[]; - setExpressionAt(): void; - isStatic(): boolean; - eval(): number; - toString(): string; -} diff --git a/dist/parser/expressions/postfix.d.ts b/dist/parser/expressions/postfix.d.ts deleted file mode 100644 index 136eb4e..0000000 --- a/dist/parser/expressions/postfix.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TTokenType } from '../../tokenizer/token'; -import { Expression, IExpression } from '../expression'; -export declare class PostfixExpression extends Expression { - protected expression: IExpression; - protected tokenType: TTokenType; - type: string; - constructor(expression: IExpression, tokenType: TTokenType); - get allExpressions(): IExpression[]; - setExpressionAt(_: number, expr: IExpression): void; - isStatic(): boolean; - eval(): void; -} diff --git a/dist/parser/expressions/prefix.d.ts b/dist/parser/expressions/prefix.d.ts deleted file mode 100644 index 119e996..0000000 --- a/dist/parser/expressions/prefix.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { TTokenType } from '../../tokenizer/token'; -import { Expression, IExpression } from '../expression'; -export declare class PrefixExpression extends Expression { - protected tokenType: TTokenType; - protected expression: IExpression; - type: string; - constructor(tokenType: TTokenType, expression: IExpression); - get allExpressions(): IExpression[]; - setExpressionAt(_: number, expr: IExpression): void; - isStatic(): boolean; - eval(): number | boolean | undefined; - toString(): string; -} diff --git a/dist/parser/expressions/return.d.ts b/dist/parser/expressions/return.d.ts deleted file mode 100644 index 4f81ae3..0000000 --- a/dist/parser/expressions/return.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Expression, IExpression } from '../expression'; -export declare class ReturnExpression extends Expression { - protected expression: IExpression; - type: string; - isReturn: boolean; - constructor(expression: IExpression); - get allExpressions(): IExpression[]; - setExpressionAt(_: number, expr: IExpression): void; - isStatic(): boolean; - eval(): unknown; - toString(): string; -} diff --git a/dist/parser/expressions/statement.d.ts b/dist/parser/expressions/statement.d.ts deleted file mode 100644 index 3c15691..0000000 --- a/dist/parser/expressions/statement.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Expression, IExpression } from '../expression'; -export declare class StatementExpression extends Expression { - protected expressions: IExpression[]; - type: string; - protected didReturn?: boolean; - protected wasLoopBroken: boolean; - protected wasLoopContinued: boolean; - constructor(expressions: IExpression[]); - get allExpressions(): IExpression[]; - setExpressionAt(index: number, expr: IExpression): void; - get isReturn(): boolean; - get isBreak(): boolean; - get isContinue(): boolean; - isStatic(): boolean; - eval(): unknown; - toString(): string; -} diff --git a/dist/parser/expressions/static.d.ts b/dist/parser/expressions/static.d.ts deleted file mode 100644 index 1d8feef..0000000 --- a/dist/parser/expressions/static.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Expression } from '../expression'; -export declare class StaticExpression extends Expression { - protected value: unknown; - readonly isReturn: boolean; - type: string; - constructor(value: unknown, isReturn?: boolean); - get allExpressions(): never[]; - setExpressionAt(): void; - isStatic(): boolean; - eval(): unknown; - toString(): string; -} diff --git a/dist/parser/expressions/string.d.ts b/dist/parser/expressions/string.d.ts deleted file mode 100644 index bcd3f12..0000000 --- a/dist/parser/expressions/string.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Expression } from '../expression'; -export declare class StringExpression extends Expression { - protected name: string; - type: string; - constructor(name: string); - get allExpressions(): never[]; - setExpressionAt(): void; - isStatic(): boolean; - eval(): string; - toString(): string; -} diff --git a/dist/parser/expressions/ternary.d.ts b/dist/parser/expressions/ternary.d.ts deleted file mode 100644 index ff5e88f..0000000 --- a/dist/parser/expressions/ternary.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Expression, IExpression } from '../expression'; -export declare class TernaryExpression extends Expression { - protected leftExpression: IExpression; - protected thenExpression: IExpression; - protected elseExpression: IExpression; - type: string; - protected leftResult: unknown; - constructor(leftExpression: IExpression, thenExpression: IExpression, elseExpression: IExpression); - get allExpressions(): IExpression[]; - setExpressionAt(index: number, expr: IExpression): void; - get isReturn(): boolean | undefined; - get hasReturn(): boolean | undefined; - get isContinue(): boolean | undefined; - get isBreak(): boolean | undefined; - isStatic(): boolean; - eval(): unknown; - toString(): string; -} diff --git a/dist/parser/expressions/void.d.ts b/dist/parser/expressions/void.d.ts deleted file mode 100644 index 88ceb2e..0000000 --- a/dist/parser/expressions/void.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Expression } from '../expression'; -export declare class VoidExpression extends Expression { - type: string; - get allExpressions(): never[]; - setExpressionAt(): void; - isStatic(): boolean; - eval(): number; - toString(): string; -} diff --git a/dist/parser/molang.d.ts b/dist/parser/molang.d.ts deleted file mode 100644 index a273c30..0000000 --- a/dist/parser/molang.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Parser } from './parse'; -import { IParserConfig } from '../main'; -export declare class MolangParser extends Parser { - constructor(config: Partial); -} diff --git a/dist/parser/parse.d.ts b/dist/parser/parse.d.ts deleted file mode 100644 index 3ffd3e6..0000000 --- a/dist/parser/parse.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Tokenizer } from '../tokenizer/Tokenizer'; -import { TTokenType, Token } from '../tokenizer/token'; -import { IPrefixParselet } from './parselets/prefix'; -import { IInfixParselet } from './parselets/infix'; -import { IExpression } from './expression'; -import { ExecutionEnvironment } from '../env/env'; -import { IParserConfig } from '../main'; -export declare class Parser { - config: Partial; - protected prefixParselets: Map; - protected infixParselets: Map; - protected readTokens: Token[]; - protected tokenIterator: Tokenizer; - executionEnv: ExecutionEnvironment; - constructor(config: Partial); - updateConfig(config: Partial): void; - init(expression: string): void; - setTokenizer(tokenizer: Tokenizer): void; - setExecutionEnvironment(executionEnv: ExecutionEnvironment): void; - parseExpression(precedence?: number): IExpression; - parseInfixExpression(expressionLeft: IExpression, precedence?: number): IExpression; - getPrecedence(): number; - consume(expected?: TTokenType): Token; - match(expected: TTokenType, consume?: boolean): boolean; - lookAhead(distance: number): Token; - registerInfix(tokenType: TTokenType, infixParselet: IInfixParselet): void; - registerPrefix(tokenType: TTokenType, prefixParselet: IPrefixParselet): void; - getInfix(tokenType: TTokenType): IInfixParselet | undefined; - getPrefix(tokenType: TTokenType): IPrefixParselet | undefined; -} diff --git a/dist/parser/parselets/AndOperator.d.ts b/dist/parser/parselets/AndOperator.d.ts deleted file mode 100644 index a2db268..0000000 --- a/dist/parser/parselets/AndOperator.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Parser } from '../parse'; -import { Token } from '../../tokenizer/token'; -import { IExpression } from '../expression'; -import { GenericOperatorExpression } from '../expressions/genericOperator'; -import { IInfixParselet } from './infix'; -export declare class AndOperator implements IInfixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, leftExpression: IExpression, token: Token): GenericOperatorExpression; -} diff --git a/dist/parser/parselets/GreaterOperator.d.ts b/dist/parser/parselets/GreaterOperator.d.ts deleted file mode 100644 index 766c696..0000000 --- a/dist/parser/parselets/GreaterOperator.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Parser } from '../parse'; -import { Token } from '../../tokenizer/token'; -import { IExpression } from '../expression'; -import { GenericOperatorExpression } from '../expressions/genericOperator'; -import { IInfixParselet } from './infix'; -export declare class GreaterOperator implements IInfixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, leftExpression: IExpression, token: Token): GenericOperatorExpression; -} diff --git a/dist/parser/parselets/NotEquals.d.ts b/dist/parser/parselets/NotEquals.d.ts deleted file mode 100644 index 32060d5..0000000 --- a/dist/parser/parselets/NotEquals.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Parser } from '../parse'; -import { Token } from '../../tokenizer/token'; -import { IExpression } from '../expression'; -import { GenericOperatorExpression } from '../expressions/genericOperator'; -import { IInfixParselet } from './infix'; -export declare class NotEqualsOperator implements IInfixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, leftExpression: IExpression, token: Token): GenericOperatorExpression; -} diff --git a/dist/parser/parselets/OrOperator.d.ts b/dist/parser/parselets/OrOperator.d.ts deleted file mode 100644 index 486a27b..0000000 --- a/dist/parser/parselets/OrOperator.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Parser } from '../../parser/parse'; -import { Token } from '../../tokenizer/token'; -import { IExpression } from '../expression'; -import { GenericOperatorExpression } from '../expressions/genericOperator'; -import { IInfixParselet } from './infix'; -export declare class OrOperator implements IInfixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, leftExpression: IExpression, token: Token): GenericOperatorExpression; -} diff --git a/dist/parser/parselets/QuestionOperator.d.ts b/dist/parser/parselets/QuestionOperator.d.ts deleted file mode 100644 index 3aa7fd6..0000000 --- a/dist/parser/parselets/QuestionOperator.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Parser } from '../parse'; -import { Token } from '../../tokenizer/token'; -import { IExpression } from '../expression'; -import { GenericOperatorExpression } from '../expressions/genericOperator'; -import { IInfixParselet } from './infix'; -export declare class QuestionOperator implements IInfixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, leftExpression: IExpression, token: Token): IExpression | GenericOperatorExpression | import("../expressions").TernaryExpression; -} diff --git a/dist/parser/parselets/Return.d.ts b/dist/parser/parselets/Return.d.ts deleted file mode 100644 index 90f6c35..0000000 --- a/dist/parser/parselets/Return.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Parser } from '../parse'; -import { Token } from '../../tokenizer/token'; -import { IPrefixParselet } from './prefix'; -import { ReturnExpression } from '../expressions/return'; -export declare class ReturnParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): ReturnExpression; -} diff --git a/dist/parser/parselets/SmallerOperator.d.ts b/dist/parser/parselets/SmallerOperator.d.ts deleted file mode 100644 index aae0981..0000000 --- a/dist/parser/parselets/SmallerOperator.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Parser } from '../parse'; -import { Token } from '../../tokenizer/token'; -import { IExpression } from '../expression'; -import { GenericOperatorExpression } from '../expressions/genericOperator'; -import { IInfixParselet } from './infix'; -export declare class SmallerOperator implements IInfixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, leftExpression: IExpression, token: Token): GenericOperatorExpression; -} diff --git a/dist/parser/parselets/arrayAccess.d.ts b/dist/parser/parselets/arrayAccess.d.ts deleted file mode 100644 index 9a05581..0000000 --- a/dist/parser/parselets/arrayAccess.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Token } from '../../tokenizer/token'; -import { Parser } from '../parse'; -import { IInfixParselet } from './infix'; -import { IExpression } from '../expression'; -import { ArrayAccessExpression } from '../expressions/arrayAccess'; -export declare class ArrayAccessParselet implements IInfixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, left: IExpression, token: Token): ArrayAccessExpression; -} diff --git a/dist/parser/parselets/binaryOperator.d.ts b/dist/parser/parselets/binaryOperator.d.ts deleted file mode 100644 index 8d3df9b..0000000 --- a/dist/parser/parselets/binaryOperator.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { IInfixParselet } from './infix'; -import { Parser } from '../parse'; -import { IExpression } from '../expression'; -import { Token } from '../../tokenizer/token'; -import { GenericOperatorExpression } from '../expressions/genericOperator'; -export declare class BinaryOperator implements IInfixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, leftExpression: IExpression, token: Token): GenericOperatorExpression; -} diff --git a/dist/parser/parselets/boolean.d.ts b/dist/parser/parselets/boolean.d.ts deleted file mode 100644 index 993a9a1..0000000 --- a/dist/parser/parselets/boolean.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IPrefixParselet } from './prefix'; -import { Token } from '../../tokenizer/token'; -import { Parser } from '../parse'; -import { BooleanExpression } from '../expressions/boolean'; -export declare class BooleanParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): BooleanExpression; -} diff --git a/dist/parser/parselets/break.d.ts b/dist/parser/parselets/break.d.ts deleted file mode 100644 index 3234442..0000000 --- a/dist/parser/parselets/break.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Parser } from '../parse'; -import { Token } from '../../tokenizer/token'; -import { IPrefixParselet } from './prefix'; -import { BreakExpression } from '../expressions/break'; -export declare class BreakParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): BreakExpression; -} diff --git a/dist/parser/parselets/continue.d.ts b/dist/parser/parselets/continue.d.ts deleted file mode 100644 index 4c14eef..0000000 --- a/dist/parser/parselets/continue.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Parser } from '../parse'; -import { Token } from '../../tokenizer/token'; -import { IPrefixParselet } from './prefix'; -import { ContinueExpression } from '../expressions/continue'; -export declare class ContinueParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): ContinueExpression; -} diff --git a/dist/parser/parselets/equals.d.ts b/dist/parser/parselets/equals.d.ts deleted file mode 100644 index 8342aab..0000000 --- a/dist/parser/parselets/equals.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Parser } from '../../parser/parse'; -import { Token } from '../../tokenizer/token'; -import { IExpression } from '../expression'; -import { GenericOperatorExpression } from '../expressions/genericOperator'; -import { IInfixParselet } from './infix'; -export declare class EqualsOperator implements IInfixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, leftExpression: IExpression, token: Token): GenericOperatorExpression; -} diff --git a/dist/parser/parselets/forEach.d.ts b/dist/parser/parselets/forEach.d.ts deleted file mode 100644 index d0e4053..0000000 --- a/dist/parser/parselets/forEach.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Parser } from '../parse'; -import { Token } from '../../tokenizer/token'; -import { IPrefixParselet } from './prefix'; -import { ForEachExpression } from '../expressions/forEach'; -export declare class ForEachParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): ForEachExpression; -} diff --git a/dist/parser/parselets/function.d.ts b/dist/parser/parselets/function.d.ts deleted file mode 100644 index 05afd5e..0000000 --- a/dist/parser/parselets/function.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Token } from '../../tokenizer/token'; -import { Parser } from '../parse'; -import { IInfixParselet } from './infix'; -import { IExpression } from '../expression'; -import { FunctionExpression } from '../expressions/function'; -export declare class FunctionParselet implements IInfixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, left: IExpression, token: Token): FunctionExpression; -} diff --git a/dist/parser/parselets/groupParselet.d.ts b/dist/parser/parselets/groupParselet.d.ts deleted file mode 100644 index 4e1789a..0000000 --- a/dist/parser/parselets/groupParselet.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IPrefixParselet } from './prefix'; -import { Token } from '../../tokenizer/token'; -import { Parser } from '../parse'; -import { GroupExpression } from '../expressions/group'; -export declare class GroupParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): import("../expression").IExpression | GroupExpression; -} diff --git a/dist/parser/parselets/infix.d.ts b/dist/parser/parselets/infix.d.ts deleted file mode 100644 index 8e5f480..0000000 --- a/dist/parser/parselets/infix.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Parser } from '../parse'; -import { IExpression } from '../expression'; -import { Token } from '../../tokenizer/token'; -export interface IInfixParselet { - readonly precedence: number; - parse: (parser: Parser, left: IExpression, token: Token) => IExpression; -} diff --git a/dist/parser/parselets/loop.d.ts b/dist/parser/parselets/loop.d.ts deleted file mode 100644 index ee7fb3c..0000000 --- a/dist/parser/parselets/loop.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Parser } from '../parse'; -import { Token } from '../../tokenizer/token'; -import { IPrefixParselet } from './prefix'; -import { LoopExpression } from '../expressions/loop'; -export declare class LoopParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): LoopExpression; -} diff --git a/dist/parser/parselets/name.d.ts b/dist/parser/parselets/name.d.ts deleted file mode 100644 index 7b25d85..0000000 --- a/dist/parser/parselets/name.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { IPrefixParselet } from './prefix'; -import { Token } from '../../tokenizer/token'; -import { Parser } from '../parse'; -import { NameExpression } from '../expressions/name'; -import { ContextSwitchExpression } from '../expressions/ContextSwitch'; -export declare class NameParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): NameExpression | ContextSwitchExpression; -} diff --git a/dist/parser/parselets/number.d.ts b/dist/parser/parselets/number.d.ts deleted file mode 100644 index 04aebff..0000000 --- a/dist/parser/parselets/number.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IPrefixParselet } from './prefix'; -import { Token } from '../../tokenizer/token'; -import { Parser } from '../parse'; -import { NumberExpression } from '../expressions/number'; -export declare class NumberParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): NumberExpression; -} diff --git a/dist/parser/parselets/postfix.d.ts b/dist/parser/parselets/postfix.d.ts deleted file mode 100644 index 2f374be..0000000 --- a/dist/parser/parselets/postfix.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { IInfixParselet } from './infix'; -export interface IPostfixParselet extends IInfixParselet { -} diff --git a/dist/parser/parselets/prefix.d.ts b/dist/parser/parselets/prefix.d.ts deleted file mode 100644 index e2393ba..0000000 --- a/dist/parser/parselets/prefix.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Parser } from '../parse'; -import { IExpression } from '../expression'; -import { Token } from '../../tokenizer/token'; -import { PrefixExpression } from '../expressions/prefix'; -export interface IPrefixParselet { - readonly precedence: number; - parse: (parser: Parser, token: Token) => IExpression; -} -export declare class PrefixOperator implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): PrefixExpression; -} diff --git a/dist/parser/parselets/scope.d.ts b/dist/parser/parselets/scope.d.ts deleted file mode 100644 index aa47fd9..0000000 --- a/dist/parser/parselets/scope.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Parser } from '../parse'; -import { Token } from '../../tokenizer/token'; -import { IPrefixParselet } from './prefix'; -import { GroupExpression } from '../expressions/group'; -export declare class ScopeParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): import("../expression").IExpression | GroupExpression; -} diff --git a/dist/parser/parselets/statement.d.ts b/dist/parser/parselets/statement.d.ts deleted file mode 100644 index 96fc856..0000000 --- a/dist/parser/parselets/statement.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Parser } from '../parse'; -import { IExpression } from '../expression'; -import { Token } from '../../tokenizer/token'; -import { IInfixParselet } from './infix'; -import { StatementExpression } from '../expressions/statement'; -export declare class StatementParselet implements IInfixParselet { - precedence: number; - constructor(precedence?: number); - findReEntryPoint(parser: Parser): void; - parse(parser: Parser, left: IExpression, token: Token): StatementExpression; -} diff --git a/dist/parser/parselets/string.d.ts b/dist/parser/parselets/string.d.ts deleted file mode 100644 index 4fe88f9..0000000 --- a/dist/parser/parselets/string.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IPrefixParselet } from './prefix'; -import { Token } from '../../tokenizer/token'; -import { Parser } from '../parse'; -import { StringExpression } from '../expressions/string'; -export declare class StringParselet implements IPrefixParselet { - precedence: number; - constructor(precedence?: number); - parse(parser: Parser, token: Token): StringExpression; -} diff --git a/dist/parser/parselets/ternary.d.ts b/dist/parser/parselets/ternary.d.ts deleted file mode 100644 index 3efbd80..0000000 --- a/dist/parser/parselets/ternary.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { IInfixParselet } from './infix'; -import { Parser } from '../parse'; -import { IExpression } from '../expression'; -import { Token } from '../../tokenizer/token'; -import { TernaryExpression } from '../expressions/ternary'; -export declare class TernaryParselet implements IInfixParselet { - precedence: number; - exprName: string; - constructor(precedence?: number); - parse(parser: Parser, leftExpression: IExpression, token: Token): IExpression | TernaryExpression; -} diff --git a/dist/parser/precedence.d.ts b/dist/parser/precedence.d.ts deleted file mode 100644 index 134f062..0000000 --- a/dist/parser/precedence.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -export declare enum EPrecedence { - SCOPE = 1, - STATEMENT = 2, - ASSIGNMENT = 3, - CONDITIONAL = 4, - ARRAY_ACCESS = 5, - NULLISH_COALESCING = 6, - AND = 7, - OR = 8, - EQUALS_COMPARE = 9, - COMPARE = 10, - SUM = 11, - PRODUCT = 12, - EXPONENT = 13, - PREFIX = 14, - POSTFIX = 15, - FUNCTION = 16 -} diff --git a/dist/tokenizer/Tokenizer.d.ts b/dist/tokenizer/Tokenizer.d.ts deleted file mode 100644 index e37f396..0000000 --- a/dist/tokenizer/Tokenizer.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Token } from './token'; -export declare class Tokenizer { - protected keywordTokens: Set; - protected i: number; - protected currentColumn: number; - protected currentLine: number; - protected lastColumns: number; - protected expression: string; - constructor(addKeywords?: Set); - init(expression: string): void; - next(): Token; - hasNext(): boolean; - protected isLetter(char: string): boolean; - protected isNumber(char: string): boolean; -} diff --git a/dist/tokenizer/token.d.ts b/dist/tokenizer/token.d.ts deleted file mode 100644 index bb7a2bd..0000000 --- a/dist/tokenizer/token.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -export declare type TTokenType = string; -export declare class Token { - protected type: string; - protected text: string; - protected startColumn: number; - protected startLine: number; - constructor(type: string, text: string, startColumn: number, startLine: number); - getType(): string; - getText(): string; - getPosition(): { - startColumn: number; - startLineNumber: number; - endColumn: number; - endLineNumber: number; - }; -} diff --git a/dist/tokenizer/tokenTypes.d.ts b/dist/tokenizer/tokenTypes.d.ts deleted file mode 100644 index fc4bd33..0000000 --- a/dist/tokenizer/tokenTypes.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const TokenTypes: Record; -export declare const KeywordTokens: Set; diff --git a/lib/parser/expressions/if.ts b/lib/parser/expressions/if.ts index 77909d2..2be78b2 100644 --- a/lib/parser/expressions/if.ts +++ b/lib/parser/expressions/if.ts @@ -25,7 +25,7 @@ export class IfExpression extends Expression { this.consequent, ...this.elifClauses.flatMap((clause) => clause.allExpressions), this.alternate, - ].filter((expr) => expr !== undefined) + ].filter((expr) => expr !== undefined) as IExpression[] } setExpressionAt(index: number, expr: IExpression) { if (index === 0) this.test = expr diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index bf82af7..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3679 +0,0 @@ -{ - "name": "molang", - "version": "2.0.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "molang", - "version": "2.0.1", - "license": "MIT", - "devDependencies": { - "@types/node": "^13.1.2", - "molangjs": "^1.5.0", - "typescript": "^4.2.3", - "vite": "^3.1.3", - "vitest": "^0.23.4" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.8.tgz", - "integrity": "sha512-CyEWALmn+no/lbgbAJsbuuhT8s2J19EJGHkeyAwjbFJMrj80KJ9zuYsoAvidPTU7BgBf87r/sgae8Tw0dbOc4Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "dependencies": { - "esbuild-wasm": "0.15.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.8.tgz", - "integrity": "sha512-pE5RQsOTSERCtfZdfCT25wzo7dfhOSlhAXcsZmuvRYhendOv7djcdvtINdnDp2DAjP17WXlBB4nBO6sHLczmsg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@types/chai": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", - "integrity": "sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==", - "dev": true - }, - "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/node": { - "version": "13.13.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.15.tgz", - "integrity": "sha512-kwbcs0jySLxzLsa2nWUAGOd/s21WU1jebrEdtzhsj1D4Yps1EOuyI1Qcu+FD56dL7NRNIJtDDjcqIG22NwkgLw==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", - "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", - "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "cssom": "0.3.x" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/esbuild": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.8.tgz", - "integrity": "sha512-Remsk2dmr1Ia65sU+QasE6svJbsHe62lzR+CnjpUvbZ+uSYo1SitiOWPRfZQkCu82YWZBBKXiD/j0i//XWMZ+Q==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.8", - "@esbuild/linux-loong64": "0.15.8", - "esbuild-android-64": "0.15.8", - "esbuild-android-arm64": "0.15.8", - "esbuild-darwin-64": "0.15.8", - "esbuild-darwin-arm64": "0.15.8", - "esbuild-freebsd-64": "0.15.8", - "esbuild-freebsd-arm64": "0.15.8", - "esbuild-linux-32": "0.15.8", - "esbuild-linux-64": "0.15.8", - "esbuild-linux-arm": "0.15.8", - "esbuild-linux-arm64": "0.15.8", - "esbuild-linux-mips64le": "0.15.8", - "esbuild-linux-ppc64le": "0.15.8", - "esbuild-linux-riscv64": "0.15.8", - "esbuild-linux-s390x": "0.15.8", - "esbuild-netbsd-64": "0.15.8", - "esbuild-openbsd-64": "0.15.8", - "esbuild-sunos-64": "0.15.8", - "esbuild-windows-32": "0.15.8", - "esbuild-windows-64": "0.15.8", - "esbuild-windows-arm64": "0.15.8" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.8.tgz", - "integrity": "sha512-bVh8FIKOolF7/d4AMzt7xHlL0Ljr+mYKSHI39TJWDkybVWHdn6+4ODL3xZGHOxPpdRpitemXA1WwMKYBsw8dGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "dependencies": { - "esbuild-wasm": "0.15.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.8.tgz", - "integrity": "sha512-ReAMDAHuo0H1h9LxRabI6gwYPn8k6WiUeyxuMvx17yTrJO+SCnIfNc/TSPFvDwtK9MiyiKG/2dBYHouT/M0BXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.8.tgz", - "integrity": "sha512-KaKcGfJ+yto7Fo5gAj3xwxHMd1fBIKatpCHK8znTJLVv+9+NN2/tIPBqA4w5rBwjX0UqXDeIE2v1xJP+nGEXgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.8.tgz", - "integrity": "sha512-8tjEaBgAKnXCkP7bhEJmEqdG9HEV6oLkF36BrMzpfW2rgaw0c48Zrxe+9RlfeGvs6gDF4w+agXyTjikzsS3izw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.8.tgz", - "integrity": "sha512-jaxcsGHYzn2L0/lffON2WfH4Nc+d/EwozVTP5K2v016zxMb5UQMhLoJzvLgBqHT1SG0B/mO+a+THnJCMVg15zw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.8.tgz", - "integrity": "sha512-2xp2UlljMvX8HExtcg7VHaeQk8OBU0CSl1j18B5CcZmSDkLF9p3utuMXIopG3a08fr9Hv+Dz6+seSXUow/G51w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.8.tgz", - "integrity": "sha512-9u1E54BRz1FQMl86iaHK146+4ID2KYNxL3trLZT4QLLx3M7Q9n4lGG3lrzqUatGR2cKy8c33b0iaCzsItZWkFg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.8.tgz", - "integrity": "sha512-4HxrsN9eUzJXdVGMTYA5Xler82FuZUu21bXKN42zcLHHNKCAMPUzD62I+GwDhsdgUBAUj0tRXDdsQHgaP6v0HA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.8.tgz", - "integrity": "sha512-7DVBU9SFjX4+vBwt8tHsUCbE6Vvl6y6FQWHAgyw1lybC5gULqn/WnjHYHN2/LJaZRsDBvxWT4msEgwLGq1Wd3Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.8.tgz", - "integrity": "sha512-1OCm7Aq0tEJT70PbxmHSGYDLYP8DKH8r4Nk7/XbVzWaduo9beCjGBB+tGZIHK6DdTQ3h00/4Tb/70YMH/bOtKg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.8.tgz", - "integrity": "sha512-yeFoNPVFPEzZvFYBfUQNG2TjGRaCyV1E27OcOg4LOtnGrxb2wA+mkW3luckyv1CEyd00mpAg7UdHx8nlx3ghgA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.8.tgz", - "integrity": "sha512-CEyMMUUNabXibw8OSNmBXhOIGhnjNVl5Lpseiuf00iKN0V47oqDrbo4dsHz1wH62m49AR8iG8wpDlTqfYgKbtg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.8.tgz", - "integrity": "sha512-OCGSOaspMUjexSCU8ZiA0UnV/NiRU+s2vIfEcAQWQ6u32R+2luyfh/4ZaY6jFbylJE07Esc/yRvb9Q5fXuClXA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.8.tgz", - "integrity": "sha512-RHdpdfxRTSrZXZJlFSLazFU4YwXLB5Rgf6Zr5rffqSsO4y9JybgtKO38bFwxZNlDXliYISXN/YROKrG9s7mZQA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.8.tgz", - "integrity": "sha512-VolFFRatBH09T5QMWhiohAWCOien1R1Uz9K0BRVVTBgBaVBt7eArsXTKxVhUgRf2vwu2c2SXkuP0r7HLG0eozw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.8.tgz", - "integrity": "sha512-HTAPlg+n4kUeE/isQxlCfsOz0xJGNoT5LJ9oYZWFKABfVf4Ycu7Zlf5ITgOnrdheTkz8JeL/gISIOCFAoOXrSA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.8.tgz", - "integrity": "sha512-qMP/jR/FzcIOwKj+W+Lb+8Cfr8GZHbHUJxAPi7DUhNZMQ/6y7sOgRzlOSpRrbbUntrRZh0MqOyDhJ3Gpo6L1QA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-wasm": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.8.tgz", - "integrity": "sha512-Y7uCl5RNO4URjlemjdx++ukVHEMt5s5AfMWYUnMiK4Sry+pPCvQIctzXq6r6FKCyGKjX6/NGMCqR2OX6aLxj0w==", - "dev": true, - "optional": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.8.tgz", - "integrity": "sha512-RKR1QHh4iWzjUhkP8Yqi75PPz/KS+b8zw3wUrzw6oAkj+iU5Qtyj61ZDaSG3Qf2vc6hTIUiPqVTqBH0NpXFNwg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.8.tgz", - "integrity": "sha512-ag9ptYrsizgsR+PQE8QKeMqnosLvAMonQREpLw4evA4FFgOBMLEat/dY/9txbpozTw9eEOYyD3a4cE9yTu20FA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.8.tgz", - "integrity": "sha512-dbpAb0VyPaUs9mgw65KRfQ9rqiWCHpNzrJusoPu+LpEoswosjt/tFxN7cd2l68AT4qWdBkzAjDLRon7uqMeWcg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "optional": true, - "peer": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "whatwg-encoding": "^1.0.1" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - } - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "deprecated": "use String.prototype.padStart()", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/local-pkg": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.2.tgz", - "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "mime-db": "1.44.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/molangjs": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/molangjs/-/molangjs-1.5.0.tgz", - "integrity": "sha512-NrK5yqL/hj+L8+vRv1S87gU5a+dxW/XAv1khZ+GhG0NvnBMace20wTQpWAFLHkongB4qfg6H/+fVdnJrP+HZpg==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/rollup": { - "version": "2.78.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", - "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-literal": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.2.tgz", - "integrity": "sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/terser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", - "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/tinybench": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.1.5.tgz", - "integrity": "sha512-ak+PZZEuH3mw6CCFOgf5S90YH0MARnZNhxjhjguAmoJimEMAJuNip/rJRd6/wyylHItomVpKTzZk9zrhTrQCoQ==", - "dev": true - }, - "node_modules/tinypool": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.0.tgz", - "integrity": "sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", - "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/typescript": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", - "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "optional": true, - "peer": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/vite": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.3.tgz", - "integrity": "sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==", - "dev": true, - "dependencies": { - "esbuild": "^0.15.6", - "postcss": "^8.4.16", - "resolve": "^1.22.1", - "rollup": "~2.78.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "less": "*", - "sass": "*", - "stylus": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/vite/node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/vitest": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.23.4.tgz", - "integrity": "sha512-iukBNWqQAv8EKDBUNntspLp9SfpaVFbmzmM0sNcnTxASQZMzRw3PsM6DMlsHiI+I6GeO5/sYDg3ecpC+SNFLrQ==", - "dev": true, - "dependencies": { - "@types/chai": "^4.3.3", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "chai": "^4.3.6", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "strip-literal": "^0.4.1", - "tinybench": "^2.1.5", - "tinypool": "^0.3.0", - "tinyspy": "^1.0.2", - "vite": "^2.9.12 || ^3.0.0-0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": ">=v14.16.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ws": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", - "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true, - "optional": true, - "peer": true - } - }, - "dependencies": { - "@esbuild/android-arm": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.8.tgz", - "integrity": "sha512-CyEWALmn+no/lbgbAJsbuuhT8s2J19EJGHkeyAwjbFJMrj80KJ9zuYsoAvidPTU7BgBf87r/sgae8Tw0dbOc4Q==", - "dev": true, - "optional": true, - "requires": { - "esbuild-wasm": "0.15.8" - } - }, - "@esbuild/linux-loong64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.8.tgz", - "integrity": "sha512-pE5RQsOTSERCtfZdfCT25wzo7dfhOSlhAXcsZmuvRYhendOv7djcdvtINdnDp2DAjP17WXlBB4nBO6sHLczmsg==", - "dev": true, - "optional": true - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "optional": true, - "peer": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "optional": true, - "peer": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true, - "optional": true, - "peer": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@types/chai": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", - "integrity": "sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==", - "dev": true - }, - "@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "requires": { - "@types/chai": "*" - } - }, - "@types/node": { - "version": "13.13.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.15.tgz", - "integrity": "sha512-kwbcs0jySLxzLsa2nWUAGOd/s21WU1jebrEdtzhsj1D4Yps1EOuyI1Qcu+FD56dL7NRNIJtDDjcqIG22NwkgLw==", - "dev": true - }, - "abab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", - "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==", - "dev": true, - "optional": true, - "peer": true - }, - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true, - "optional": true, - "peer": true - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true, - "optional": true, - "peer": true - }, - "ajv": { - "version": "6.12.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", - "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true, - "optional": true, - "peer": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true, - "peer": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true, - "optional": true, - "peer": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true, - "optional": true, - "peer": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "optional": true, - "peer": true - }, - "aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", - "dev": true, - "optional": true, - "peer": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true, - "optional": true, - "peer": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true, - "optional": true, - "peer": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true, - "peer": true - }, - "chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true, - "peer": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "optional": true, - "peer": true - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "optional": true, - "peer": true - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true, - "optional": true, - "peer": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "optional": true, - "peer": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "esbuild": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.8.tgz", - "integrity": "sha512-Remsk2dmr1Ia65sU+QasE6svJbsHe62lzR+CnjpUvbZ+uSYo1SitiOWPRfZQkCu82YWZBBKXiD/j0i//XWMZ+Q==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.8", - "@esbuild/linux-loong64": "0.15.8", - "esbuild-android-64": "0.15.8", - "esbuild-android-arm64": "0.15.8", - "esbuild-darwin-64": "0.15.8", - "esbuild-darwin-arm64": "0.15.8", - "esbuild-freebsd-64": "0.15.8", - "esbuild-freebsd-arm64": "0.15.8", - "esbuild-linux-32": "0.15.8", - "esbuild-linux-64": "0.15.8", - "esbuild-linux-arm": "0.15.8", - "esbuild-linux-arm64": "0.15.8", - "esbuild-linux-mips64le": "0.15.8", - "esbuild-linux-ppc64le": "0.15.8", - "esbuild-linux-riscv64": "0.15.8", - "esbuild-linux-s390x": "0.15.8", - "esbuild-netbsd-64": "0.15.8", - "esbuild-openbsd-64": "0.15.8", - "esbuild-sunos-64": "0.15.8", - "esbuild-windows-32": "0.15.8", - "esbuild-windows-64": "0.15.8", - "esbuild-windows-arm64": "0.15.8" - } - }, - "esbuild-android-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.8.tgz", - "integrity": "sha512-bVh8FIKOolF7/d4AMzt7xHlL0Ljr+mYKSHI39TJWDkybVWHdn6+4ODL3xZGHOxPpdRpitemXA1WwMKYBsw8dGw==", - "dev": true, - "optional": true, - "requires": { - "esbuild-wasm": "0.15.8" - } - }, - "esbuild-android-arm64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.8.tgz", - "integrity": "sha512-ReAMDAHuo0H1h9LxRabI6gwYPn8k6WiUeyxuMvx17yTrJO+SCnIfNc/TSPFvDwtK9MiyiKG/2dBYHouT/M0BXQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.8.tgz", - "integrity": "sha512-KaKcGfJ+yto7Fo5gAj3xwxHMd1fBIKatpCHK8znTJLVv+9+NN2/tIPBqA4w5rBwjX0UqXDeIE2v1xJP+nGEXgA==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.8.tgz", - "integrity": "sha512-8tjEaBgAKnXCkP7bhEJmEqdG9HEV6oLkF36BrMzpfW2rgaw0c48Zrxe+9RlfeGvs6gDF4w+agXyTjikzsS3izw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.8.tgz", - "integrity": "sha512-jaxcsGHYzn2L0/lffON2WfH4Nc+d/EwozVTP5K2v016zxMb5UQMhLoJzvLgBqHT1SG0B/mO+a+THnJCMVg15zw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.8.tgz", - "integrity": "sha512-2xp2UlljMvX8HExtcg7VHaeQk8OBU0CSl1j18B5CcZmSDkLF9p3utuMXIopG3a08fr9Hv+Dz6+seSXUow/G51w==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.8.tgz", - "integrity": "sha512-9u1E54BRz1FQMl86iaHK146+4ID2KYNxL3trLZT4QLLx3M7Q9n4lGG3lrzqUatGR2cKy8c33b0iaCzsItZWkFg==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.8.tgz", - "integrity": "sha512-4HxrsN9eUzJXdVGMTYA5Xler82FuZUu21bXKN42zcLHHNKCAMPUzD62I+GwDhsdgUBAUj0tRXDdsQHgaP6v0HA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.8.tgz", - "integrity": "sha512-7DVBU9SFjX4+vBwt8tHsUCbE6Vvl6y6FQWHAgyw1lybC5gULqn/WnjHYHN2/LJaZRsDBvxWT4msEgwLGq1Wd3Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.8.tgz", - "integrity": "sha512-1OCm7Aq0tEJT70PbxmHSGYDLYP8DKH8r4Nk7/XbVzWaduo9beCjGBB+tGZIHK6DdTQ3h00/4Tb/70YMH/bOtKg==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.8.tgz", - "integrity": "sha512-yeFoNPVFPEzZvFYBfUQNG2TjGRaCyV1E27OcOg4LOtnGrxb2wA+mkW3luckyv1CEyd00mpAg7UdHx8nlx3ghgA==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.8.tgz", - "integrity": "sha512-CEyMMUUNabXibw8OSNmBXhOIGhnjNVl5Lpseiuf00iKN0V47oqDrbo4dsHz1wH62m49AR8iG8wpDlTqfYgKbtg==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.8.tgz", - "integrity": "sha512-OCGSOaspMUjexSCU8ZiA0UnV/NiRU+s2vIfEcAQWQ6u32R+2luyfh/4ZaY6jFbylJE07Esc/yRvb9Q5fXuClXA==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.8.tgz", - "integrity": "sha512-RHdpdfxRTSrZXZJlFSLazFU4YwXLB5Rgf6Zr5rffqSsO4y9JybgtKO38bFwxZNlDXliYISXN/YROKrG9s7mZQA==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.8.tgz", - "integrity": "sha512-VolFFRatBH09T5QMWhiohAWCOien1R1Uz9K0BRVVTBgBaVBt7eArsXTKxVhUgRf2vwu2c2SXkuP0r7HLG0eozw==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.8.tgz", - "integrity": "sha512-HTAPlg+n4kUeE/isQxlCfsOz0xJGNoT5LJ9oYZWFKABfVf4Ycu7Zlf5ITgOnrdheTkz8JeL/gISIOCFAoOXrSA==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.8.tgz", - "integrity": "sha512-qMP/jR/FzcIOwKj+W+Lb+8Cfr8GZHbHUJxAPi7DUhNZMQ/6y7sOgRzlOSpRrbbUntrRZh0MqOyDhJ3Gpo6L1QA==", - "dev": true, - "optional": true - }, - "esbuild-wasm": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.8.tgz", - "integrity": "sha512-Y7uCl5RNO4URjlemjdx++ukVHEMt5s5AfMWYUnMiK4Sry+pPCvQIctzXq6r6FKCyGKjX6/NGMCqR2OX6aLxj0w==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.8.tgz", - "integrity": "sha512-RKR1QHh4iWzjUhkP8Yqi75PPz/KS+b8zw3wUrzw6oAkj+iU5Qtyj61ZDaSG3Qf2vc6hTIUiPqVTqBH0NpXFNwg==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.8.tgz", - "integrity": "sha512-ag9ptYrsizgsR+PQE8QKeMqnosLvAMonQREpLw4evA4FFgOBMLEat/dY/9txbpozTw9eEOYyD3a4cE9yTu20FA==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.8.tgz", - "integrity": "sha512-dbpAb0VyPaUs9mgw65KRfQ9rqiWCHpNzrJusoPu+LpEoswosjt/tFxN7cd2l68AT4qWdBkzAjDLRon7uqMeWcg==", - "dev": true, - "optional": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "optional": true, - "peer": true - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "optional": true, - "peer": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "optional": true, - "peer": true - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "optional": true, - "peer": true - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "optional": true, - "peer": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "optional": true, - "peer": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "optional": true, - "peer": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true, - "optional": true, - "peer": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true, - "peer": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "optional": true, - "peer": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "optional": true, - "peer": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "optional": true, - "peer": true - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true, - "peer": true - }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - } - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "optional": true, - "peer": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "optional": true, - "peer": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true, - "peer": true - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true, - "optional": true, - "peer": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "local-pkg": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.2.tgz", - "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==", - "dev": true - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "optional": true, - "peer": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true, - "optional": true, - "peer": true - }, - "loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true, - "optional": true, - "peer": true - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "mime-db": "1.44.0" - } - }, - "molangjs": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/molangjs/-/molangjs-1.5.0.tgz", - "integrity": "sha512-NrK5yqL/hj+L8+vRv1S87gU5a+dxW/XAv1khZ+GhG0NvnBMace20wTQpWAFLHkongB4qfg6H/+fVdnJrP+HZpg==", - "dev": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true, - "optional": true, - "peer": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "optional": true, - "peer": true - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true, - "optional": true, - "peer": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true, - "optional": true, - "peer": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true, - "optional": true, - "peer": true - }, - "postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "optional": true, - "peer": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true, - "optional": true, - "peer": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "optional": true, - "peer": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "optional": true, - "peer": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "rollup": { - "version": "2.78.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", - "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - }, - "dependencies": { - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true, - "peer": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true, - "peer": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true, - "peer": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "peer": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true, - "optional": true, - "peer": true - }, - "strip-literal": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.2.tgz", - "integrity": "sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==", - "dev": true, - "requires": { - "acorn": "^8.8.0" - }, - "dependencies": { - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true - } - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "optional": true, - "peer": true - }, - "terser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", - "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "tinybench": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.1.5.tgz", - "integrity": "sha512-ak+PZZEuH3mw6CCFOgf5S90YH0MARnZNhxjhjguAmoJimEMAJuNip/rJRd6/wyylHItomVpKTzZk9zrhTrQCoQ==", - "dev": true - }, - "tinypool": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.0.tgz", - "integrity": "sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==", - "dev": true - }, - "tinyspy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", - "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true, - "peer": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "typescript": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", - "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true, - "optional": true, - "peer": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vite": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.3.tgz", - "integrity": "sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==", - "dev": true, - "requires": { - "esbuild": "^0.15.6", - "fsevents": "~2.3.2", - "postcss": "^8.4.16", - "resolve": "^1.22.1", - "rollup": "~2.78.0" - }, - "dependencies": { - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - } - } - }, - "vitest": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.23.4.tgz", - "integrity": "sha512-iukBNWqQAv8EKDBUNntspLp9SfpaVFbmzmM0sNcnTxASQZMzRw3PsM6DMlsHiI+I6GeO5/sYDg3ecpC+SNFLrQ==", - "dev": true, - "requires": { - "@types/chai": "^4.3.3", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "chai": "^4.3.6", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "strip-literal": "^0.4.1", - "tinybench": "^2.1.5", - "tinypool": "^0.3.0", - "tinyspy": "^1.0.2", - "vite": "^2.9.12 || ^3.0.0-0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true, - "optional": true, - "peer": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true, - "optional": true, - "peer": true - }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "optional": true, - "peer": true - }, - "ws": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", - "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true, - "optional": true, - "peer": true - } - } -} diff --git a/package.json b/package.json index 0708ffe..04650eb 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,13 @@ "lib": "lib" }, "scripts": { - "build:types": "tsc --project tsconfig.json", - "build:only": "vite build", - "build": "npm run build:only && npm run build:types", + "build": "vite build", "test": "vitest", - "bench": "vitest bench" + "types": "tsc --project tsconfig.json", + "bench": "vitest bench", + "changeset": "changeset", + "version-packages": "changeset version", + "release": "pnpm build && changeset publish" }, "repository": { "type": "git", @@ -32,10 +34,11 @@ }, "homepage": "https://github.com/LunarClient/node-molang#readme", "devDependencies": { + "@changesets/cli": "^2.27.1", "@types/node": "^13.1.2", "molangjs": "^1.5.0", "typescript": "^4.2.3", "vite": "^3.1.3", "vitest": "^0.23.4" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..790afcf --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1509 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: false + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@changesets/cli': + specifier: ^2.27.1 + version: 2.27.7 + '@types/node': + specifier: ^13.1.2 + version: 13.13.52 + molangjs: + specifier: ^1.5.0 + version: 1.6.4 + typescript: + specifier: ^4.2.3 + version: 4.9.5 + vite: + specifier: ^3.1.3 + version: 3.2.10(@types/node@13.13.52) + vitest: + specifier: ^0.23.4 + version: 0.23.4 + +packages: + + '@babel/runtime@7.25.0': + resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} + engines: {node: '>=6.9.0'} + + '@changesets/apply-release-plan@7.0.4': + resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} + + '@changesets/assemble-release-plan@6.0.3': + resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==} + + '@changesets/changelog-git@0.2.0': + resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} + + '@changesets/cli@2.27.7': + resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==} + hasBin: true + + '@changesets/config@3.0.2': + resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.1.1': + resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==} + + '@changesets/get-release-plan@4.0.3': + resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.0': + resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} + + '@changesets/logger@0.1.0': + resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} + + '@changesets/parse@0.4.0': + resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} + + '@changesets/pre@2.0.0': + resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} + + '@changesets/read@0.6.0': + resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + + '@changesets/should-skip-package@0.1.0': + resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.0.0': + resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + + '@changesets/write@0.3.1': + resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} + + '@esbuild/android-arm@0.15.18': + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/linux-loong64@0.15.18': + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@types/chai-subset@1.3.5': + resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} + + '@types/chai@4.3.17': + resolution: {integrity: sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@13.13.52': + resolution: {integrity: sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + + molangjs@1.6.4: + resolution: {integrity: sha512-Evi2MbMcfDFwcG4HVjsX4MAj+jc7itlp1Ncd+sQ+4jel7N1pADUJpiWEdg3d9IIK+0RQwJw7EE3GrM+ERWbcQA==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + postcss@8.4.40: + resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + engines: {node: ^10 || ^12 || >=14} + + preferred-pm@3.1.4: + resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} + engines: {node: '>=10'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-literal@0.4.2: + resolution: {integrity: sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + + tinypool@0.3.1: + resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==} + engines: {node: '>=14.0.0'} + + tinyspy@1.1.1: + resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} + engines: {node: '>=14.0.0'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + vite@3.2.10: + resolution: {integrity: sha512-Dx3olBo/ODNiMVk/cA5Yft9Ws+snLOXrhLtrI3F4XLt4syz2Yg8fayZMWScPKoz12v5BUv7VEmQHnsfpY80fYw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@0.23.4: + resolution: {integrity: sha512-iukBNWqQAv8EKDBUNntspLp9SfpaVFbmzmM0sNcnTxASQZMzRw3PsM6DMlsHiI+I6GeO5/sYDg3ecpC+SNFLrQ==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + which-pm@2.2.0: + resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} + engines: {node: '>=8.15'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@babel/runtime@7.25.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@changesets/apply-release-plan@7.0.4': + dependencies: + '@babel/runtime': 7.25.0 + '@changesets/config': 3.0.2 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.0 + '@changesets/should-skip-package': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.6.3 + + '@changesets/assemble-release-plan@6.0.3': + dependencies: + '@babel/runtime': 7.25.0 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.1 + '@changesets/should-skip-package': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.6.3 + + '@changesets/changelog-git@0.2.0': + dependencies: + '@changesets/types': 6.0.0 + + '@changesets/cli@2.27.7': + dependencies: + '@babel/runtime': 7.25.0 + '@changesets/apply-release-plan': 7.0.4 + '@changesets/assemble-release-plan': 6.0.3 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.2 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.1 + '@changesets/get-release-plan': 4.0.3 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/should-skip-package': 0.1.0 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.1 + '@manypkg/get-packages': 1.1.3 + '@types/semver': 7.5.8 + ansi-colors: 4.1.3 + chalk: 2.4.2 + ci-info: 3.9.0 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + mri: 1.2.0 + outdent: 0.5.0 + p-limit: 2.3.0 + preferred-pm: 3.1.4 + resolve-from: 5.0.0 + semver: 7.6.3 + spawndamnit: 2.0.0 + term-size: 2.2.1 + + '@changesets/config@3.0.2': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.1 + '@changesets/logger': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.7 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.1.1': + dependencies: + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + chalk: 2.4.2 + fs-extra: 7.0.1 + semver: 7.6.3 + + '@changesets/get-release-plan@4.0.3': + dependencies: + '@babel/runtime': 7.25.0 + '@changesets/assemble-release-plan': 6.0.3 + '@changesets/config': 3.0.2 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.0': + dependencies: + '@babel/runtime': 7.25.0 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.7 + spawndamnit: 2.0.0 + + '@changesets/logger@0.1.0': + dependencies: + chalk: 2.4.2 + + '@changesets/parse@0.4.0': + dependencies: + '@changesets/types': 6.0.0 + js-yaml: 3.14.1 + + '@changesets/pre@2.0.0': + dependencies: + '@babel/runtime': 7.25.0 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.0': + dependencies: + '@babel/runtime': 7.25.0 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 + chalk: 2.4.2 + fs-extra: 7.0.1 + p-filter: 2.1.0 + + '@changesets/should-skip-package@0.1.0': + dependencies: + '@babel/runtime': 7.25.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.0.0': {} + + '@changesets/write@0.3.1': + dependencies: + '@babel/runtime': 7.25.0 + '@changesets/types': 6.0.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 2.8.8 + + '@esbuild/android-arm@0.15.18': + optional: true + + '@esbuild/linux-loong64@0.15.18': + optional: true + + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.25.0 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.25.0 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@types/chai-subset@1.3.5': + dependencies: + '@types/chai': 4.3.17 + + '@types/chai@4.3.17': {} + + '@types/node@12.20.55': {} + + '@types/node@13.13.52': {} + + '@types/semver@7.5.8': {} + + acorn@8.12.1: {} + + ansi-colors@4.1.3: {} + + ansi-regex@5.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + array-union@2.1.0: {} + + assertion-error@1.1.0: {} + + better-path-resolve@1.0.0: + dependencies: + is-windows: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chardet@0.7.0: {} + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + ci-info@3.9.0: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-name@1.1.3: {} + + cross-spawn@5.1.0: + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + + debug@4.3.6: + dependencies: + ms: 2.1.2 + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + detect-indent@6.1.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + esbuild-android-64@0.15.18: + optional: true + + esbuild-android-arm64@0.15.18: + optional: true + + esbuild-darwin-64@0.15.18: + optional: true + + esbuild-darwin-arm64@0.15.18: + optional: true + + esbuild-freebsd-64@0.15.18: + optional: true + + esbuild-freebsd-arm64@0.15.18: + optional: true + + esbuild-linux-32@0.15.18: + optional: true + + esbuild-linux-64@0.15.18: + optional: true + + esbuild-linux-arm64@0.15.18: + optional: true + + esbuild-linux-arm@0.15.18: + optional: true + + esbuild-linux-mips64le@0.15.18: + optional: true + + esbuild-linux-ppc64le@0.15.18: + optional: true + + esbuild-linux-riscv64@0.15.18: + optional: true + + esbuild-linux-s390x@0.15.18: + optional: true + + esbuild-netbsd-64@0.15.18: + optional: true + + esbuild-openbsd-64@0.15.18: + optional: true + + esbuild-sunos-64@0.15.18: + optional: true + + esbuild-windows-32@0.15.18: + optional: true + + esbuild-windows-64@0.15.18: + optional: true + + esbuild-windows-arm64@0.15.18: + optional: true + + esbuild@0.15.18: + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + + escape-string-regexp@1.0.5: {} + + esprima@4.0.1: {} + + extendable-error@0.1.7: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-yarn-workspace-root2@1.2.16: + dependencies: + micromatch: 4.0.7 + pkg-dir: 4.2.0 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-func-name@2.0.2: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + + graceful-fs@4.2.11: {} + + has-flag@3.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + human-id@1.0.2: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.1: {} + + is-core-module@2.15.0: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-subdir@1.2.0: + dependencies: + better-path-resolve: 1.0.0 + + is-windows@1.0.2: {} + + isexe@2.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + load-yaml-file@0.2.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + local-pkg@0.4.3: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.startcase@4.4.0: {} + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lru-cache@4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + + merge2@1.4.1: {} + + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + molangjs@1.6.4: {} + + mri@1.2.0: {} + + ms@2.1.2: {} + + nanoid@3.3.7: {} + + os-tmpdir@1.0.2: {} + + outdent@0.5.0: {} + + p-filter@2.1.0: + dependencies: + p-map: 2.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@2.1.0: {} + + p-try@2.2.0: {} + + path-exists@4.0.0: {} + + path-parse@1.0.7: {} + + path-type@4.0.0: {} + + pathval@1.1.1: {} + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + pify@4.0.1: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + postcss@8.4.40: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + preferred-pm@3.1.4: + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.2.0 + + prettier@2.8.8: {} + + pseudomap@1.0.2: {} + + queue-microtask@1.2.3: {} + + read-yaml-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + regenerator-runtime@0.14.1: {} + + resolve-from@5.0.0: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.0.4: {} + + rollup@2.79.1: + optionalDependencies: + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safer-buffer@2.1.2: {} + + semver@7.6.3: {} + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-regex@1.0.0: {} + + signal-exit@3.0.7: {} + + slash@3.0.0: {} + + source-map-js@1.2.0: {} + + spawndamnit@2.0.0: + dependencies: + cross-spawn: 5.1.0 + signal-exit: 3.0.7 + + sprintf-js@1.0.3: {} + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@3.0.0: {} + + strip-literal@0.4.2: + dependencies: + acorn: 8.12.1 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + term-size@2.2.1: {} + + tinybench@2.8.0: {} + + tinypool@0.3.1: {} + + tinyspy@1.1.1: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + type-detect@4.1.0: {} + + typescript@4.9.5: {} + + universalify@0.1.2: {} + + vite@3.2.10(@types/node@13.13.52): + dependencies: + esbuild: 0.15.18 + postcss: 8.4.40 + resolve: 1.22.8 + rollup: 2.79.1 + optionalDependencies: + '@types/node': 13.13.52 + fsevents: 2.3.3 + + vitest@0.23.4: + dependencies: + '@types/chai': 4.3.17 + '@types/chai-subset': 1.3.5 + '@types/node': 13.13.52 + chai: 4.5.0 + debug: 4.3.6 + local-pkg: 0.4.3 + strip-literal: 0.4.2 + tinybench: 2.8.0 + tinypool: 0.3.1 + tinyspy: 1.1.1 + vite: 3.2.10(@types/node@13.13.52) + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + + which-pm@2.2.0: + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + yallist@2.1.2: {} + + yocto-queue@0.1.0: {}