summaryrefslogtreecommitdiff
path: root/node_modules/@babel/template
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-18 22:32:53 -0500
committerChristian Cleberg <[email protected]>2026-04-18 22:32:53 -0500
commit580e798e16346eb894eb899edac82d2efdf40adc (patch)
tree6dec3b7db678f781138b40d34da37d21ac8fbe7d /node_modules/@babel/template
downloadbrand-bench-580e798e16346eb894eb899edac82d2efdf40adc.tar.gz
brand-bench-580e798e16346eb894eb899edac82d2efdf40adc.tar.bz2
brand-bench-580e798e16346eb894eb899edac82d2efdf40adc.zip
initial commit
Diffstat (limited to 'node_modules/@babel/template')
-rw-r--r--node_modules/@babel/template/LICENSE22
-rw-r--r--node_modules/@babel/template/README.md19
-rw-r--r--node_modules/@babel/template/lib/builder.js69
-rw-r--r--node_modules/@babel/template/lib/builder.js.map1
-rw-r--r--node_modules/@babel/template/lib/formatters.js61
-rw-r--r--node_modules/@babel/template/lib/formatters.js.map1
-rw-r--r--node_modules/@babel/template/lib/index.js23
-rw-r--r--node_modules/@babel/template/lib/index.js.map1
-rw-r--r--node_modules/@babel/template/lib/literal.js69
-rw-r--r--node_modules/@babel/template/lib/literal.js.map1
-rw-r--r--node_modules/@babel/template/lib/options.js73
-rw-r--r--node_modules/@babel/template/lib/options.js.map1
-rw-r--r--node_modules/@babel/template/lib/parse.js163
-rw-r--r--node_modules/@babel/template/lib/parse.js.map1
-rw-r--r--node_modules/@babel/template/lib/populate.js138
-rw-r--r--node_modules/@babel/template/lib/populate.js.map1
-rw-r--r--node_modules/@babel/template/lib/string.js20
-rw-r--r--node_modules/@babel/template/lib/string.js.map1
-rw-r--r--node_modules/@babel/template/package.json27
19 files changed, 692 insertions, 0 deletions
diff --git a/node_modules/@babel/template/LICENSE b/node_modules/@babel/template/LICENSE
new file mode 100644
index 0000000..f31575e
--- /dev/null
+++ b/node_modules/@babel/template/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/@babel/template/README.md b/node_modules/@babel/template/README.md
new file mode 100644
index 0000000..c2980fd
--- /dev/null
+++ b/node_modules/@babel/template/README.md
@@ -0,0 +1,19 @@
+# @babel/template
+
+> Generate an AST from a string template.
+
+See our website [@babel/template](https://babeljs.io/docs/babel-template) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/template
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/template --dev
+```
diff --git a/node_modules/@babel/template/lib/builder.js b/node_modules/@babel/template/lib/builder.js
new file mode 100644
index 0000000..38cb2eb
--- /dev/null
+++ b/node_modules/@babel/template/lib/builder.js
@@ -0,0 +1,69 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = createTemplateBuilder;
+var _options = require("./options.js");
+var _string = require("./string.js");
+var _literal = require("./literal.js");
+const NO_PLACEHOLDER = (0, _options.validate)({
+ placeholderPattern: false
+});
+function createTemplateBuilder(formatter, defaultOpts) {
+ const templateFnCache = new WeakMap();
+ const templateAstCache = new WeakMap();
+ const cachedOpts = defaultOpts || (0, _options.validate)(null);
+ return Object.assign((tpl, ...args) => {
+ if (typeof tpl === "string") {
+ if (args.length > 1) throw new Error("Unexpected extra params.");
+ return extendedTrace((0, _string.default)(formatter, tpl, (0, _options.merge)(cachedOpts, (0, _options.validate)(args[0]))));
+ } else if (Array.isArray(tpl)) {
+ let builder = templateFnCache.get(tpl);
+ if (!builder) {
+ builder = (0, _literal.default)(formatter, tpl, cachedOpts);
+ templateFnCache.set(tpl, builder);
+ }
+ return extendedTrace(builder(args));
+ } else if (typeof tpl === "object" && tpl) {
+ if (args.length > 0) throw new Error("Unexpected extra params.");
+ return createTemplateBuilder(formatter, (0, _options.merge)(cachedOpts, (0, _options.validate)(tpl)));
+ }
+ throw new Error(`Unexpected template param ${typeof tpl}`);
+ }, {
+ ast: (tpl, ...args) => {
+ if (typeof tpl === "string") {
+ if (args.length > 1) throw new Error("Unexpected extra params.");
+ return (0, _string.default)(formatter, tpl, (0, _options.merge)((0, _options.merge)(cachedOpts, (0, _options.validate)(args[0])), NO_PLACEHOLDER))();
+ } else if (Array.isArray(tpl)) {
+ let builder = templateAstCache.get(tpl);
+ if (!builder) {
+ builder = (0, _literal.default)(formatter, tpl, (0, _options.merge)(cachedOpts, NO_PLACEHOLDER));
+ templateAstCache.set(tpl, builder);
+ }
+ return builder(args)();
+ }
+ throw new Error(`Unexpected template param ${typeof tpl}`);
+ }
+ });
+}
+function extendedTrace(fn) {
+ let rootStack = "";
+ try {
+ throw new Error();
+ } catch (error) {
+ if (error.stack) {
+ rootStack = error.stack.split("\n").slice(3).join("\n");
+ }
+ }
+ return arg => {
+ try {
+ return fn(arg);
+ } catch (err) {
+ err.stack += `\n =============\n${rootStack}`;
+ throw err;
+ }
+ };
+}
+
+//# sourceMappingURL=builder.js.map
diff --git a/node_modules/@babel/template/lib/builder.js.map b/node_modules/@babel/template/lib/builder.js.map
new file mode 100644
index 0000000..9adb6b3
--- /dev/null
+++ b/node_modules/@babel/template/lib/builder.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_options","require","_string","_literal","NO_PLACEHOLDER","validate","placeholderPattern","createTemplateBuilder","formatter","defaultOpts","templateFnCache","WeakMap","templateAstCache","cachedOpts","Object","assign","tpl","args","length","Error","extendedTrace","stringTemplate","merge","Array","isArray","builder","get","literalTemplate","set","ast","fn","rootStack","error","stack","split","slice","join","arg","err"],"sources":["../src/builder.ts"],"sourcesContent":["import { merge, validate } from \"./options.ts\";\nimport type {\n TemplateOpts,\n PublicOpts,\n PublicReplacements,\n} from \"./options.ts\";\nimport type { Formatter } from \"./formatters.ts\";\n\nimport stringTemplate from \"./string.ts\";\nimport literalTemplate from \"./literal.ts\";\n\nexport type TemplateBuilder<T> = {\n // Build a new builder, merging the given options with the previous ones.\n (opts: PublicOpts): TemplateBuilder<T>;\n\n // Building from a string produces an AST builder function by default.\n (tpl: string, opts?: PublicOpts): (replacements?: PublicReplacements) => T;\n\n // Building from a template literal produces an AST builder function by default.\n (\n tpl: TemplateStringsArray,\n ...args: unknown[]\n ): (replacements?: PublicReplacements) => T;\n\n // Allow users to explicitly create templates that produce ASTs, skipping\n // the need for an intermediate function.\n ast: {\n (tpl: string, opts?: PublicOpts): T;\n (tpl: TemplateStringsArray, ...args: unknown[]): T;\n };\n};\n\n// Prebuild the options that will be used when parsing a `.ast` template.\n// These do not use a pattern because there is no way for users to pass in\n// replacement patterns to begin with, and disabling pattern matching means\n// users have more flexibility in what type of content they have in their\n// template JS.\nconst NO_PLACEHOLDER: TemplateOpts = validate({\n placeholderPattern: false,\n});\n\nexport default function createTemplateBuilder<T>(\n formatter: Formatter<T>,\n defaultOpts?: TemplateOpts,\n): TemplateBuilder<T> {\n const templateFnCache = new WeakMap();\n const templateAstCache = new WeakMap();\n const cachedOpts = defaultOpts || validate(null);\n\n return Object.assign(\n ((tpl, ...args) => {\n if (typeof tpl === \"string\") {\n if (args.length > 1) throw new Error(\"Unexpected extra params.\");\n return extendedTrace(\n stringTemplate(formatter, tpl, merge(cachedOpts, validate(args[0]))),\n );\n } else if (Array.isArray(tpl)) {\n let builder = templateFnCache.get(tpl);\n if (!builder) {\n builder = literalTemplate(formatter, tpl, cachedOpts);\n templateFnCache.set(tpl, builder);\n }\n return extendedTrace(builder(args));\n } else if (typeof tpl === \"object\" && tpl) {\n if (args.length > 0) throw new Error(\"Unexpected extra params.\");\n return createTemplateBuilder(\n formatter,\n merge(cachedOpts, validate(tpl)),\n );\n }\n throw new Error(`Unexpected template param ${typeof tpl}`);\n }) as TemplateBuilder<T>,\n {\n ast: (tpl: string | string[], ...args: unknown[]) => {\n if (typeof tpl === \"string\") {\n if (args.length > 1) throw new Error(\"Unexpected extra params.\");\n return stringTemplate(\n formatter,\n tpl,\n merge(merge(cachedOpts, validate(args[0])), NO_PLACEHOLDER),\n )();\n } else if (Array.isArray(tpl)) {\n let builder = templateAstCache.get(tpl);\n if (!builder) {\n builder = literalTemplate(\n formatter,\n tpl,\n merge(cachedOpts, NO_PLACEHOLDER),\n );\n templateAstCache.set(tpl, builder);\n }\n return builder(args)();\n }\n\n throw new Error(`Unexpected template param ${typeof tpl}`);\n },\n },\n );\n}\n\nfunction extendedTrace<Arg, Result>(\n fn: (_: Arg) => Result,\n): (_: Arg) => Result {\n // Since we lazy parse the template, we get the current stack so we have the\n // original stack to append if it errors when parsing\n let rootStack = \"\";\n try {\n // error stack gets populated in IE only on throw\n // (https://msdn.microsoft.com/en-us/library/hh699850(v=vs.94).aspx)\n throw new Error();\n } catch (error) {\n if (error.stack) {\n // error.stack does not exists in IE <= 9\n // We slice off the top 3 items in the stack to remove the call to\n // 'extendedTrace', and the anonymous builder function, with the final\n // stripped line being the error message itself since we threw it\n // in the first place and it doesn't matter.\n rootStack = error.stack.split(\"\\n\").slice(3).join(\"\\n\");\n }\n }\n\n return (arg: Arg) => {\n try {\n return fn(arg);\n } catch (err) {\n err.stack += `\\n =============\\n${rootStack}`;\n throw err;\n }\n };\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/node_modules/@babel/template/lib/formatters.js b/node_modules/@babel/template/lib/formatters.js
new file mode 100644
index 0000000..3e284d1
--- /dev/null
+++ b/node_modules/@babel/template/lib/formatters.js
@@ -0,0 +1,61 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.statements = exports.statement = exports.smart = exports.program = exports.expression = void 0;
+var _t = require("@babel/types");
+const {
+ assertExpressionStatement
+} = _t;
+function makeStatementFormatter(fn) {
+ return {
+ code: str => `/* @babel/template */;\n${str}`,
+ validate: () => {},
+ unwrap: ast => {
+ return fn(ast.program.body.slice(1));
+ }
+ };
+}
+const smart = exports.smart = makeStatementFormatter(body => {
+ if (body.length > 1) {
+ return body;
+ } else {
+ return body[0];
+ }
+});
+const statements = exports.statements = makeStatementFormatter(body => body);
+const statement = exports.statement = makeStatementFormatter(body => {
+ if (body.length === 0) {
+ throw new Error("Found nothing to return.");
+ }
+ if (body.length > 1) {
+ throw new Error("Found multiple statements but wanted one");
+ }
+ return body[0];
+});
+const expression = exports.expression = {
+ code: str => `(\n${str}\n)`,
+ validate: ast => {
+ if (ast.program.body.length > 1) {
+ throw new Error("Found multiple statements but wanted one");
+ }
+ if (expression.unwrap(ast).start === 0) {
+ throw new Error("Parse result included parens.");
+ }
+ },
+ unwrap: ({
+ program
+ }) => {
+ const [stmt] = program.body;
+ assertExpressionStatement(stmt);
+ return stmt.expression;
+ }
+};
+const program = exports.program = {
+ code: str => str,
+ validate: () => {},
+ unwrap: ast => ast.program
+};
+
+//# sourceMappingURL=formatters.js.map
diff --git a/node_modules/@babel/template/lib/formatters.js.map b/node_modules/@babel/template/lib/formatters.js.map
new file mode 100644
index 0000000..ed391f5
--- /dev/null
+++ b/node_modules/@babel/template/lib/formatters.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_t","require","assertExpressionStatement","makeStatementFormatter","fn","code","str","validate","unwrap","ast","program","body","slice","smart","exports","length","statements","statement","Error","expression","start","stmt"],"sources":["../src/formatters.ts"],"sourcesContent":["import { assertExpressionStatement } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport type Formatter<T> = {\n code: (source: string) => string;\n validate: (ast: t.File) => void;\n unwrap: (ast: t.File) => T;\n};\n\nfunction makeStatementFormatter<T>(\n fn: (statements: t.Statement[]) => T,\n): Formatter<T> {\n return {\n // We need to prepend a \";\" to force statement parsing so that\n // ExpressionStatement strings won't be parsed as directives.\n // Alongside that, we also prepend a comment so that when a syntax error\n // is encountered, the user will be less likely to get confused about\n // where the random semicolon came from.\n code: str => `/* @babel/template */;\\n${str}`,\n validate: () => {},\n unwrap: (ast: t.File): T => {\n return fn(ast.program.body.slice(1));\n },\n };\n}\n\nexport const smart = makeStatementFormatter(body => {\n if (body.length > 1) {\n return body;\n } else {\n return body[0];\n }\n});\n\nexport const statements = makeStatementFormatter(body => body);\n\nexport const statement = makeStatementFormatter(body => {\n // We do this validation when unwrapping since the replacement process\n // could have added or removed statements.\n if (body.length === 0) {\n throw new Error(\"Found nothing to return.\");\n }\n if (body.length > 1) {\n throw new Error(\"Found multiple statements but wanted one\");\n }\n\n return body[0];\n});\n\nexport const expression: Formatter<t.Expression> = {\n code: str => `(\\n${str}\\n)`,\n validate: ast => {\n if (ast.program.body.length > 1) {\n throw new Error(\"Found multiple statements but wanted one\");\n }\n if (expression.unwrap(ast).start === 0) {\n throw new Error(\"Parse result included parens.\");\n }\n },\n unwrap: ({ program }) => {\n const [stmt] = program.body;\n assertExpressionStatement(stmt);\n return stmt.expression;\n },\n};\n\nexport const program: Formatter<t.Program> = {\n code: str => str,\n validate: () => {},\n unwrap: ast => ast.program,\n};\n"],"mappings":";;;;;;AAAA,IAAAA,EAAA,GAAAC,OAAA;AAAyD;EAAhDC;AAAyB,IAAAF,EAAA;AASlC,SAASG,sBAAsBA,CAC7BC,EAAoC,EACtB;EACd,OAAO;IAMLC,IAAI,EAAEC,GAAG,IAAI,2BAA2BA,GAAG,EAAE;IAC7CC,QAAQ,EAAEA,CAAA,KAAM,CAAC,CAAC;IAClBC,MAAM,EAAGC,GAAW,IAAQ;MAC1B,OAAOL,EAAE,CAACK,GAAG,CAACC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtC;EACF,CAAC;AACH;AAEO,MAAMC,KAAK,GAAAC,OAAA,CAAAD,KAAA,GAAGV,sBAAsB,CAACQ,IAAI,IAAI;EAClD,IAAIA,IAAI,CAACI,MAAM,GAAG,CAAC,EAAE;IACnB,OAAOJ,IAAI;EACb,CAAC,MAAM;IACL,OAAOA,IAAI,CAAC,CAAC,CAAC;EAChB;AACF,CAAC,CAAC;AAEK,MAAMK,UAAU,GAAAF,OAAA,CAAAE,UAAA,GAAGb,sBAAsB,CAACQ,IAAI,IAAIA,IAAI,CAAC;AAEvD,MAAMM,SAAS,GAAAH,OAAA,CAAAG,SAAA,GAAGd,sBAAsB,CAACQ,IAAI,IAAI;EAGtD,IAAIA,IAAI,CAACI,MAAM,KAAK,CAAC,EAAE;IACrB,MAAM,IAAIG,KAAK,CAAC,0BAA0B,CAAC;EAC7C;EACA,IAAIP,IAAI,CAACI,MAAM,GAAG,CAAC,EAAE;IACnB,MAAM,IAAIG,KAAK,CAAC,0CAA0C,CAAC;EAC7D;EAEA,OAAOP,IAAI,CAAC,CAAC,CAAC;AAChB,CAAC,CAAC;AAEK,MAAMQ,UAAmC,GAAAL,OAAA,CAAAK,UAAA,GAAG;EACjDd,IAAI,EAAEC,GAAG,IAAI,MAAMA,GAAG,KAAK;EAC3BC,QAAQ,EAAEE,GAAG,IAAI;IACf,IAAIA,GAAG,CAACC,OAAO,CAACC,IAAI,CAACI,MAAM,GAAG,CAAC,EAAE;MAC/B,MAAM,IAAIG,KAAK,CAAC,0CAA0C,CAAC;IAC7D;IACA,IAAIC,UAAU,CAACX,MAAM,CAACC,GAAG,CAAC,CAACW,KAAK,KAAK,CAAC,EAAE;MACtC,MAAM,IAAIF,KAAK,CAAC,+BAA+B,CAAC;IAClD;EACF,CAAC;EACDV,MAAM,EAAEA,CAAC;IAAEE;EAAQ,CAAC,KAAK;IACvB,MAAM,CAACW,IAAI,CAAC,GAAGX,OAAO,CAACC,IAAI;IAC3BT,yBAAyB,CAACmB,IAAI,CAAC;IAC/B,OAAOA,IAAI,CAACF,UAAU;EACxB;AACF,CAAC;AAEM,MAAMT,OAA6B,GAAAI,OAAA,CAAAJ,OAAA,GAAG;EAC3CL,IAAI,EAAEC,GAAG,IAAIA,GAAG;EAChBC,QAAQ,EAAEA,CAAA,KAAM,CAAC,CAAC;EAClBC,MAAM,EAAEC,GAAG,IAAIA,GAAG,CAACC;AACrB,CAAC","ignoreList":[]} \ No newline at end of file
diff --git a/node_modules/@babel/template/lib/index.js b/node_modules/@babel/template/lib/index.js
new file mode 100644
index 0000000..7028cc5
--- /dev/null
+++ b/node_modules/@babel/template/lib/index.js
@@ -0,0 +1,23 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.statements = exports.statement = exports.smart = exports.program = exports.expression = exports.default = void 0;
+var formatters = require("./formatters.js");
+var _builder = require("./builder.js");
+const smart = exports.smart = (0, _builder.default)(formatters.smart);
+const statement = exports.statement = (0, _builder.default)(formatters.statement);
+const statements = exports.statements = (0, _builder.default)(formatters.statements);
+const expression = exports.expression = (0, _builder.default)(formatters.expression);
+const program = exports.program = (0, _builder.default)(formatters.program);
+var _default = exports.default = Object.assign(smart.bind(undefined), {
+ smart,
+ statement,
+ statements,
+ expression,
+ program,
+ ast: smart.ast
+});
+
+//# sourceMappingURL=index.js.map
diff --git a/node_modules/@babel/template/lib/index.js.map b/node_modules/@babel/template/lib/index.js.map
new file mode 100644
index 0000000..b77ab6e
--- /dev/null
+++ b/node_modules/@babel/template/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["formatters","require","_builder","smart","exports","createTemplateBuilder","statement","statements","expression","program","_default","default","Object","assign","bind","undefined","ast"],"sources":["../src/index.ts"],"sourcesContent":["import * as formatters from \"./formatters.ts\";\nimport createTemplateBuilder from \"./builder.ts\";\n\nexport const smart = createTemplateBuilder(formatters.smart);\nexport const statement = createTemplateBuilder(formatters.statement);\nexport const statements = createTemplateBuilder(formatters.statements);\nexport const expression = createTemplateBuilder(formatters.expression);\nexport const program = createTemplateBuilder(formatters.program);\n\ntype DefaultTemplateBuilder = typeof smart & {\n smart: typeof smart;\n statement: typeof statement;\n statements: typeof statements;\n expression: typeof expression;\n program: typeof program;\n};\n\nexport default Object.assign(smart.bind(undefined) as DefaultTemplateBuilder, {\n smart,\n statement,\n statements,\n expression,\n program,\n ast: smart.ast,\n});\n\nexport type {\n PublicOpts as Options,\n PublicReplacements as Replacements,\n} from \"./options.ts\";\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEO,MAAME,KAAK,GAAAC,OAAA,CAAAD,KAAA,GAAG,IAAAE,gBAAqB,EAACL,UAAU,CAACG,KAAK,CAAC;AACrD,MAAMG,SAAS,GAAAF,OAAA,CAAAE,SAAA,GAAG,IAAAD,gBAAqB,EAACL,UAAU,CAACM,SAAS,CAAC;AAC7D,MAAMC,UAAU,GAAAH,OAAA,CAAAG,UAAA,GAAG,IAAAF,gBAAqB,EAACL,UAAU,CAACO,UAAU,CAAC;AAC/D,MAAMC,UAAU,GAAAJ,OAAA,CAAAI,UAAA,GAAG,IAAAH,gBAAqB,EAACL,UAAU,CAACQ,UAAU,CAAC;AAC/D,MAAMC,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG,IAAAJ,gBAAqB,EAACL,UAAU,CAACS,OAAO,CAAC;AAAC,IAAAC,QAAA,GAAAN,OAAA,CAAAO,OAAA,GAUlDC,MAAM,CAACC,MAAM,CAACV,KAAK,CAACW,IAAI,CAACC,SAAS,CAAC,EAA4B;EAC5EZ,KAAK;EACLG,SAAS;EACTC,UAAU;EACVC,UAAU;EACVC,OAAO;EACPO,GAAG,EAAEb,KAAK,CAACa;AACb,CAAC,CAAC","ignoreList":[]} \ No newline at end of file
diff --git a/node_modules/@babel/template/lib/literal.js b/node_modules/@babel/template/lib/literal.js
new file mode 100644
index 0000000..58beffb
--- /dev/null
+++ b/node_modules/@babel/template/lib/literal.js
@@ -0,0 +1,69 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = literalTemplate;
+var _options = require("./options.js");
+var _parse = require("./parse.js");
+var _populate = require("./populate.js");
+function literalTemplate(formatter, tpl, opts) {
+ const {
+ metadata,
+ names
+ } = buildLiteralData(formatter, tpl, opts);
+ return arg => {
+ const defaultReplacements = {};
+ arg.forEach((replacement, i) => {
+ defaultReplacements[names[i]] = replacement;
+ });
+ return arg => {
+ const replacements = (0, _options.normalizeReplacements)(arg);
+ if (replacements) {
+ Object.keys(replacements).forEach(key => {
+ if (hasOwnProperty.call(defaultReplacements, key)) {
+ throw new Error("Unexpected replacement overlap.");
+ }
+ });
+ }
+ return formatter.unwrap((0, _populate.default)(metadata, replacements ? Object.assign(replacements, defaultReplacements) : defaultReplacements));
+ };
+ };
+}
+function buildLiteralData(formatter, tpl, opts) {
+ let prefix = "BABEL_TPL$";
+ const raw = tpl.join("");
+ do {
+ prefix = "$$" + prefix;
+ } while (raw.includes(prefix));
+ const {
+ names,
+ code
+ } = buildTemplateCode(tpl, prefix);
+ const metadata = (0, _parse.default)(formatter, formatter.code(code), {
+ parser: opts.parser,
+ placeholderWhitelist: new Set(names.concat(opts.placeholderWhitelist ? Array.from(opts.placeholderWhitelist) : [])),
+ placeholderPattern: opts.placeholderPattern,
+ preserveComments: opts.preserveComments,
+ syntacticPlaceholders: opts.syntacticPlaceholders
+ });
+ return {
+ metadata,
+ names
+ };
+}
+function buildTemplateCode(tpl, prefix) {
+ const names = [];
+ let code = tpl[0];
+ for (let i = 1; i < tpl.length; i++) {
+ const value = `${prefix}${i - 1}`;
+ names.push(value);
+ code += value + tpl[i];
+ }
+ return {
+ names,
+ code
+ };
+}
+
+//# sourceMappingURL=literal.js.map
diff --git a/node_modules/@babel/template/lib/literal.js.map b/node_modules/@babel/template/lib/literal.js.map
new file mode 100644
index 0000000..c1d544c
--- /dev/null
+++ b/node_modules/@babel/template/lib/literal.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_options","require","_parse","_populate","literalTemplate","formatter","tpl","opts","metadata","names","buildLiteralData","arg","defaultReplacements","forEach","replacement","i","replacements","normalizeReplacements","Object","keys","key","hasOwnProperty","call","Error","unwrap","populatePlaceholders","assign","prefix","raw","join","includes","code","buildTemplateCode","parseAndBuildMetadata","parser","placeholderWhitelist","Set","concat","Array","from","placeholderPattern","preserveComments","syntacticPlaceholders","length","value","push"],"sources":["../src/literal.ts"],"sourcesContent":["import type { Formatter } from \"./formatters.ts\";\nimport type { TemplateReplacements, TemplateOpts } from \"./options.ts\";\nimport { normalizeReplacements } from \"./options.ts\";\nimport parseAndBuildMetadata from \"./parse.ts\";\nimport populatePlaceholders from \"./populate.ts\";\n\nexport default function literalTemplate<T>(\n formatter: Formatter<T>,\n tpl: string[],\n opts: TemplateOpts,\n): (_: unknown[]) => (_: unknown) => T {\n const { metadata, names } = buildLiteralData(formatter, tpl, opts);\n\n return arg => {\n const defaultReplacements: TemplateReplacements = {};\n arg.forEach((replacement, i) => {\n defaultReplacements[names[i]] = replacement;\n });\n\n return (arg: unknown) => {\n const replacements = normalizeReplacements(arg);\n\n if (replacements) {\n Object.keys(replacements).forEach(key => {\n if (Object.hasOwn(defaultReplacements, key)) {\n throw new Error(\"Unexpected replacement overlap.\");\n }\n });\n }\n\n return formatter.unwrap(\n populatePlaceholders(\n metadata,\n replacements\n ? Object.assign(replacements, defaultReplacements)\n : defaultReplacements,\n ),\n );\n };\n };\n}\n\nfunction buildLiteralData<T>(\n formatter: Formatter<T>,\n tpl: string[],\n opts: TemplateOpts,\n) {\n let prefix = \"BABEL_TPL$\";\n\n const raw = tpl.join(\"\");\n\n do {\n // If there are cases where the template already contains $$BABEL_TPL$0 or any other\n // matching pattern, we keep adding \"$$\" characters until a unique prefix\n // is found.\n prefix = \"$$\" + prefix;\n } while (raw.includes(prefix));\n\n const { names, code } = buildTemplateCode(tpl, prefix);\n\n const metadata = parseAndBuildMetadata(formatter, formatter.code(code), {\n parser: opts.parser,\n\n // Explicitly include our generated names in the whitelist so users never\n // have to think about whether their placeholder pattern will match.\n placeholderWhitelist: new Set(\n names.concat(\n opts.placeholderWhitelist ? Array.from(opts.placeholderWhitelist) : [],\n ),\n ),\n placeholderPattern: opts.placeholderPattern,\n preserveComments: opts.preserveComments,\n syntacticPlaceholders: opts.syntacticPlaceholders,\n });\n\n return { metadata, names };\n}\n\nfunction buildTemplateCode(\n tpl: string[],\n prefix: string,\n): { names: string[]; code: string } {\n const names = [];\n\n let code = tpl[0];\n\n for (let i = 1; i < tpl.length; i++) {\n const value = `${prefix}${i - 1}`;\n names.push(value);\n\n code += value + tpl[i];\n }\n\n return { names, code };\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/node_modules/@babel/template/lib/options.js b/node_modules/@babel/template/lib/options.js
new file mode 100644
index 0000000..f92cfe2
--- /dev/null
+++ b/node_modules/@babel/template/lib/options.js
@@ -0,0 +1,73 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.merge = merge;
+exports.normalizeReplacements = normalizeReplacements;
+exports.validate = validate;
+const _excluded = ["placeholderWhitelist", "placeholderPattern", "preserveComments", "syntacticPlaceholders"];
+function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
+function merge(a, b) {
+ const {
+ placeholderWhitelist = a.placeholderWhitelist,
+ placeholderPattern = a.placeholderPattern,
+ preserveComments = a.preserveComments,
+ syntacticPlaceholders = a.syntacticPlaceholders
+ } = b;
+ return {
+ parser: Object.assign({}, a.parser, b.parser),
+ placeholderWhitelist,
+ placeholderPattern,
+ preserveComments,
+ syntacticPlaceholders
+ };
+}
+function validate(opts) {
+ if (opts != null && typeof opts !== "object") {
+ throw new Error("Unknown template options.");
+ }
+ const _ref = opts || {},
+ {
+ placeholderWhitelist,
+ placeholderPattern,
+ preserveComments,
+ syntacticPlaceholders
+ } = _ref,
+ parser = _objectWithoutPropertiesLoose(_ref, _excluded);
+ if (placeholderWhitelist != null && !(placeholderWhitelist instanceof Set)) {
+ throw new Error("'.placeholderWhitelist' must be a Set, null, or undefined");
+ }
+ if (placeholderPattern != null && !(placeholderPattern instanceof RegExp) && placeholderPattern !== false) {
+ throw new Error("'.placeholderPattern' must be a RegExp, false, null, or undefined");
+ }
+ if (preserveComments != null && typeof preserveComments !== "boolean") {
+ throw new Error("'.preserveComments' must be a boolean, null, or undefined");
+ }
+ if (syntacticPlaceholders != null && typeof syntacticPlaceholders !== "boolean") {
+ throw new Error("'.syntacticPlaceholders' must be a boolean, null, or undefined");
+ }
+ if (syntacticPlaceholders === true && (placeholderWhitelist != null || placeholderPattern != null)) {
+ throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'");
+ }
+ return {
+ parser,
+ placeholderWhitelist: placeholderWhitelist || undefined,
+ placeholderPattern: placeholderPattern == null ? undefined : placeholderPattern,
+ preserveComments: preserveComments == null ? undefined : preserveComments,
+ syntacticPlaceholders: syntacticPlaceholders == null ? undefined : syntacticPlaceholders
+ };
+}
+function normalizeReplacements(replacements) {
+ if (Array.isArray(replacements)) {
+ return replacements.reduce((acc, replacement, i) => {
+ acc["$" + i] = replacement;
+ return acc;
+ }, {});
+ } else if (typeof replacements === "object" || replacements == null) {
+ return replacements || undefined;
+ }
+ throw new Error("Template replacements must be an array, object, null, or undefined");
+}
+
+//# sourceMappingURL=options.js.map
diff --git a/node_modules/@babel/template/lib/options.js.map b/node_modules/@babel/template/lib/options.js.map
new file mode 100644
index 0000000..8a219bd
--- /dev/null
+++ b/node_modules/@babel/template/lib/options.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["merge","a","b","placeholderWhitelist","placeholderPattern","preserveComments","syntacticPlaceholders","parser","Object","assign","validate","opts","Error","_ref","_objectWithoutPropertiesLoose","_excluded","Set","RegExp","undefined","normalizeReplacements","replacements","Array","isArray","reduce","acc","replacement","i"],"sources":["../src/options.ts"],"sourcesContent":["import type { ParserOptions as ParserOpts } from \"@babel/parser\";\n\nexport type { ParserOpts };\n\n/**\n * These are the options that 'babel-template' actually accepts and typechecks\n * when called. All other options are passed through to the parser.\n */\nexport type PublicOpts = {\n /**\n * A set of placeholder names to automatically accept, ignoring the given\n * pattern entirely.\n *\n * This option can be used when using %%foo%% style placeholders.\n */\n placeholderWhitelist?: Set<string>;\n /**\n * A pattern to search for when looking for Identifier and StringLiteral\n * nodes that can be replaced.\n *\n * 'false' will disable placeholder searching entirely, leaving only the\n * 'placeholderWhitelist' value to find replacements.\n *\n * Defaults to /^[_$A-Z0-9]+$/.\n *\n * This option can be used when using %%foo%% style placeholders.\n */\n placeholderPattern?: RegExp | false;\n /**\n * 'true' to pass through comments from the template into the resulting AST,\n * or 'false' to automatically discard comments. Defaults to 'false'.\n */\n preserveComments?: boolean;\n /**\n * 'true' to use %%foo%% style placeholders, 'false' to use legacy placeholders\n * described by placeholderPattern or placeholderWhitelist.\n * When it is not set, it behaves as 'true' if there are syntactic placeholders,\n * otherwise as 'false'.\n */\n syntacticPlaceholders?: boolean | null;\n} & ParserOpts;\n\nexport type TemplateOpts = {\n parser: ParserOpts;\n placeholderWhitelist?: Set<string>;\n placeholderPattern?: RegExp | false;\n preserveComments?: boolean;\n syntacticPlaceholders?: boolean;\n};\n\nexport function merge(a: TemplateOpts, b: TemplateOpts): TemplateOpts {\n const {\n placeholderWhitelist = a.placeholderWhitelist,\n placeholderPattern = a.placeholderPattern,\n preserveComments = a.preserveComments,\n syntacticPlaceholders = a.syntacticPlaceholders,\n } = b;\n\n return {\n parser: {\n ...a.parser,\n ...b.parser,\n },\n placeholderWhitelist,\n placeholderPattern,\n preserveComments,\n syntacticPlaceholders,\n };\n}\n\nexport function validate(opts: unknown): TemplateOpts {\n if (opts != null && typeof opts !== \"object\") {\n throw new Error(\"Unknown template options.\");\n }\n\n const {\n placeholderWhitelist,\n placeholderPattern,\n preserveComments,\n syntacticPlaceholders,\n ...parser\n } = opts || ({} as any);\n\n if (placeholderWhitelist != null && !(placeholderWhitelist instanceof Set)) {\n throw new Error(\n \"'.placeholderWhitelist' must be a Set, null, or undefined\",\n );\n }\n\n if (\n placeholderPattern != null &&\n !(placeholderPattern instanceof RegExp) &&\n placeholderPattern !== false\n ) {\n throw new Error(\n \"'.placeholderPattern' must be a RegExp, false, null, or undefined\",\n );\n }\n\n if (preserveComments != null && typeof preserveComments !== \"boolean\") {\n throw new Error(\n \"'.preserveComments' must be a boolean, null, or undefined\",\n );\n }\n\n if (\n syntacticPlaceholders != null &&\n typeof syntacticPlaceholders !== \"boolean\"\n ) {\n throw new Error(\n \"'.syntacticPlaceholders' must be a boolean, null, or undefined\",\n );\n }\n if (\n syntacticPlaceholders === true &&\n (placeholderWhitelist != null || placeholderPattern != null)\n ) {\n throw new Error(\n \"'.placeholderWhitelist' and '.placeholderPattern' aren't compatible\" +\n \" with '.syntacticPlaceholders: true'\",\n );\n }\n\n return {\n parser,\n placeholderWhitelist: placeholderWhitelist || undefined,\n placeholderPattern:\n placeholderPattern == null ? undefined : placeholderPattern,\n preserveComments: preserveComments == null ? undefined : preserveComments,\n syntacticPlaceholders:\n syntacticPlaceholders == null ? undefined : syntacticPlaceholders,\n };\n}\n\nexport type PublicReplacements = Record<string, unknown> | unknown[];\nexport type TemplateReplacements = Record<string, unknown> | void;\n\nexport function normalizeReplacements(\n replacements: unknown,\n): TemplateReplacements {\n if (Array.isArray(replacements)) {\n return replacements.reduce((acc, replacement, i) => {\n acc[\"$\" + i] = replacement;\n return acc;\n }, {});\n } else if (typeof replacements === \"object\" || replacements == null) {\n return (replacements as any) || undefined;\n }\n\n throw new Error(\n \"Template replacements must be an array, object, null, or undefined\",\n );\n}\n"],"mappings":";;;;;;;;;;AAkDO,SAASA,KAAKA,CAACC,CAAe,EAAEC,CAAe,EAAgB;EACpE,MAAM;IACJC,oBAAoB,GAAGF,CAAC,CAACE,oBAAoB;IAC7CC,kBAAkB,GAAGH,CAAC,CAACG,kBAAkB;IACzCC,gBAAgB,GAAGJ,CAAC,CAACI,gBAAgB;IACrCC,qBAAqB,GAAGL,CAAC,CAACK;EAC5B,CAAC,GAAGJ,CAAC;EAEL,OAAO;IACLK,MAAM,EAAAC,MAAA,CAAAC,MAAA,KACDR,CAAC,CAACM,MAAM,EACRL,CAAC,CAACK,MAAM,CACZ;IACDJ,oBAAoB;IACpBC,kBAAkB;IAClBC,gBAAgB;IAChBC;EACF,CAAC;AACH;AAEO,SAASI,QAAQA,CAACC,IAAa,EAAgB;EACpD,IAAIA,IAAI,IAAI,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAC5C,MAAM,IAAIC,KAAK,CAAC,2BAA2B,CAAC;EAC9C;EAEA,MAAAC,IAAA,GAMIF,IAAI,IAAK,CAAC,CAAS;IANjB;MACJR,oBAAoB;MACpBC,kBAAkB;MAClBC,gBAAgB;MAChBC;IAEF,CAAC,GAAAO,IAAA;IADIN,MAAM,GAAAO,6BAAA,CAAAD,IAAA,EAAAE,SAAA;EAGX,IAAIZ,oBAAoB,IAAI,IAAI,IAAI,EAAEA,oBAAoB,YAAYa,GAAG,CAAC,EAAE;IAC1E,MAAM,IAAIJ,KAAK,CACb,2DACF,CAAC;EACH;EAEA,IACER,kBAAkB,IAAI,IAAI,IAC1B,EAAEA,kBAAkB,YAAYa,MAAM,CAAC,IACvCb,kBAAkB,KAAK,KAAK,EAC5B;IACA,MAAM,IAAIQ,KAAK,CACb,mEACF,CAAC;EACH;EAEA,IAAIP,gBAAgB,IAAI,IAAI,IAAI,OAAOA,gBAAgB,KAAK,SAAS,EAAE;IACrE,MAAM,IAAIO,KAAK,CACb,2DACF,CAAC;EACH;EAEA,IACEN,qBAAqB,IAAI,IAAI,IAC7B,OAAOA,qBAAqB,KAAK,SAAS,EAC1C;IACA,MAAM,IAAIM,KAAK,CACb,gEACF,CAAC;EACH;EACA,IACEN,qBAAqB,KAAK,IAAI,KAC7BH,oBAAoB,IAAI,IAAI,IAAIC,kBAAkB,IAAI,IAAI,CAAC,EAC5D;IACA,MAAM,IAAIQ,KAAK,CACb,qEAAqE,GACnE,sCACJ,CAAC;EACH;EAEA,OAAO;IACLL,MAAM;IACNJ,oBAAoB,EAAEA,oBAAoB,IAAIe,SAAS;IACvDd,kBAAkB,EAChBA,kBAAkB,IAAI,IAAI,GAAGc,SAAS,GAAGd,kBAAkB;IAC7DC,gBAAgB,EAAEA,gBAAgB,IAAI,IAAI,GAAGa,SAAS,GAAGb,gBAAgB;IACzEC,qBAAqB,EACnBA,qBAAqB,IAAI,IAAI,GAAGY,SAAS,GAAGZ;EAChD,CAAC;AACH;AAKO,SAASa,qBAAqBA,CACnCC,YAAqB,EACC;EACtB,IAAIC,KAAK,CAACC,OAAO,CAACF,YAAY,CAAC,EAAE;IAC/B,OAAOA,YAAY,CAACG,MAAM,CAAC,CAACC,GAAG,EAAEC,WAAW,EAAEC,CAAC,KAAK;MAClDF,GAAG,CAAC,GAAG,GAAGE,CAAC,CAAC,GAAGD,WAAW;MAC1B,OAAOD,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EACR,CAAC,MAAM,IAAI,OAAOJ,YAAY,KAAK,QAAQ,IAAIA,YAAY,IAAI,IAAI,EAAE;IACnE,OAAQA,YAAY,IAAYF,SAAS;EAC3C;EAEA,MAAM,IAAIN,KAAK,CACb,oEACF,CAAC;AACH","ignoreList":[]} \ No newline at end of file
diff --git a/node_modules/@babel/template/lib/parse.js b/node_modules/@babel/template/lib/parse.js
new file mode 100644
index 0000000..3213d1a
--- /dev/null
+++ b/node_modules/@babel/template/lib/parse.js
@@ -0,0 +1,163 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = parseAndBuildMetadata;
+var _t = require("@babel/types");
+var _parser = require("@babel/parser");
+var _codeFrame = require("@babel/code-frame");
+const {
+ isCallExpression,
+ isExpressionStatement,
+ isFunction,
+ isIdentifier,
+ isJSXIdentifier,
+ isNewExpression,
+ isPlaceholder,
+ isStatement,
+ isStringLiteral,
+ removePropertiesDeep,
+ traverse
+} = _t;
+const PATTERN = /^[_$A-Z0-9]+$/;
+function parseAndBuildMetadata(formatter, code, opts) {
+ const {
+ placeholderWhitelist,
+ placeholderPattern,
+ preserveComments,
+ syntacticPlaceholders
+ } = opts;
+ const ast = parseWithCodeFrame(code, opts.parser, syntacticPlaceholders);
+ removePropertiesDeep(ast, {
+ preserveComments
+ });
+ formatter.validate(ast);
+ const state = {
+ syntactic: {
+ placeholders: [],
+ placeholderNames: new Set()
+ },
+ legacy: {
+ placeholders: [],
+ placeholderNames: new Set()
+ },
+ placeholderWhitelist,
+ placeholderPattern,
+ syntacticPlaceholders
+ };
+ traverse(ast, placeholderVisitorHandler, state);
+ return Object.assign({
+ ast
+ }, state.syntactic.placeholders.length ? state.syntactic : state.legacy);
+}
+function placeholderVisitorHandler(node, ancestors, state) {
+ var _state$placeholderWhi;
+ let name;
+ let hasSyntacticPlaceholders = state.syntactic.placeholders.length > 0;
+ if (isPlaceholder(node)) {
+ if (state.syntacticPlaceholders === false) {
+ throw new Error("%%foo%%-style placeholders can't be used when " + "'.syntacticPlaceholders' is false.");
+ }
+ name = node.name.name;
+ hasSyntacticPlaceholders = true;
+ } else if (hasSyntacticPlaceholders || state.syntacticPlaceholders) {
+ return;
+ } else if (isIdentifier(node) || isJSXIdentifier(node)) {
+ name = node.name;
+ } else if (isStringLiteral(node)) {
+ name = node.value;
+ } else {
+ return;
+ }
+ if (hasSyntacticPlaceholders && (state.placeholderPattern != null || state.placeholderWhitelist != null)) {
+ throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'");
+ }
+ if (!hasSyntacticPlaceholders && (state.placeholderPattern === false || !(state.placeholderPattern || PATTERN).test(name)) && !((_state$placeholderWhi = state.placeholderWhitelist) != null && _state$placeholderWhi.has(name))) {
+ return;
+ }
+ ancestors = ancestors.slice();
+ const {
+ node: parent,
+ key
+ } = ancestors[ancestors.length - 1];
+ let type;
+ if (isStringLiteral(node) || isPlaceholder(node, {
+ expectedNode: "StringLiteral"
+ })) {
+ type = "string";
+ } else if (isNewExpression(parent) && key === "arguments" || isCallExpression(parent) && key === "arguments" || isFunction(parent) && key === "params") {
+ type = "param";
+ } else if (isExpressionStatement(parent) && !isPlaceholder(node)) {
+ type = "statement";
+ ancestors = ancestors.slice(0, -1);
+ } else if (isStatement(node) && isPlaceholder(node)) {
+ type = "statement";
+ } else {
+ type = "other";
+ }
+ const {
+ placeholders,
+ placeholderNames
+ } = !hasSyntacticPlaceholders ? state.legacy : state.syntactic;
+ placeholders.push({
+ name,
+ type,
+ resolve: ast => resolveAncestors(ast, ancestors),
+ isDuplicate: placeholderNames.has(name)
+ });
+ placeholderNames.add(name);
+}
+function resolveAncestors(ast, ancestors) {
+ let parent = ast;
+ for (let i = 0; i < ancestors.length - 1; i++) {
+ const {
+ key,
+ index
+ } = ancestors[i];
+ if (index === undefined) {
+ parent = parent[key];
+ } else {
+ parent = parent[key][index];
+ }
+ }
+ const {
+ key,
+ index
+ } = ancestors[ancestors.length - 1];
+ return {
+ parent,
+ key,
+ index
+ };
+}
+function parseWithCodeFrame(code, parserOpts, syntacticPlaceholders) {
+ const plugins = (parserOpts.plugins || []).slice();
+ if (syntacticPlaceholders !== false) {
+ plugins.push("placeholders");
+ }
+ parserOpts = Object.assign({
+ allowAwaitOutsideFunction: true,
+ allowReturnOutsideFunction: true,
+ allowNewTargetOutsideFunction: true,
+ allowSuperOutsideMethod: true,
+ allowYieldOutsideFunction: true,
+ sourceType: "module"
+ }, parserOpts, {
+ plugins
+ });
+ try {
+ return (0, _parser.parse)(code, parserOpts);
+ } catch (err) {
+ const loc = err.loc;
+ if (loc) {
+ err.message += "\n" + (0, _codeFrame.codeFrameColumns)(code, {
+ start: loc
+ });
+ err.code = "BABEL_TEMPLATE_PARSE_ERROR";
+ }
+ throw err;
+ }
+}
+
+//# sourceMappingURL=parse.js.map
diff --git a/node_modules/@babel/template/lib/parse.js.map b/node_modules/@babel/template/lib/parse.js.map
new file mode 100644
index 0000000..a25414a
--- /dev/null
+++ b/node_modules/@babel/template/lib/parse.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_t","require","_parser","_codeFrame","isCallExpression","isExpressionStatement","isFunction","isIdentifier","isJSXIdentifier","isNewExpression","isPlaceholder","isStatement","isStringLiteral","removePropertiesDeep","traverse","PATTERN","parseAndBuildMetadata","formatter","code","opts","placeholderWhitelist","placeholderPattern","preserveComments","syntacticPlaceholders","ast","parseWithCodeFrame","parser","validate","state","syntactic","placeholders","placeholderNames","Set","legacy","placeholderVisitorHandler","Object","assign","length","node","ancestors","_state$placeholderWhi","name","hasSyntacticPlaceholders","Error","value","test","has","slice","parent","key","type","expectedNode","push","resolve","resolveAncestors","isDuplicate","add","i","index","undefined","parserOpts","plugins","allowAwaitOutsideFunction","allowReturnOutsideFunction","allowNewTargetOutsideFunction","allowSuperOutsideMethod","allowYieldOutsideFunction","sourceType","parse","err","loc","message","codeFrameColumns","start"],"sources":["../src/parse.ts"],"sourcesContent":["import {\n isCallExpression,\n isExpressionStatement,\n isFunction,\n isIdentifier,\n isJSXIdentifier,\n isNewExpression,\n isPlaceholder,\n isStatement,\n isStringLiteral,\n removePropertiesDeep,\n traverse,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type { TraversalAncestors } from \"@babel/types\";\nimport { parse } from \"@babel/parser\";\nimport { codeFrameColumns } from \"@babel/code-frame\";\nimport type { TemplateOpts, ParserOpts } from \"./options.ts\";\nimport type { Formatter } from \"./formatters.ts\";\n\nexport type Metadata = {\n ast: t.File;\n placeholders: Placeholder[];\n placeholderNames: Set<string>;\n};\n\ntype PlaceholderType = \"string\" | \"param\" | \"statement\" | \"other\";\nexport type Placeholder = {\n name: string;\n resolve: (a: t.File) => { parent: t.Node; key: string; index?: number };\n type: PlaceholderType;\n isDuplicate: boolean;\n};\n\nconst PATTERN = /^[_$A-Z0-9]+$/;\n\nexport default function parseAndBuildMetadata<T>(\n formatter: Formatter<T>,\n code: string,\n opts: TemplateOpts,\n): Metadata {\n const {\n placeholderWhitelist,\n placeholderPattern,\n preserveComments,\n syntacticPlaceholders,\n } = opts;\n\n const ast = parseWithCodeFrame(code, opts.parser, syntacticPlaceholders);\n\n removePropertiesDeep(ast, {\n preserveComments,\n });\n\n formatter.validate(ast);\n\n const state: MetadataState = {\n syntactic: { placeholders: [], placeholderNames: new Set() },\n legacy: { placeholders: [], placeholderNames: new Set() },\n placeholderWhitelist,\n placeholderPattern,\n syntacticPlaceholders,\n };\n\n traverse(ast, placeholderVisitorHandler, state);\n\n return {\n ast,\n ...(state.syntactic.placeholders.length ? state.syntactic : state.legacy),\n };\n}\n\nfunction placeholderVisitorHandler(\n node: t.Node,\n ancestors: TraversalAncestors,\n state: MetadataState,\n) {\n let name: string;\n\n let hasSyntacticPlaceholders = state.syntactic.placeholders.length > 0;\n\n if (isPlaceholder(node)) {\n if (state.syntacticPlaceholders === false) {\n throw new Error(\n \"%%foo%%-style placeholders can't be used when \" +\n \"'.syntacticPlaceholders' is false.\",\n );\n }\n name = node.name.name;\n hasSyntacticPlaceholders = true;\n } else if (hasSyntacticPlaceholders || state.syntacticPlaceholders) {\n return;\n } else if (isIdentifier(node) || isJSXIdentifier(node)) {\n name = node.name;\n } else if (isStringLiteral(node)) {\n name = node.value;\n } else {\n return;\n }\n\n if (\n hasSyntacticPlaceholders &&\n (state.placeholderPattern != null || state.placeholderWhitelist != null)\n ) {\n // This check is also in options.js. We need it there to handle the default\n // .syntacticPlaceholders behavior.\n throw new Error(\n \"'.placeholderWhitelist' and '.placeholderPattern' aren't compatible\" +\n \" with '.syntacticPlaceholders: true'\",\n );\n }\n\n if (\n !hasSyntacticPlaceholders &&\n (state.placeholderPattern === false ||\n !(state.placeholderPattern || PATTERN).test(name)) &&\n !state.placeholderWhitelist?.has(name)\n ) {\n return;\n }\n\n // Keep our own copy of the ancestors so we can use it in .resolve().\n ancestors = ancestors.slice();\n\n const { node: parent, key } = ancestors[ancestors.length - 1];\n\n let type: PlaceholderType;\n if (\n isStringLiteral(node) ||\n isPlaceholder(node, { expectedNode: \"StringLiteral\" })\n ) {\n type = \"string\";\n } else if (\n (isNewExpression(parent) && key === \"arguments\") ||\n (isCallExpression(parent) && key === \"arguments\") ||\n (isFunction(parent) && key === \"params\")\n ) {\n type = \"param\";\n } else if (isExpressionStatement(parent) && !isPlaceholder(node)) {\n type = \"statement\";\n ancestors = ancestors.slice(0, -1);\n } else if (isStatement(node) && isPlaceholder(node)) {\n type = \"statement\";\n } else {\n type = \"other\";\n }\n\n const { placeholders, placeholderNames } = !hasSyntacticPlaceholders\n ? state.legacy\n : state.syntactic;\n\n placeholders.push({\n name,\n type,\n resolve: ast => resolveAncestors(ast, ancestors),\n isDuplicate: placeholderNames.has(name),\n });\n placeholderNames.add(name);\n}\n\nfunction resolveAncestors(ast: t.File, ancestors: TraversalAncestors) {\n let parent: t.Node = ast;\n for (let i = 0; i < ancestors.length - 1; i++) {\n const { key, index } = ancestors[i];\n\n if (index === undefined) {\n parent = (parent as any)[key];\n } else {\n parent = (parent as any)[key][index];\n }\n }\n\n const { key, index } = ancestors[ancestors.length - 1];\n\n return { parent, key, index };\n}\n\ntype MetadataState = {\n syntactic: {\n placeholders: Placeholder[];\n placeholderNames: Set<string>;\n };\n legacy: {\n placeholders: Placeholder[];\n placeholderNames: Set<string>;\n };\n placeholderWhitelist?: Set<string>;\n placeholderPattern?: RegExp | false;\n syntacticPlaceholders?: boolean;\n};\n\nfunction parseWithCodeFrame(\n code: string,\n parserOpts: ParserOpts,\n syntacticPlaceholders?: boolean,\n): t.File {\n const plugins = (parserOpts.plugins || []).slice();\n if (syntacticPlaceholders !== false) {\n plugins.push(\"placeholders\");\n }\n\n parserOpts = {\n allowAwaitOutsideFunction: true,\n allowReturnOutsideFunction: true,\n allowNewTargetOutsideFunction: true,\n allowSuperOutsideMethod: true,\n allowYieldOutsideFunction: true,\n sourceType: \"module\",\n ...parserOpts,\n plugins,\n };\n\n try {\n return parse(code, parserOpts);\n } catch (err) {\n const loc = err.loc;\n if (loc) {\n err.message += \"\\n\" + codeFrameColumns(code, { start: loc });\n err.code = \"BABEL_TEMPLATE_PARSE_ERROR\";\n }\n throw err;\n }\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/node_modules/@babel/template/lib/populate.js b/node_modules/@babel/template/lib/populate.js
new file mode 100644
index 0000000..0ca08f9
--- /dev/null
+++ b/node_modules/@babel/template/lib/populate.js
@@ -0,0 +1,138 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = populatePlaceholders;
+var _t = require("@babel/types");
+const {
+ blockStatement,
+ cloneNode,
+ emptyStatement,
+ expressionStatement,
+ identifier,
+ isStatement,
+ isStringLiteral,
+ stringLiteral,
+ validate
+} = _t;
+function populatePlaceholders(metadata, replacements) {
+ const ast = cloneNode(metadata.ast);
+ if (replacements) {
+ metadata.placeholders.forEach(placeholder => {
+ if (!hasOwnProperty.call(replacements, placeholder.name)) {
+ const placeholderName = placeholder.name;
+ throw new Error(`Error: No substitution given for "${placeholderName}". If this is not meant to be a
+ placeholder you may want to consider passing one of the following options to @babel/template:
+ - { placeholderPattern: false, placeholderWhitelist: new Set(['${placeholderName}'])}
+ - { placeholderPattern: /^${placeholderName}$/ }`);
+ }
+ });
+ Object.keys(replacements).forEach(key => {
+ if (!metadata.placeholderNames.has(key)) {
+ throw new Error(`Unknown substitution "${key}" given`);
+ }
+ });
+ }
+ metadata.placeholders.slice().reverse().forEach(placeholder => {
+ try {
+ var _ref;
+ applyReplacement(placeholder, ast, (_ref = replacements && replacements[placeholder.name]) != null ? _ref : null);
+ } catch (e) {
+ e.message = `@babel/template placeholder "${placeholder.name}": ${e.message}`;
+ throw e;
+ }
+ });
+ return ast;
+}
+function applyReplacement(placeholder, ast, replacement) {
+ if (placeholder.isDuplicate) {
+ if (Array.isArray(replacement)) {
+ replacement = replacement.map(node => cloneNode(node));
+ } else if (typeof replacement === "object") {
+ replacement = cloneNode(replacement);
+ }
+ }
+ const {
+ parent,
+ key,
+ index
+ } = placeholder.resolve(ast);
+ if (placeholder.type === "string") {
+ if (typeof replacement === "string") {
+ replacement = stringLiteral(replacement);
+ }
+ if (!replacement || !isStringLiteral(replacement)) {
+ throw new Error("Expected string substitution");
+ }
+ } else if (placeholder.type === "statement") {
+ if (index === undefined) {
+ if (!replacement) {
+ replacement = emptyStatement();
+ } else if (Array.isArray(replacement)) {
+ replacement = blockStatement(replacement);
+ } else if (typeof replacement === "string") {
+ replacement = expressionStatement(identifier(replacement));
+ } else if (!isStatement(replacement)) {
+ replacement = expressionStatement(replacement);
+ }
+ } else {
+ if (replacement && !Array.isArray(replacement)) {
+ if (typeof replacement === "string") {
+ replacement = identifier(replacement);
+ }
+ if (!isStatement(replacement)) {
+ replacement = expressionStatement(replacement);
+ }
+ }
+ }
+ } else if (placeholder.type === "param") {
+ if (typeof replacement === "string") {
+ replacement = identifier(replacement);
+ }
+ if (index === undefined) throw new Error("Assertion failure.");
+ } else {
+ if (typeof replacement === "string") {
+ replacement = identifier(replacement);
+ }
+ if (Array.isArray(replacement)) {
+ throw new Error("Cannot replace single expression with an array.");
+ }
+ }
+ function set(parent, key, value) {
+ const node = parent[key];
+ parent[key] = value;
+ if (node.type === "Identifier" || node.type === "Placeholder") {
+ if (node.typeAnnotation) {
+ value.typeAnnotation = node.typeAnnotation;
+ }
+ if (node.optional) {
+ value.optional = node.optional;
+ }
+ if (node.decorators) {
+ value.decorators = node.decorators;
+ }
+ }
+ }
+ if (index === undefined) {
+ validate(parent, key, replacement);
+ set(parent, key, replacement);
+ } else {
+ const items = parent[key].slice();
+ if (placeholder.type === "statement" || placeholder.type === "param") {
+ if (replacement == null) {
+ items.splice(index, 1);
+ } else if (Array.isArray(replacement)) {
+ items.splice(index, 1, ...replacement);
+ } else {
+ set(items, index, replacement);
+ }
+ } else {
+ set(items, index, replacement);
+ }
+ validate(parent, key, items);
+ parent[key] = items;
+ }
+}
+
+//# sourceMappingURL=populate.js.map
diff --git a/node_modules/@babel/template/lib/populate.js.map b/node_modules/@babel/template/lib/populate.js.map
new file mode 100644
index 0000000..170af29
--- /dev/null
+++ b/node_modules/@babel/template/lib/populate.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_t","require","blockStatement","cloneNode","emptyStatement","expressionStatement","identifier","isStatement","isStringLiteral","stringLiteral","validate","populatePlaceholders","metadata","replacements","ast","placeholders","forEach","placeholder","hasOwnProperty","call","name","placeholderName","Error","Object","keys","key","placeholderNames","has","slice","reverse","_ref","applyReplacement","e","message","replacement","isDuplicate","Array","isArray","map","node","parent","index","resolve","type","undefined","set","value","typeAnnotation","optional","decorators","items","splice"],"sources":["../src/populate.ts"],"sourcesContent":["import {\n blockStatement,\n cloneNode,\n emptyStatement,\n expressionStatement,\n identifier,\n isStatement,\n isStringLiteral,\n stringLiteral,\n validate,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nimport type { TemplateReplacements } from \"./options.ts\";\nimport type { Metadata, Placeholder } from \"./parse.ts\";\n\nexport default function populatePlaceholders(\n metadata: Metadata,\n replacements: TemplateReplacements,\n): t.File {\n const ast = cloneNode(metadata.ast);\n\n if (replacements) {\n metadata.placeholders.forEach(placeholder => {\n if (!Object.hasOwn(replacements, placeholder.name)) {\n const placeholderName = placeholder.name;\n\n throw new Error(\n `Error: No substitution given for \"${placeholderName}\". If this is not meant to be a\n placeholder you may want to consider passing one of the following options to @babel/template:\n - { placeholderPattern: false, placeholderWhitelist: new Set(['${placeholderName}'])}\n - { placeholderPattern: /^${placeholderName}$/ }`,\n );\n }\n });\n Object.keys(replacements).forEach(key => {\n if (!metadata.placeholderNames.has(key)) {\n throw new Error(`Unknown substitution \"${key}\" given`);\n }\n });\n }\n\n // Process in reverse order so AST mutation doesn't change indices that\n // will be needed for later calls to `placeholder.resolve()`.\n metadata.placeholders\n .slice()\n .reverse()\n .forEach(placeholder => {\n try {\n applyReplacement(\n placeholder,\n ast,\n (replacements && replacements[placeholder.name]) ?? null,\n );\n } catch (e) {\n e.message = `@babel/template placeholder \"${placeholder.name}\": ${e.message}`;\n throw e;\n }\n });\n\n return ast;\n}\n\nfunction applyReplacement(\n placeholder: Placeholder,\n ast: t.File,\n replacement: any,\n) {\n // Track inserted nodes and clone them if they are inserted more than\n // once to avoid injecting the same node multiple times.\n if (placeholder.isDuplicate) {\n if (Array.isArray(replacement)) {\n replacement = replacement.map(node => cloneNode(node));\n } else if (typeof replacement === \"object\") {\n replacement = cloneNode(replacement);\n }\n }\n\n const { parent, key, index } = placeholder.resolve(ast);\n\n if (placeholder.type === \"string\") {\n if (typeof replacement === \"string\") {\n replacement = stringLiteral(replacement);\n }\n if (!replacement || !isStringLiteral(replacement)) {\n throw new Error(\"Expected string substitution\");\n }\n } else if (placeholder.type === \"statement\") {\n if (index === undefined) {\n if (!replacement) {\n replacement = emptyStatement();\n } else if (Array.isArray(replacement)) {\n replacement = blockStatement(replacement);\n } else if (typeof replacement === \"string\") {\n replacement = expressionStatement(identifier(replacement));\n } else if (!isStatement(replacement)) {\n replacement = expressionStatement(replacement);\n }\n } else {\n if (replacement && !Array.isArray(replacement)) {\n if (typeof replacement === \"string\") {\n replacement = identifier(replacement);\n }\n if (!isStatement(replacement)) {\n replacement = expressionStatement(replacement);\n }\n }\n }\n } else if (placeholder.type === \"param\") {\n if (typeof replacement === \"string\") {\n replacement = identifier(replacement);\n }\n\n if (index === undefined) throw new Error(\"Assertion failure.\");\n } else {\n if (typeof replacement === \"string\") {\n replacement = identifier(replacement);\n }\n if (Array.isArray(replacement)) {\n throw new Error(\"Cannot replace single expression with an array.\");\n }\n }\n\n function set(parent: any, key: any, value: any) {\n const node = parent[key] as t.Node;\n parent[key] = value;\n if (node.type === \"Identifier\" || node.type === \"Placeholder\") {\n if (node.typeAnnotation) {\n value.typeAnnotation = node.typeAnnotation;\n }\n if (node.optional) {\n value.optional = node.optional;\n }\n if (node.decorators) {\n value.decorators = node.decorators;\n }\n }\n }\n\n if (index === undefined) {\n validate(parent, key, replacement);\n\n set(parent, key, replacement);\n } else {\n const items: t.Node[] = (parent as any)[key].slice();\n\n if (placeholder.type === \"statement\" || placeholder.type === \"param\") {\n if (replacement == null) {\n items.splice(index, 1);\n } else if (Array.isArray(replacement)) {\n items.splice(index, 1, ...replacement);\n } else {\n set(items, index, replacement);\n }\n } else {\n set(items, index, replacement);\n }\n\n validate(parent, key, items);\n (parent as any)[key] = items;\n }\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/node_modules/@babel/template/lib/string.js b/node_modules/@babel/template/lib/string.js
new file mode 100644
index 0000000..e29914d
--- /dev/null
+++ b/node_modules/@babel/template/lib/string.js
@@ -0,0 +1,20 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = stringTemplate;
+var _options = require("./options.js");
+var _parse = require("./parse.js");
+var _populate = require("./populate.js");
+function stringTemplate(formatter, code, opts) {
+ code = formatter.code(code);
+ let metadata;
+ return arg => {
+ const replacements = (0, _options.normalizeReplacements)(arg);
+ if (!metadata) metadata = (0, _parse.default)(formatter, code, opts);
+ return formatter.unwrap((0, _populate.default)(metadata, replacements));
+ };
+}
+
+//# sourceMappingURL=string.js.map
diff --git a/node_modules/@babel/template/lib/string.js.map b/node_modules/@babel/template/lib/string.js.map
new file mode 100644
index 0000000..de58956
--- /dev/null
+++ b/node_modules/@babel/template/lib/string.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_options","require","_parse","_populate","stringTemplate","formatter","code","opts","metadata","arg","replacements","normalizeReplacements","parseAndBuildMetadata","unwrap","populatePlaceholders"],"sources":["../src/string.ts"],"sourcesContent":["import type { Formatter } from \"./formatters.ts\";\nimport type { TemplateOpts } from \"./options.ts\";\nimport type { Metadata } from \"./parse.ts\";\nimport { normalizeReplacements } from \"./options.ts\";\nimport parseAndBuildMetadata from \"./parse.ts\";\nimport populatePlaceholders from \"./populate.ts\";\n\nexport default function stringTemplate<T>(\n formatter: Formatter<T>,\n code: string,\n opts: TemplateOpts,\n): (arg?: unknown) => T {\n code = formatter.code(code);\n\n let metadata: Metadata;\n\n return (arg?: unknown) => {\n const replacements = normalizeReplacements(arg);\n\n if (!metadata) metadata = parseAndBuildMetadata(formatter, code, opts);\n\n return formatter.unwrap(populatePlaceholders(metadata, replacements));\n };\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEe,SAASG,cAAcA,CACpCC,SAAuB,EACvBC,IAAY,EACZC,IAAkB,EACI;EACtBD,IAAI,GAAGD,SAAS,CAACC,IAAI,CAACA,IAAI,CAAC;EAE3B,IAAIE,QAAkB;EAEtB,OAAQC,GAAa,IAAK;IACxB,MAAMC,YAAY,GAAG,IAAAC,8BAAqB,EAACF,GAAG,CAAC;IAE/C,IAAI,CAACD,QAAQ,EAAEA,QAAQ,GAAG,IAAAI,cAAqB,EAACP,SAAS,EAAEC,IAAI,EAAEC,IAAI,CAAC;IAEtE,OAAOF,SAAS,CAACQ,MAAM,CAAC,IAAAC,iBAAoB,EAACN,QAAQ,EAAEE,YAAY,CAAC,CAAC;EACvE,CAAC;AACH","ignoreList":[]} \ No newline at end of file
diff --git a/node_modules/@babel/template/package.json b/node_modules/@babel/template/package.json
new file mode 100644
index 0000000..c1d6f32
--- /dev/null
+++ b/node_modules/@babel/template/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@babel/template",
+ "version": "7.28.6",
+ "description": "Generate an AST from a string template.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-template",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-template"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/code-frame": "^7.28.6",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "type": "commonjs"
+} \ No newline at end of file