diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:31:11 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:31:11 +0800 |
| commit | aa773172311dcada759dfbaac485f4bc6e00bc21 (patch) | |
| tree | ca6d9a5eff3ab8f689f9acb4f0df791d9486813d /node_modules/@babel/plugin-transform-classes | |
| parent | c5a5384e846f242e901e859fe600d695d8990a9a (diff) | |
added babel
Diffstat (limited to 'node_modules/@babel/plugin-transform-classes')
9 files changed, 736 insertions, 0 deletions
diff --git a/node_modules/@babel/plugin-transform-classes/LICENSE b/node_modules/@babel/plugin-transform-classes/LICENSE new file mode 100644 index 00000000..f31575ec --- /dev/null +++ b/node_modules/@babel/plugin-transform-classes/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/plugin-transform-classes/README.md b/node_modules/@babel/plugin-transform-classes/README.md new file mode 100644 index 00000000..b552b0d7 --- /dev/null +++ b/node_modules/@babel/plugin-transform-classes/README.md @@ -0,0 +1,19 @@ +# @babel/plugin-transform-classes + +> Compile ES2015 classes to ES5 + +See our website [@babel/plugin-transform-classes](https://babeljs.io/docs/babel-plugin-transform-classes) for more information. + +## Install + +Using npm: + +```sh +npm install --save-dev @babel/plugin-transform-classes +``` + +or using yarn: + +```sh +yarn add @babel/plugin-transform-classes --dev +``` diff --git a/node_modules/@babel/plugin-transform-classes/lib/index.js b/node_modules/@babel/plugin-transform-classes/lib/index.js new file mode 100644 index 00000000..01462e1a --- /dev/null +++ b/node_modules/@babel/plugin-transform-classes/lib/index.js @@ -0,0 +1,73 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _helperPluginUtils = require("@babel/helper-plugin-utils"); +var _helperCompilationTargets = require("@babel/helper-compilation-targets"); +var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure"); +var _helperFunctionName = require("@babel/helper-function-name"); +var _helperSplitExportDeclaration = require("@babel/helper-split-export-declaration"); +var _core = require("@babel/core"); +var _globals = require("globals"); +var _transformClass = require("./transformClass.js"); +const getBuiltinClasses = category => Object.keys(_globals[category]).filter(name => /^[A-Z]/.test(name)); +const builtinClasses = new Set([...getBuiltinClasses("builtin"), ...getBuiltinClasses("browser")]); +var _default = (0, _helperPluginUtils.declare)((api, options) => { + var _api$assumption, _api$assumption2, _api$assumption3, _api$assumption4; + api.assertVersion(7); + const { + loose = false + } = options; + const setClassMethods = (_api$assumption = api.assumption("setClassMethods")) != null ? _api$assumption : loose; + const constantSuper = (_api$assumption2 = api.assumption("constantSuper")) != null ? _api$assumption2 : loose; + const superIsCallableConstructor = (_api$assumption3 = api.assumption("superIsCallableConstructor")) != null ? _api$assumption3 : loose; + const noClassCalls = (_api$assumption4 = api.assumption("noClassCalls")) != null ? _api$assumption4 : loose; + const supportUnicodeId = !(0, _helperCompilationTargets.isRequired)("transform-unicode-escapes", api.targets()); + const VISITED = new WeakSet(); + return { + name: "transform-classes", + visitor: { + ExportDefaultDeclaration(path) { + if (!path.get("declaration").isClassDeclaration()) return; + (0, _helperSplitExportDeclaration.default)(path); + }, + ClassDeclaration(path) { + const { + node + } = path; + const ref = node.id || path.scope.generateUidIdentifier("class"); + path.replaceWith(_core.types.variableDeclaration("let", [_core.types.variableDeclarator(ref, _core.types.toExpression(node))])); + }, + ClassExpression(path, state) { + const { + node + } = path; + if (VISITED.has(node)) return; + const inferred = (0, _helperFunctionName.default)(path, undefined, supportUnicodeId); + if (inferred && inferred !== node) { + path.replaceWith(inferred); + return; + } + VISITED.add(node); + const [replacedPath] = path.replaceWith((0, _transformClass.default)(path, state.file, builtinClasses, loose, { + setClassMethods, + constantSuper, + superIsCallableConstructor, + noClassCalls + }, supportUnicodeId)); + if (replacedPath.isCallExpression()) { + (0, _helperAnnotateAsPure.default)(replacedPath); + const callee = replacedPath.get("callee"); + if (callee.isArrowFunctionExpression()) { + callee.arrowFunctionToExpression(); + } + } + } + } + }; +}); +exports.default = _default; + +//# sourceMappingURL=index.js.map diff --git a/node_modules/@babel/plugin-transform-classes/lib/index.js.map b/node_modules/@babel/plugin-transform-classes/lib/index.js.map new file mode 100644 index 00000000..dde2c199 --- /dev/null +++ b/node_modules/@babel/plugin-transform-classes/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_helperPluginUtils","require","_helperCompilationTargets","_helperAnnotateAsPure","_helperFunctionName","_helperSplitExportDeclaration","_core","_globals","_transformClass","getBuiltinClasses","category","Object","keys","globals","filter","name","test","builtinClasses","Set","_default","declare","api","options","_api$assumption","_api$assumption2","_api$assumption3","_api$assumption4","assertVersion","loose","setClassMethods","assumption","constantSuper","superIsCallableConstructor","noClassCalls","supportUnicodeId","isRequired","targets","VISITED","WeakSet","visitor","ExportDefaultDeclaration","path","get","isClassDeclaration","splitExportDeclaration","ClassDeclaration","node","ref","id","scope","generateUidIdentifier","replaceWith","t","variableDeclaration","variableDeclarator","toExpression","ClassExpression","state","has","inferred","nameFunction","undefined","add","replacedPath","transformClass","file","isCallExpression","annotateAsPure","callee","isArrowFunctionExpression","arrowFunctionToExpression","exports","default"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { isRequired } from \"@babel/helper-compilation-targets\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport nameFunction from \"@babel/helper-function-name\";\nimport splitExportDeclaration from \"@babel/helper-split-export-declaration\";\nimport { types as t } from \"@babel/core\";\nimport globals from \"globals\";\nimport transformClass from \"./transformClass.ts\";\n\nconst getBuiltinClasses = (category: keyof typeof globals) =>\n Object.keys(globals[category]).filter(name => /^[A-Z]/.test(name));\n\nconst builtinClasses = new Set([\n ...getBuiltinClasses(\"builtin\"),\n ...getBuiltinClasses(\"browser\"),\n]);\n\nexport interface Options {\n loose?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n api.assertVersion(7);\n\n const { loose = false } = options;\n\n const setClassMethods = api.assumption(\"setClassMethods\") ?? loose;\n const constantSuper = api.assumption(\"constantSuper\") ?? loose;\n const superIsCallableConstructor =\n api.assumption(\"superIsCallableConstructor\") ?? loose;\n const noClassCalls = api.assumption(\"noClassCalls\") ?? loose;\n const supportUnicodeId = !isRequired(\n \"transform-unicode-escapes\",\n api.targets(),\n );\n\n // todo: investigate traversal requeueing\n const VISITED = new WeakSet();\n\n return {\n name: \"transform-classes\",\n\n visitor: {\n ExportDefaultDeclaration(path) {\n if (!path.get(\"declaration\").isClassDeclaration()) return;\n splitExportDeclaration(path);\n },\n\n ClassDeclaration(path) {\n const { node } = path;\n\n const ref = node.id || path.scope.generateUidIdentifier(\"class\");\n\n path.replaceWith(\n t.variableDeclaration(\"let\", [\n t.variableDeclarator(ref, t.toExpression(node)),\n ]),\n );\n },\n\n ClassExpression(path, state) {\n const { node } = path;\n if (VISITED.has(node)) return;\n\n const inferred = nameFunction(path, undefined, supportUnicodeId);\n if (inferred && inferred !== node) {\n path.replaceWith(inferred);\n return;\n }\n\n VISITED.add(node);\n\n const [replacedPath] = path.replaceWith(\n transformClass(\n path,\n state.file,\n builtinClasses,\n loose,\n {\n setClassMethods,\n constantSuper,\n superIsCallableConstructor,\n noClassCalls,\n },\n supportUnicodeId,\n ),\n );\n\n if (replacedPath.isCallExpression()) {\n annotateAsPure(replacedPath);\n const callee = replacedPath.get(\"callee\");\n if (callee.isArrowFunctionExpression()) {\n // This is an IIFE, so we don't need to worry about the noNewArrows assumption\n callee.arrowFunctionToExpression();\n }\n }\n },\n },\n };\n});\n"],"mappings":"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"}
\ No newline at end of file diff --git a/node_modules/@babel/plugin-transform-classes/lib/inline-createSuper-helpers.js b/node_modules/@babel/plugin-transform-classes/lib/inline-createSuper-helpers.js new file mode 100644 index 00000000..5d5b2e3a --- /dev/null +++ b/node_modules/@babel/plugin-transform-classes/lib/inline-createSuper-helpers.js @@ -0,0 +1,68 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = addCreateSuperHelper; +var _core = require("@babel/core"); +const helper = _core.template.statement` + function CREATE_SUPER(Derived) { + function isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + + // core-js@3 + if (Reflect.construct.sham) return false; + + // Proxy can't be polyfilled. Every browser implemented + // proxies before or at the same time as Reflect.construct, + // so if they support Proxy they also support Reflect.construct. + if (typeof Proxy === "function") return true; + + // Since Reflect.construct can't be properly polyfilled, some + // implementations (e.g. core-js@2) don't set the correct internal slots. + // Those polyfills don't allow us to subclass built-ins, so we need to + // use our fallback implementation. + try { + // If the internal slots aren't set, this throws an error similar to + // TypeError: this is not a Date object. + Date.prototype.toString.call(Reflect.construct(Date, [], function() {})); + return true; + } catch (e) { + return false; + } + } + + return function () { + var Super = GET_PROTOTYPE_OF(Derived), result; + if (isNativeReflectConstruct()) { + // NOTE: This doesn't work if this.__proto__.constructor has been modified. + var NewTarget = GET_PROTOTYPE_OF(this).constructor; + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + return POSSIBLE_CONSTRUCTOR_RETURN(this, result); + } + } +`; +const helperIDs = new WeakMap(); +function addCreateSuperHelper(file) { + if (helperIDs.has(file)) { + return (_core.types.cloneNode || _core.types.clone)(helperIDs.get(file)); + } + try { + return file.addHelper("createSuper"); + } catch (_unused) {} + const id = file.scope.generateUidIdentifier("createSuper"); + helperIDs.set(file, id); + const fn = helper({ + CREATE_SUPER: id, + GET_PROTOTYPE_OF: file.addHelper("getPrototypeOf"), + POSSIBLE_CONSTRUCTOR_RETURN: file.addHelper("possibleConstructorReturn") + }); + file.path.unshiftContainer("body", [fn]); + file.scope.registerDeclaration(file.path.get("body.0")); + return _core.types.cloneNode(id); +} + +//# sourceMappingURL=inline-createSuper-helpers.js.map diff --git a/node_modules/@babel/plugin-transform-classes/lib/inline-createSuper-helpers.js.map b/node_modules/@babel/plugin-transform-classes/lib/inline-createSuper-helpers.js.map new file mode 100644 index 00000000..ae81f041 --- /dev/null +++ b/node_modules/@babel/plugin-transform-classes/lib/inline-createSuper-helpers.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_core","require","helper","template","statement","helperIDs","WeakMap","addCreateSuperHelper","file","has","t","cloneNode","clone","get","addHelper","_unused","id","scope","generateUidIdentifier","set","fn","CREATE_SUPER","GET_PROTOTYPE_OF","POSSIBLE_CONSTRUCTOR_RETURN","path","unshiftContainer","registerDeclaration"],"sources":["../src/inline-createSuper-helpers.ts"],"sourcesContent":["import { template, types as t, type File } from \"@babel/core\";\n\nconst helper = template.statement`\n function CREATE_SUPER(Derived) {\n function isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n\n // core-js@3\n if (Reflect.construct.sham) return false;\n\n // Proxy can't be polyfilled. Every browser implemented\n // proxies before or at the same time as Reflect.construct,\n // so if they support Proxy they also support Reflect.construct.\n if (typeof Proxy === \"function\") return true;\n\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Date object.\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n return function () {\n var Super = GET_PROTOTYPE_OF(Derived), result;\n if (isNativeReflectConstruct()) {\n // NOTE: This doesn't work if this.__proto__.constructor has been modified.\n var NewTarget = GET_PROTOTYPE_OF(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return POSSIBLE_CONSTRUCTOR_RETURN(this, result);\n }\n }\n`;\n\nconst helperIDs = new WeakMap();\n\nexport default function addCreateSuperHelper(file: File) {\n if (helperIDs.has(file)) {\n // TODO: Only use t.cloneNode in Babel 8\n // t.cloneNode isn't supported in every version\n return (t.cloneNode || t.clone)(helperIDs.get(file));\n }\n\n try {\n return file.addHelper(\"createSuper\");\n } catch {\n // Babel <7.9.0 doesn't support the helper.\n }\n\n const id = file.scope.generateUidIdentifier(\"createSuper\");\n helperIDs.set(file, id);\n\n const fn = helper({\n CREATE_SUPER: id,\n GET_PROTOTYPE_OF: file.addHelper(\"getPrototypeOf\"),\n POSSIBLE_CONSTRUCTOR_RETURN: file.addHelper(\"possibleConstructorReturn\"),\n });\n\n file.path.unshiftContainer(\"body\", [fn]);\n file.scope.registerDeclaration(file.path.get(\"body.0\"));\n\n return t.cloneNode(id);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,MAAM,GAAGC,cAAQ,CAACC,SAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMC,SAAS,GAAG,IAAIC,OAAO,CAAC,CAAC;AAEhB,SAASC,oBAAoBA,CAACC,IAAU,EAAE;EACvD,IAAIH,SAAS,CAACI,GAAG,CAACD,IAAI,CAAC,EAAE;IAGvB,OAAO,CAACE,WAAC,CAACC,SAAS,IAAID,WAAC,CAACE,KAAK,EAAEP,SAAS,CAACQ,GAAG,CAACL,IAAI,CAAC,CAAC;EACtD;EAEA,IAAI;IACF,OAAOA,IAAI,CAACM,SAAS,CAAC,aAAa,CAAC;EACtC,CAAC,CAAC,OAAAC,OAAA,EAAM,CAER;EAEA,MAAMC,EAAE,GAAGR,IAAI,CAACS,KAAK,CAACC,qBAAqB,CAAC,aAAa,CAAC;EAC1Db,SAAS,CAACc,GAAG,CAACX,IAAI,EAAEQ,EAAE,CAAC;EAEvB,MAAMI,EAAE,GAAGlB,MAAM,CAAC;IAChBmB,YAAY,EAAEL,EAAE;IAChBM,gBAAgB,EAAEd,IAAI,CAACM,SAAS,CAAC,gBAAgB,CAAC;IAClDS,2BAA2B,EAAEf,IAAI,CAACM,SAAS,CAAC,2BAA2B;EACzE,CAAC,CAAC;EAEFN,IAAI,CAACgB,IAAI,CAACC,gBAAgB,CAAC,MAAM,EAAE,CAACL,EAAE,CAAC,CAAC;EACxCZ,IAAI,CAACS,KAAK,CAACS,mBAAmB,CAAClB,IAAI,CAACgB,IAAI,CAACX,GAAG,CAAC,QAAQ,CAAC,CAAC;EAEvD,OAAOH,WAAC,CAACC,SAAS,CAACK,EAAE,CAAC;AACxB"}
\ No newline at end of file diff --git a/node_modules/@babel/plugin-transform-classes/lib/transformClass.js b/node_modules/@babel/plugin-transform-classes/lib/transformClass.js new file mode 100644 index 00000000..7cf2e2ee --- /dev/null +++ b/node_modules/@babel/plugin-transform-classes/lib/transformClass.js @@ -0,0 +1,508 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = transformClass; +var _helperFunctionName = require("@babel/helper-function-name"); +var _helperReplaceSupers = require("@babel/helper-replace-supers"); +var _helperEnvironmentVisitor = require("@babel/helper-environment-visitor"); +var _helperOptimiseCallExpression = require("@babel/helper-optimise-call-expression"); +var _core = require("@babel/core"); +var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure"); +var _inlineCreateSuperHelpers = require("./inline-createSuper-helpers.js"); +function buildConstructor(classRef, constructorBody, node) { + const func = _core.types.functionDeclaration(_core.types.cloneNode(classRef), [], constructorBody); + _core.types.inherits(func, node); + return func; +} +function transformClass(path, file, builtinClasses, isLoose, assumptions, supportUnicodeId) { + const classState = { + parent: undefined, + scope: undefined, + node: undefined, + path: undefined, + file: undefined, + classId: undefined, + classRef: undefined, + superFnId: undefined, + superName: null, + superReturns: [], + isDerived: false, + extendsNative: false, + construct: undefined, + constructorBody: undefined, + userConstructor: undefined, + userConstructorPath: undefined, + hasConstructor: false, + body: [], + superThises: [], + pushedConstructor: false, + pushedInherits: false, + pushedCreateClass: false, + protoAlias: null, + isLoose: false, + dynamicKeys: new Map(), + methods: { + instance: { + hasComputed: false, + list: [], + map: new Map() + }, + static: { + hasComputed: false, + list: [], + map: new Map() + } + } + }; + const setState = newState => { + Object.assign(classState, newState); + }; + const findThisesVisitor = _core.traverse.visitors.merge([_helperEnvironmentVisitor.default, { + ThisExpression(path) { + classState.superThises.push(path); + } + }]); + function createClassHelper(args) { + return _core.types.callExpression(classState.file.addHelper("createClass"), args); + } + function maybeCreateConstructor() { + const classBodyPath = classState.path.get("body"); + for (const path of classBodyPath.get("body")) { + if (path.isClassMethod({ + kind: "constructor" + })) return; + } + let params, body; + if (classState.isDerived) { + const constructor = _core.template.expression.ast` + (function () { + super(...arguments); + }) + `; + params = constructor.params; + body = constructor.body; + } else { + params = []; + body = _core.types.blockStatement([]); + } + classBodyPath.unshiftContainer("body", _core.types.classMethod("constructor", _core.types.identifier("constructor"), params, body)); + } + function buildBody() { + maybeCreateConstructor(); + pushBody(); + verifyConstructor(); + if (classState.userConstructor) { + const { + constructorBody, + userConstructor, + construct + } = classState; + constructorBody.body.push(...userConstructor.body.body); + _core.types.inherits(construct, userConstructor); + _core.types.inherits(constructorBody, userConstructor.body); + } + pushDescriptors(); + } + function pushBody() { + const classBodyPaths = classState.path.get("body.body"); + for (const path of classBodyPaths) { + const node = path.node; + if (path.isClassProperty()) { + throw path.buildCodeFrameError("Missing class properties transform."); + } + if (node.decorators) { + throw path.buildCodeFrameError("Method has decorators, put the decorator plugin before the classes one."); + } + if (_core.types.isClassMethod(node)) { + const isConstructor = node.kind === "constructor"; + const replaceSupers = new _helperReplaceSupers.default({ + methodPath: path, + objectRef: classState.classRef, + superRef: classState.superName, + constantSuper: assumptions.constantSuper, + file: classState.file, + refToPreserve: classState.classRef + }); + replaceSupers.replace(); + const superReturns = []; + path.traverse(_core.traverse.visitors.merge([_helperEnvironmentVisitor.default, { + ReturnStatement(path) { + if (!path.getFunctionParent().isArrowFunctionExpression()) { + superReturns.push(path); + } + } + }])); + if (isConstructor) { + pushConstructor(superReturns, node, path); + } else { + pushMethod(node, path); + } + } + } + } + function pushDescriptors() { + pushInheritsToBody(); + const { + body + } = classState; + const props = { + instance: null, + static: null + }; + for (const placement of ["static", "instance"]) { + if (classState.methods[placement].list.length) { + props[placement] = classState.methods[placement].list.map(desc => { + const obj = _core.types.objectExpression([_core.types.objectProperty(_core.types.identifier("key"), desc.key)]); + for (const kind of ["get", "set", "value"]) { + if (desc[kind] != null) { + obj.properties.push(_core.types.objectProperty(_core.types.identifier(kind), desc[kind])); + } + } + return obj; + }); + } + } + if (props.instance || props.static) { + let args = [_core.types.cloneNode(classState.classRef), props.instance ? _core.types.arrayExpression(props.instance) : _core.types.nullLiteral(), props.static ? _core.types.arrayExpression(props.static) : _core.types.nullLiteral()]; + let lastNonNullIndex = 0; + for (let i = 0; i < args.length; i++) { + if (!_core.types.isNullLiteral(args[i])) lastNonNullIndex = i; + } + args = args.slice(0, lastNonNullIndex + 1); + body.push(_core.types.expressionStatement(createClassHelper(args))); + classState.pushedCreateClass = true; + } + } + function wrapSuperCall(bareSuper, superRef, thisRef, body) { + const bareSuperNode = bareSuper.node; + let call; + if (assumptions.superIsCallableConstructor) { + bareSuperNode.arguments.unshift(_core.types.thisExpression()); + if (bareSuperNode.arguments.length === 2 && _core.types.isSpreadElement(bareSuperNode.arguments[1]) && _core.types.isIdentifier(bareSuperNode.arguments[1].argument, { + name: "arguments" + })) { + bareSuperNode.arguments[1] = bareSuperNode.arguments[1].argument; + bareSuperNode.callee = _core.types.memberExpression(_core.types.cloneNode(superRef), _core.types.identifier("apply")); + } else { + bareSuperNode.callee = _core.types.memberExpression(_core.types.cloneNode(superRef), _core.types.identifier("call")); + } + call = _core.types.logicalExpression("||", bareSuperNode, _core.types.thisExpression()); + } else { + call = (0, _helperOptimiseCallExpression.default)(_core.types.cloneNode(classState.superFnId), _core.types.thisExpression(), bareSuperNode.arguments, false); + } + if (bareSuper.parentPath.isExpressionStatement() && bareSuper.parentPath.container === body.node.body && body.node.body.length - 1 === bareSuper.parentPath.key) { + if (classState.superThises.length) { + call = _core.types.assignmentExpression("=", thisRef(), call); + } + bareSuper.parentPath.replaceWith(_core.types.returnStatement(call)); + } else { + bareSuper.replaceWith(_core.types.assignmentExpression("=", thisRef(), call)); + } + } + function verifyConstructor() { + if (!classState.isDerived) return; + const path = classState.userConstructorPath; + const body = path.get("body"); + path.traverse(findThisesVisitor); + let thisRef = function () { + const ref = path.scope.generateDeclaredUidIdentifier("this"); + thisRef = () => _core.types.cloneNode(ref); + return ref; + }; + for (const thisPath of classState.superThises) { + const { + node, + parentPath + } = thisPath; + if (parentPath.isMemberExpression({ + object: node + })) { + thisPath.replaceWith(thisRef()); + continue; + } + thisPath.replaceWith(_core.types.callExpression(classState.file.addHelper("assertThisInitialized"), [thisRef()])); + } + const bareSupers = []; + path.traverse(_core.traverse.visitors.merge([_helperEnvironmentVisitor.default, { + Super(path) { + const { + node, + parentPath + } = path; + if (parentPath.isCallExpression({ + callee: node + })) { + bareSupers.unshift(parentPath); + } + } + }])); + let guaranteedSuperBeforeFinish = !!bareSupers.length; + for (const bareSuper of bareSupers) { + wrapSuperCall(bareSuper, classState.superName, thisRef, body); + if (guaranteedSuperBeforeFinish) { + bareSuper.find(function (parentPath) { + if (parentPath === path) { + return true; + } + if (parentPath.isLoop() || parentPath.isConditional() || parentPath.isArrowFunctionExpression()) { + guaranteedSuperBeforeFinish = false; + return true; + } + }); + } + } + let wrapReturn; + if (classState.isLoose) { + wrapReturn = returnArg => { + const thisExpr = _core.types.callExpression(classState.file.addHelper("assertThisInitialized"), [thisRef()]); + return returnArg ? _core.types.logicalExpression("||", returnArg, thisExpr) : thisExpr; + }; + } else { + wrapReturn = returnArg => { + const returnParams = [thisRef()]; + if (returnArg != null) { + returnParams.push(returnArg); + } + return _core.types.callExpression(classState.file.addHelper("possibleConstructorReturn"), returnParams); + }; + } + const bodyPaths = body.get("body"); + if (!bodyPaths.length || !bodyPaths.pop().isReturnStatement()) { + body.pushContainer("body", _core.types.returnStatement(guaranteedSuperBeforeFinish ? thisRef() : wrapReturn())); + } + for (const returnPath of classState.superReturns) { + returnPath.get("argument").replaceWith(wrapReturn(returnPath.node.argument)); + } + } + function pushMethod(node, path) { + const scope = path ? path.scope : classState.scope; + if (node.kind === "method") { + if (processMethod(node, scope)) return; + } + const placement = node.static ? "static" : "instance"; + const methods = classState.methods[placement]; + const descKey = node.kind === "method" ? "value" : node.kind; + const key = _core.types.isNumericLiteral(node.key) || _core.types.isBigIntLiteral(node.key) ? _core.types.stringLiteral(String(node.key.value)) : _core.types.toComputedKey(node); + let fn = _core.types.toExpression(node); + if (_core.types.isStringLiteral(key)) { + if (node.kind === "method") { + var _nameFunction; + fn = (_nameFunction = (0, _helperFunctionName.default)({ + id: key, + node: node, + scope + }, undefined, supportUnicodeId)) != null ? _nameFunction : fn; + } + } else { + methods.hasComputed = true; + } + let descriptor; + if (!methods.hasComputed && methods.map.has(key.value)) { + descriptor = methods.map.get(key.value); + descriptor[descKey] = fn; + if (descKey === "value") { + descriptor.get = null; + descriptor.set = null; + } else { + descriptor.value = null; + } + } else { + descriptor = { + key: key, + [descKey]: fn + }; + methods.list.push(descriptor); + if (!methods.hasComputed) { + methods.map.set(key.value, descriptor); + } + } + } + function processMethod(node, scope) { + if (assumptions.setClassMethods && !node.decorators) { + let { + classRef + } = classState; + if (!node.static) { + insertProtoAliasOnce(); + classRef = classState.protoAlias; + } + const methodName = _core.types.memberExpression(_core.types.cloneNode(classRef), node.key, node.computed || _core.types.isLiteral(node.key)); + let func = _core.types.functionExpression(null, node.params, node.body, node.generator, node.async); + _core.types.inherits(func, node); + const key = _core.types.toComputedKey(node, node.key); + if (_core.types.isStringLiteral(key)) { + var _nameFunction2; + func = (_nameFunction2 = (0, _helperFunctionName.default)({ + node: func, + id: key, + scope + }, undefined, supportUnicodeId)) != null ? _nameFunction2 : func; + } + const expr = _core.types.expressionStatement(_core.types.assignmentExpression("=", methodName, func)); + _core.types.inheritsComments(expr, node); + classState.body.push(expr); + return true; + } + return false; + } + function insertProtoAliasOnce() { + if (classState.protoAlias === null) { + setState({ + protoAlias: classState.scope.generateUidIdentifier("proto") + }); + const classProto = _core.types.memberExpression(classState.classRef, _core.types.identifier("prototype")); + const protoDeclaration = _core.types.variableDeclaration("var", [_core.types.variableDeclarator(classState.protoAlias, classProto)]); + classState.body.push(protoDeclaration); + } + } + function pushConstructor(superReturns, method, path) { + setState({ + userConstructorPath: path, + userConstructor: method, + hasConstructor: true, + superReturns + }); + const { + construct + } = classState; + _core.types.inheritsComments(construct, method); + construct.params = method.params; + _core.types.inherits(construct.body, method.body); + construct.body.directives = method.body.directives; + pushConstructorToBody(); + } + function pushConstructorToBody() { + if (classState.pushedConstructor) return; + classState.pushedConstructor = true; + if (classState.hasInstanceDescriptors || classState.hasStaticDescriptors) { + pushDescriptors(); + } + classState.body.push(classState.construct); + pushInheritsToBody(); + } + function pushInheritsToBody() { + if (!classState.isDerived || classState.pushedInherits) return; + const superFnId = path.scope.generateUidIdentifier("super"); + setState({ + pushedInherits: true, + superFnId + }); + if (!assumptions.superIsCallableConstructor) { + classState.body.unshift(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(superFnId, _core.types.callExpression((0, _inlineCreateSuperHelpers.default)(classState.file), [_core.types.cloneNode(classState.classRef)]))])); + } + classState.body.unshift(_core.types.expressionStatement(_core.types.callExpression(classState.file.addHelper(classState.isLoose ? "inheritsLoose" : "inherits"), [_core.types.cloneNode(classState.classRef), _core.types.cloneNode(classState.superName)]))); + } + function extractDynamicKeys() { + const { + dynamicKeys, + node, + scope + } = classState; + for (const elem of node.body.body) { + if (!_core.types.isClassMethod(elem) || !elem.computed) continue; + if (scope.isPure(elem.key, true)) continue; + const id = scope.generateUidIdentifierBasedOnNode(elem.key); + dynamicKeys.set(id.name, elem.key); + elem.key = id; + } + } + function setupClosureParamsArgs() { + const { + superName, + dynamicKeys + } = classState; + const closureParams = []; + const closureArgs = []; + if (classState.isDerived) { + let arg = _core.types.cloneNode(superName); + if (classState.extendsNative) { + arg = _core.types.callExpression(classState.file.addHelper("wrapNativeSuper"), [arg]); + (0, _helperAnnotateAsPure.default)(arg); + } + const param = classState.scope.generateUidIdentifierBasedOnNode(superName); + closureParams.push(param); + closureArgs.push(arg); + setState({ + superName: _core.types.cloneNode(param) + }); + } + for (const [name, value] of dynamicKeys) { + closureParams.push(_core.types.identifier(name)); + closureArgs.push(value); + } + return { + closureParams, + closureArgs + }; + } + function classTransformer(path, file, builtinClasses, isLoose) { + setState({ + parent: path.parent, + scope: path.scope, + node: path.node, + path, + file, + isLoose + }); + setState({ + classId: classState.node.id, + classRef: classState.node.id ? _core.types.identifier(classState.node.id.name) : classState.scope.generateUidIdentifier("class"), + superName: classState.node.superClass, + isDerived: !!classState.node.superClass, + constructorBody: _core.types.blockStatement([]) + }); + setState({ + extendsNative: _core.types.isIdentifier(classState.superName) && builtinClasses.has(classState.superName.name) && !classState.scope.hasBinding(classState.superName.name, true) + }); + const { + classRef, + node, + constructorBody + } = classState; + setState({ + construct: buildConstructor(classRef, constructorBody, node) + }); + extractDynamicKeys(); + const { + body + } = classState; + const { + closureParams, + closureArgs + } = setupClosureParamsArgs(); + buildBody(); + if (!assumptions.noClassCalls) { + constructorBody.body.unshift(_core.types.expressionStatement(_core.types.callExpression(classState.file.addHelper("classCallCheck"), [_core.types.thisExpression(), _core.types.cloneNode(classState.classRef)]))); + } + const isStrict = path.isInStrictMode(); + let constructorOnly = classState.classId && body.length === 1; + if (constructorOnly && !isStrict) { + for (const param of classState.construct.params) { + if (!_core.types.isIdentifier(param)) { + constructorOnly = false; + break; + } + } + } + const directives = constructorOnly ? body[0].body.directives : []; + if (!isStrict) { + directives.push(_core.types.directive(_core.types.directiveLiteral("use strict"))); + } + if (constructorOnly) { + const expr = _core.types.toExpression(body[0]); + return classState.isLoose ? expr : createClassHelper([expr]); + } + let returnArg = _core.types.cloneNode(classState.classRef); + if (!classState.pushedCreateClass && !classState.isLoose) { + returnArg = createClassHelper([returnArg]); + } + body.push(_core.types.returnStatement(returnArg)); + const container = _core.types.arrowFunctionExpression(closureParams, _core.types.blockStatement(body, directives)); + return _core.types.callExpression(container, closureArgs); + } + return classTransformer(path, file, builtinClasses, isLoose); +} + +//# sourceMappingURL=transformClass.js.map diff --git a/node_modules/@babel/plugin-transform-classes/lib/transformClass.js.map b/node_modules/@babel/plugin-transform-classes/lib/transformClass.js.map new file mode 100644 index 00000000..ac799097 --- /dev/null +++ b/node_modules/@babel/plugin-transform-classes/lib/transformClass.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_helperFunctionName","require","_helperReplaceSupers","_helperEnvironmentVisitor","_helperOptimiseCallExpression","_core","_helperAnnotateAsPure","_inlineCreateSuperHelpers","buildConstructor","classRef","constructorBody","node","func","t","functionDeclaration","cloneNode","inherits","transformClass","path","file","builtinClasses","isLoose","assumptions","supportUnicodeId","classState","parent","undefined","scope","classId","superFnId","superName","superReturns","isDerived","extendsNative","construct","userConstructor","userConstructorPath","hasConstructor","body","superThises","pushedConstructor","pushedInherits","pushedCreateClass","protoAlias","dynamicKeys","Map","methods","instance","hasComputed","list","map","static","setState","newState","Object","assign","findThisesVisitor","traverse","visitors","merge","environmentVisitor","ThisExpression","push","createClassHelper","args","callExpression","addHelper","maybeCreateConstructor","classBodyPath","get","isClassMethod","kind","params","constructor","template","expression","ast","blockStatement","unshiftContainer","classMethod","identifier","buildBody","pushBody","verifyConstructor","pushDescriptors","classBodyPaths","isClassProperty","buildCodeFrameError","decorators","isConstructor","replaceSupers","ReplaceSupers","methodPath","objectRef","superRef","constantSuper","refToPreserve","replace","ReturnStatement","getFunctionParent","isArrowFunctionExpression","pushConstructor","pushMethod","pushInheritsToBody","props","placement","length","desc","obj","objectExpression","objectProperty","key","properties","arrayExpression","nullLiteral","lastNonNullIndex","i","isNullLiteral","slice","expressionStatement","wrapSuperCall","bareSuper","thisRef","bareSuperNode","call","superIsCallableConstructor","arguments","unshift","thisExpression","isSpreadElement","isIdentifier","argument","name","callee","memberExpression","logicalExpression","optimiseCall","parentPath","isExpressionStatement","container","assignmentExpression","replaceWith","returnStatement","ref","generateDeclaredUidIdentifier","thisPath","isMemberExpression","object","bareSupers","Super","isCallExpression","guaranteedSuperBeforeFinish","find","isLoop","isConditional","wrapReturn","returnArg","thisExpr","returnParams","bodyPaths","pop","isReturnStatement","pushContainer","returnPath","processMethod","descKey","isNumericLiteral","isBigIntLiteral","stringLiteral","String","value","toComputedKey","fn","toExpression","isStringLiteral","_nameFunction","nameFunction","id","descriptor","has","set","setClassMethods","insertProtoAliasOnce","methodName","computed","isLiteral","functionExpression","generator","async","_nameFunction2","expr","inheritsComments","generateUidIdentifier","classProto","protoDeclaration","variableDeclaration","variableDeclarator","method","directives","pushConstructorToBody","hasInstanceDescriptors","hasStaticDescriptors","addCreateSuperHelper","extractDynamicKeys","elem","isPure","generateUidIdentifierBasedOnNode","setupClosureParamsArgs","closureParams","closureArgs","arg","annotateAsPure","param","classTransformer","superClass","hasBinding","noClassCalls","isStrict","isInStrictMode","constructorOnly","directive","directiveLiteral","arrowFunctionExpression"],"sources":["../src/transformClass.ts"],"sourcesContent":["import type { NodePath, Scope, Visitor } from \"@babel/traverse\";\nimport nameFunction from \"@babel/helper-function-name\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport environmentVisitor from \"@babel/helper-environment-visitor\";\nimport optimiseCall from \"@babel/helper-optimise-call-expression\";\nimport { traverse, template, types as t, type File } from \"@babel/core\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\n\nimport addCreateSuperHelper from \"./inline-createSuper-helpers.ts\";\n\ntype ClassAssumptions = {\n setClassMethods: boolean;\n constantSuper: boolean;\n superIsCallableConstructor: boolean;\n noClassCalls: boolean;\n};\n\ntype ClassConstructor = t.ClassMethod & { kind: \"constructor\" };\n\nfunction buildConstructor(\n classRef: t.Identifier,\n constructorBody: t.BlockStatement,\n node: t.Class,\n) {\n const func = t.functionDeclaration(\n t.cloneNode(classRef),\n [],\n constructorBody,\n );\n t.inherits(func, node);\n return func;\n}\n\ntype Descriptor = {\n key: t.Expression;\n get?: t.Expression | null;\n set?: t.Expression | null;\n value?: t.Expression | null;\n constructor?: t.Expression | null;\n};\n\ntype State = {\n parent: t.Node;\n scope: Scope;\n node: t.Class;\n path: NodePath<t.Class>;\n file: File;\n\n classId: t.Identifier | void;\n classRef: t.Identifier;\n superFnId: t.Identifier;\n superName: t.Expression | null;\n superReturns: NodePath<t.ReturnStatement>[];\n isDerived: boolean;\n extendsNative: boolean;\n\n construct: t.FunctionDeclaration;\n constructorBody: t.BlockStatement;\n userConstructor: ClassConstructor;\n userConstructorPath: NodePath<ClassConstructor>;\n hasConstructor: boolean;\n\n body: t.Statement[];\n superThises: NodePath<t.ThisExpression>[];\n pushedConstructor: boolean;\n pushedInherits: boolean;\n pushedCreateClass: boolean;\n protoAlias: t.Identifier | null;\n isLoose: boolean;\n\n dynamicKeys: Map<string, t.Expression>;\n\n methods: {\n // 'list' is in the same order as the elements appear in the class body.\n // if there aren't computed keys, we can safely reorder class elements\n // and use 'map' to merge duplicates.\n instance: {\n hasComputed: boolean;\n list: Descriptor[];\n map: Map<string, Descriptor>;\n };\n static: {\n hasComputed: boolean;\n list: Descriptor[];\n map: Map<string, Descriptor>;\n };\n };\n};\n\ntype PropertyInfo = {\n instance: t.ObjectExpression[] | null;\n static: t.ObjectExpression[] | null;\n};\n\nexport default function transformClass(\n path: NodePath<t.Class>,\n file: File,\n builtinClasses: ReadonlySet<string>,\n isLoose: boolean,\n assumptions: ClassAssumptions,\n supportUnicodeId: boolean,\n) {\n const classState: State = {\n parent: undefined,\n scope: undefined,\n node: undefined,\n path: undefined,\n file: undefined,\n\n classId: undefined,\n classRef: undefined,\n superFnId: undefined,\n superName: null,\n superReturns: [],\n isDerived: false,\n extendsNative: false,\n\n construct: undefined,\n constructorBody: undefined,\n userConstructor: undefined,\n userConstructorPath: undefined,\n hasConstructor: false,\n\n body: [],\n superThises: [],\n pushedConstructor: false,\n pushedInherits: false,\n pushedCreateClass: false,\n protoAlias: null,\n isLoose: false,\n\n dynamicKeys: new Map(),\n\n methods: {\n instance: {\n hasComputed: false,\n list: [],\n map: new Map(),\n },\n static: {\n hasComputed: false,\n list: [],\n map: new Map(),\n },\n },\n };\n\n const setState = (newState: Partial<State>) => {\n Object.assign(classState, newState);\n };\n\n const findThisesVisitor = traverse.visitors.merge([\n environmentVisitor,\n {\n ThisExpression(path) {\n classState.superThises.push(path);\n },\n },\n ]);\n\n function createClassHelper(args: t.Expression[]) {\n return t.callExpression(classState.file.addHelper(\"createClass\"), args);\n }\n\n /**\n * Creates a class constructor or bail out if there is one\n */\n function maybeCreateConstructor() {\n const classBodyPath = classState.path.get(\"body\");\n for (const path of classBodyPath.get(\"body\")) {\n if (path.isClassMethod({ kind: \"constructor\" })) return;\n }\n\n let params: t.FunctionExpression[\"params\"], body;\n\n if (classState.isDerived) {\n const constructor = template.expression.ast`\n (function () {\n super(...arguments);\n })\n ` as t.FunctionExpression;\n params = constructor.params;\n body = constructor.body;\n } else {\n params = [];\n body = t.blockStatement([]);\n }\n\n classBodyPath.unshiftContainer(\n \"body\",\n t.classMethod(\"constructor\", t.identifier(\"constructor\"), params, body),\n );\n }\n\n function buildBody() {\n maybeCreateConstructor();\n pushBody();\n verifyConstructor();\n\n if (classState.userConstructor) {\n const { constructorBody, userConstructor, construct } = classState;\n\n constructorBody.body.push(...userConstructor.body.body);\n t.inherits(construct, userConstructor);\n t.inherits(constructorBody, userConstructor.body);\n }\n\n pushDescriptors();\n }\n\n function pushBody() {\n const classBodyPaths: Array<any> = classState.path.get(\"body.body\");\n\n for (const path of classBodyPaths) {\n const node = path.node;\n\n if (path.isClassProperty()) {\n throw path.buildCodeFrameError(\"Missing class properties transform.\");\n }\n\n if (node.decorators) {\n throw path.buildCodeFrameError(\n \"Method has decorators, put the decorator plugin before the classes one.\",\n );\n }\n\n if (t.isClassMethod(node)) {\n const isConstructor = node.kind === \"constructor\";\n\n const replaceSupers = new ReplaceSupers({\n methodPath: path,\n objectRef: classState.classRef,\n superRef: classState.superName,\n constantSuper: assumptions.constantSuper,\n file: classState.file,\n refToPreserve: classState.classRef,\n });\n\n replaceSupers.replace();\n\n const superReturns: NodePath<t.ReturnStatement>[] = [];\n path.traverse(\n traverse.visitors.merge([\n environmentVisitor,\n {\n ReturnStatement(path) {\n if (!path.getFunctionParent().isArrowFunctionExpression()) {\n superReturns.push(path);\n }\n },\n },\n ]),\n );\n\n if (isConstructor) {\n pushConstructor(superReturns, node as ClassConstructor, path);\n } else {\n pushMethod(node, path);\n }\n }\n }\n }\n\n function pushDescriptors() {\n pushInheritsToBody();\n\n const { body } = classState;\n\n const props: PropertyInfo = {\n instance: null,\n static: null,\n };\n\n for (const placement of [\"static\", \"instance\"] as const) {\n if (classState.methods[placement].list.length) {\n props[placement] = classState.methods[placement].list.map(desc => {\n const obj = t.objectExpression([\n t.objectProperty(t.identifier(\"key\"), desc.key),\n ]);\n\n for (const kind of [\"get\", \"set\", \"value\"] as const) {\n if (desc[kind] != null) {\n obj.properties.push(\n t.objectProperty(t.identifier(kind), desc[kind]),\n );\n }\n }\n\n return obj;\n });\n }\n }\n\n if (props.instance || props.static) {\n let args = [\n t.cloneNode(classState.classRef), // Constructor\n props.instance ? t.arrayExpression(props.instance) : t.nullLiteral(), // instanceDescriptors\n props.static ? t.arrayExpression(props.static) : t.nullLiteral(), // staticDescriptors\n ];\n\n let lastNonNullIndex = 0;\n for (let i = 0; i < args.length; i++) {\n if (!t.isNullLiteral(args[i])) lastNonNullIndex = i;\n }\n args = args.slice(0, lastNonNullIndex + 1);\n\n body.push(t.expressionStatement(createClassHelper(args)));\n classState.pushedCreateClass = true;\n }\n }\n\n function wrapSuperCall(\n bareSuper: NodePath<t.CallExpression>,\n superRef: t.Expression,\n thisRef: () => t.Identifier,\n body: NodePath<t.BlockStatement>,\n ) {\n const bareSuperNode = bareSuper.node;\n let call;\n\n if (assumptions.superIsCallableConstructor) {\n bareSuperNode.arguments.unshift(t.thisExpression());\n if (\n bareSuperNode.arguments.length === 2 &&\n t.isSpreadElement(bareSuperNode.arguments[1]) &&\n t.isIdentifier(bareSuperNode.arguments[1].argument, {\n name: \"arguments\",\n })\n ) {\n // special case single arguments spread\n bareSuperNode.arguments[1] = bareSuperNode.arguments[1].argument;\n bareSuperNode.callee = t.memberExpression(\n t.cloneNode(superRef),\n t.identifier(\"apply\"),\n );\n } else {\n bareSuperNode.callee = t.memberExpression(\n t.cloneNode(superRef),\n t.identifier(\"call\"),\n );\n }\n\n call = t.logicalExpression(\"||\", bareSuperNode, t.thisExpression());\n } else {\n call = optimiseCall(\n t.cloneNode(classState.superFnId),\n t.thisExpression(),\n bareSuperNode.arguments,\n false,\n );\n }\n\n if (\n bareSuper.parentPath.isExpressionStatement() &&\n bareSuper.parentPath.container === body.node.body &&\n body.node.body.length - 1 === bareSuper.parentPath.key\n ) {\n // this super call is the last statement in the body so we can just straight up\n // turn it into a return\n\n if (classState.superThises.length) {\n call = t.assignmentExpression(\"=\", thisRef(), call);\n }\n\n bareSuper.parentPath.replaceWith(t.returnStatement(call));\n } else {\n bareSuper.replaceWith(t.assignmentExpression(\"=\", thisRef(), call));\n }\n }\n\n function verifyConstructor() {\n if (!classState.isDerived) return;\n\n const path = classState.userConstructorPath;\n const body = path.get(\"body\");\n\n path.traverse(findThisesVisitor);\n\n let thisRef = function () {\n const ref = path.scope.generateDeclaredUidIdentifier(\"this\");\n thisRef = () => t.cloneNode(ref);\n return ref;\n };\n\n for (const thisPath of classState.superThises) {\n const { node, parentPath } = thisPath;\n if (parentPath.isMemberExpression({ object: node })) {\n thisPath.replaceWith(thisRef());\n continue;\n }\n thisPath.replaceWith(\n t.callExpression(classState.file.addHelper(\"assertThisInitialized\"), [\n thisRef(),\n ]),\n );\n }\n\n const bareSupers: NodePath<t.CallExpression>[] = [];\n path.traverse(\n traverse.visitors.merge([\n environmentVisitor,\n {\n Super(path) {\n const { node, parentPath } = path;\n if (parentPath.isCallExpression({ callee: node })) {\n bareSupers.unshift(parentPath);\n }\n },\n } as Visitor,\n ]),\n );\n\n let guaranteedSuperBeforeFinish = !!bareSupers.length;\n\n for (const bareSuper of bareSupers) {\n wrapSuperCall(bareSuper, classState.superName, thisRef, body);\n\n if (guaranteedSuperBeforeFinish) {\n bareSuper.find(function (parentPath) {\n // hit top so short circuit\n if (parentPath === path) {\n return true;\n }\n\n if (\n parentPath.isLoop() ||\n parentPath.isConditional() ||\n parentPath.isArrowFunctionExpression()\n ) {\n guaranteedSuperBeforeFinish = false;\n return true;\n }\n });\n }\n }\n\n let wrapReturn;\n\n if (classState.isLoose) {\n wrapReturn = (returnArg: t.Expression | void) => {\n const thisExpr = t.callExpression(\n classState.file.addHelper(\"assertThisInitialized\"),\n [thisRef()],\n );\n return returnArg\n ? t.logicalExpression(\"||\", returnArg, thisExpr)\n : thisExpr;\n };\n } else {\n wrapReturn = (returnArg: t.Expression | undefined) => {\n const returnParams: t.Expression[] = [thisRef()];\n if (returnArg != null) {\n returnParams.push(returnArg);\n }\n return t.callExpression(\n classState.file.addHelper(\"possibleConstructorReturn\"),\n returnParams,\n );\n };\n }\n\n // if we have a return as the last node in the body then we've already caught that\n // return\n const bodyPaths = body.get(\"body\");\n if (!bodyPaths.length || !bodyPaths.pop().isReturnStatement()) {\n body.pushContainer(\n \"body\",\n t.returnStatement(\n guaranteedSuperBeforeFinish ? thisRef() : wrapReturn(),\n ),\n );\n }\n\n for (const returnPath of classState.superReturns) {\n returnPath\n .get(\"argument\")\n .replaceWith(wrapReturn(returnPath.node.argument));\n }\n }\n\n /**\n * Push a method to its respective mutatorMap.\n */\n function pushMethod(node: t.ClassMethod, path?: NodePath) {\n const scope = path ? path.scope : classState.scope;\n\n if (node.kind === \"method\") {\n if (processMethod(node, scope)) return;\n }\n\n const placement = node.static ? \"static\" : \"instance\";\n const methods = classState.methods[placement];\n\n const descKey = node.kind === \"method\" ? \"value\" : node.kind;\n const key =\n t.isNumericLiteral(node.key) || t.isBigIntLiteral(node.key)\n ? t.stringLiteral(String(node.key.value))\n : t.toComputedKey(node);\n\n let fn: t.Expression = t.toExpression(node);\n\n if (t.isStringLiteral(key)) {\n // infer function name\n if (node.kind === \"method\") {\n // @ts-expect-error Fixme: we are passing a ClassMethod to nameFunction, but nameFunction\n // does not seem to support it\n fn =\n nameFunction(\n // @ts-expect-error Fixme: we are passing a ClassMethod to nameFunction, but nameFunction\n // does not seem to support it\n { id: key, node: node, scope },\n undefined,\n supportUnicodeId,\n ) ?? fn;\n }\n } else {\n // todo(flow->ts) find a way to avoid \"key as t.StringLiteral\" below which relies on this assignment\n methods.hasComputed = true;\n }\n\n let descriptor: Descriptor;\n if (\n !methods.hasComputed &&\n methods.map.has((key as t.StringLiteral).value)\n ) {\n descriptor = methods.map.get((key as t.StringLiteral).value);\n descriptor[descKey] = fn;\n\n if (descKey === \"value\") {\n descriptor.get = null;\n descriptor.set = null;\n } else {\n descriptor.value = null;\n }\n } else {\n descriptor = {\n key:\n // private name has been handled in class-properties transform\n key as t.Expression,\n [descKey]: fn,\n } as Descriptor;\n methods.list.push(descriptor);\n\n if (!methods.hasComputed) {\n methods.map.set((key as t.StringLiteral).value, descriptor);\n }\n }\n }\n\n function processMethod(node: t.ClassMethod, scope: Scope) {\n if (assumptions.setClassMethods && !node.decorators) {\n // use assignments instead of define properties for loose classes\n let { classRef } = classState;\n if (!node.static) {\n insertProtoAliasOnce();\n classRef = classState.protoAlias;\n }\n const methodName = t.memberExpression(\n t.cloneNode(classRef),\n node.key,\n node.computed || t.isLiteral(node.key),\n );\n\n let func: t.Expression = t.functionExpression(\n null,\n // @ts-expect-error Fixme: should throw when we see TSParameterProperty\n node.params,\n node.body,\n node.generator,\n node.async,\n );\n t.inherits(func, node);\n\n const key = t.toComputedKey(node, node.key);\n if (t.isStringLiteral(key)) {\n // @ts-expect-error: requires strictNullCheck\n func =\n nameFunction(\n {\n node: func,\n id: key,\n scope,\n },\n undefined,\n supportUnicodeId,\n ) ?? func;\n }\n\n const expr = t.expressionStatement(\n t.assignmentExpression(\"=\", methodName, func),\n );\n t.inheritsComments(expr, node);\n classState.body.push(expr);\n return true;\n }\n\n return false;\n }\n\n function insertProtoAliasOnce() {\n if (classState.protoAlias === null) {\n setState({ protoAlias: classState.scope.generateUidIdentifier(\"proto\") });\n const classProto = t.memberExpression(\n classState.classRef,\n t.identifier(\"prototype\"),\n );\n const protoDeclaration = t.variableDeclaration(\"var\", [\n t.variableDeclarator(classState.protoAlias, classProto),\n ]);\n\n classState.body.push(protoDeclaration);\n }\n }\n\n /**\n * Replace the constructor body of our class.\n */\n function pushConstructor(\n superReturns: NodePath<t.ReturnStatement>[],\n method: ClassConstructor,\n path: NodePath<ClassConstructor>,\n ) {\n setState({\n userConstructorPath: path,\n userConstructor: method,\n hasConstructor: true,\n superReturns,\n });\n\n const { construct } = classState;\n\n t.inheritsComments(construct, method);\n\n // @ts-expect-error Fixme: should throw when we see TSParameterProperty\n construct.params = method.params;\n\n t.inherits(construct.body, method.body);\n construct.body.directives = method.body.directives;\n\n pushConstructorToBody();\n }\n\n function pushConstructorToBody() {\n if (classState.pushedConstructor) return;\n classState.pushedConstructor = true;\n\n // we haven't pushed any descriptors yet\n // @ts-expect-error todo(flow->ts) maybe remove this block - properties from condition are not used anywhere else\n if (classState.hasInstanceDescriptors || classState.hasStaticDescriptors) {\n pushDescriptors();\n }\n\n classState.body.push(classState.construct);\n\n pushInheritsToBody();\n }\n\n /**\n * Push inherits helper to body.\n */\n function pushInheritsToBody() {\n if (!classState.isDerived || classState.pushedInherits) return;\n\n const superFnId = path.scope.generateUidIdentifier(\"super\");\n\n setState({ pushedInherits: true, superFnId });\n\n // Unshift to ensure that the constructor inheritance is set up before\n // any properties can be assigned to the prototype.\n\n if (!assumptions.superIsCallableConstructor) {\n classState.body.unshift(\n t.variableDeclaration(\"var\", [\n t.variableDeclarator(\n superFnId,\n t.callExpression(addCreateSuperHelper(classState.file), [\n t.cloneNode(classState.classRef),\n ]),\n ),\n ]),\n );\n }\n\n classState.body.unshift(\n t.expressionStatement(\n t.callExpression(\n classState.file.addHelper(\n classState.isLoose ? \"inheritsLoose\" : \"inherits\",\n ),\n [t.cloneNode(classState.classRef), t.cloneNode(classState.superName)],\n ),\n ),\n );\n }\n\n function extractDynamicKeys() {\n const { dynamicKeys, node, scope } = classState;\n\n for (const elem of node.body.body) {\n if (!t.isClassMethod(elem) || !elem.computed) continue;\n if (scope.isPure(elem.key, /* constants only*/ true)) continue;\n\n const id = scope.generateUidIdentifierBasedOnNode(elem.key);\n dynamicKeys.set(id.name, elem.key);\n\n elem.key = id;\n }\n }\n\n function setupClosureParamsArgs() {\n const { superName, dynamicKeys } = classState;\n const closureParams = [];\n const closureArgs = [];\n\n if (classState.isDerived) {\n let arg = t.cloneNode(superName);\n if (classState.extendsNative) {\n arg = t.callExpression(classState.file.addHelper(\"wrapNativeSuper\"), [\n arg,\n ]);\n annotateAsPure(arg);\n }\n\n const param =\n classState.scope.generateUidIdentifierBasedOnNode(superName);\n\n closureParams.push(param);\n closureArgs.push(arg);\n\n setState({ superName: t.cloneNode(param) });\n }\n\n for (const [name, value] of dynamicKeys) {\n closureParams.push(t.identifier(name));\n closureArgs.push(value);\n }\n\n return { closureParams, closureArgs };\n }\n\n function classTransformer(\n path: NodePath<t.Class>,\n file: File,\n builtinClasses: ReadonlySet<string>,\n isLoose: boolean,\n ) {\n setState({\n parent: path.parent,\n scope: path.scope,\n node: path.node,\n path,\n file,\n isLoose,\n });\n\n setState({\n classId: classState.node.id,\n // this is the name of the binding that will **always** reference the class we've constructed\n classRef: classState.node.id\n ? t.identifier(classState.node.id.name)\n : classState.scope.generateUidIdentifier(\"class\"),\n superName: classState.node.superClass,\n isDerived: !!classState.node.superClass,\n constructorBody: t.blockStatement([]),\n });\n\n setState({\n extendsNative:\n t.isIdentifier(classState.superName) &&\n builtinClasses.has(classState.superName.name) &&\n !classState.scope.hasBinding(\n classState.superName.name,\n /* noGlobals */ true,\n ),\n });\n\n const { classRef, node, constructorBody } = classState;\n\n setState({\n construct: buildConstructor(classRef, constructorBody, node),\n });\n\n extractDynamicKeys();\n\n const { body } = classState;\n const { closureParams, closureArgs } = setupClosureParamsArgs();\n\n buildBody();\n\n // make sure this class isn't directly called (with A() instead new A())\n if (!assumptions.noClassCalls) {\n constructorBody.body.unshift(\n t.expressionStatement(\n t.callExpression(classState.file.addHelper(\"classCallCheck\"), [\n t.thisExpression(),\n t.cloneNode(classState.classRef),\n ]),\n ),\n );\n }\n\n const isStrict = path.isInStrictMode();\n let constructorOnly = classState.classId && body.length === 1;\n if (constructorOnly && !isStrict) {\n for (const param of classState.construct.params) {\n // It's illegal to put a use strict directive into the body of a function\n // with non-simple parameters for some reason. So, we have to use a strict\n // wrapper function.\n if (!t.isIdentifier(param)) {\n constructorOnly = false;\n break;\n }\n }\n }\n\n const directives = constructorOnly\n ? (body[0] as t.FunctionExpression | t.FunctionDeclaration).body\n .directives\n : [];\n if (!isStrict) {\n directives.push(t.directive(t.directiveLiteral(\"use strict\")));\n }\n\n if (constructorOnly) {\n // named class with only a constructor\n const expr = t.toExpression(\n body[0] as t.FunctionExpression | t.FunctionDeclaration,\n );\n return classState.isLoose ? expr : createClassHelper([expr]);\n }\n\n let returnArg: t.Expression = t.cloneNode(classState.classRef);\n if (!classState.pushedCreateClass && !classState.isLoose) {\n returnArg = createClassHelper([returnArg]);\n }\n\n body.push(t.returnStatement(returnArg));\n const container = t.arrowFunctionExpression(\n closureParams,\n t.blockStatement(body, directives),\n );\n return t.callExpression(container, closureArgs);\n }\n\n return classTransformer(path, file, builtinClasses, isLoose);\n}\n"],"mappings":";;;;;;AACA,IAAAA,mBAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,yBAAA,GAAAF,OAAA;AACA,IAAAG,6BAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,qBAAA,GAAAL,OAAA;AAEA,IAAAM,yBAAA,GAAAN,OAAA;AAWA,SAASO,gBAAgBA,CACvBC,QAAsB,EACtBC,eAAiC,EACjCC,IAAa,EACb;EACA,MAAMC,IAAI,GAAGC,WAAC,CAACC,mBAAmB,CAChCD,WAAC,CAACE,SAAS,CAACN,QAAQ,CAAC,EACrB,EAAE,EACFC,eACF,CAAC;EACDG,WAAC,CAACG,QAAQ,CAACJ,IAAI,EAAED,IAAI,CAAC;EACtB,OAAOC,IAAI;AACb;AA+De,SAASK,cAAcA,CACpCC,IAAuB,EACvBC,IAAU,EACVC,cAAmC,EACnCC,OAAgB,EAChBC,WAA6B,EAC7BC,gBAAyB,EACzB;EACA,MAAMC,UAAiB,GAAG;IACxBC,MAAM,EAAEC,SAAS;IACjBC,KAAK,EAAED,SAAS;IAChBf,IAAI,EAAEe,SAAS;IACfR,IAAI,EAAEQ,SAAS;IACfP,IAAI,EAAEO,SAAS;IAEfE,OAAO,EAAEF,SAAS;IAClBjB,QAAQ,EAAEiB,SAAS;IACnBG,SAAS,EAAEH,SAAS;IACpBI,SAAS,EAAE,IAAI;IACfC,YAAY,EAAE,EAAE;IAChBC,SAAS,EAAE,KAAK;IAChBC,aAAa,EAAE,KAAK;IAEpBC,SAAS,EAAER,SAAS;IACpBhB,eAAe,EAAEgB,SAAS;IAC1BS,eAAe,EAAET,SAAS;IAC1BU,mBAAmB,EAAEV,SAAS;IAC9BW,cAAc,EAAE,KAAK;IAErBC,IAAI,EAAE,EAAE;IACRC,WAAW,EAAE,EAAE;IACfC,iBAAiB,EAAE,KAAK;IACxBC,cAAc,EAAE,KAAK;IACrBC,iBAAiB,EAAE,KAAK;IACxBC,UAAU,EAAE,IAAI;IAChBtB,OAAO,EAAE,KAAK;IAEduB,WAAW,EAAE,IAAIC,GAAG,CAAC,CAAC;IAEtBC,OAAO,EAAE;MACPC,QAAQ,EAAE;QACRC,WAAW,EAAE,KAAK;QAClBC,IAAI,EAAE,EAAE;QACRC,GAAG,EAAE,IAAIL,GAAG,CAAC;MACf,CAAC;MACDM,MAAM,EAAE;QACNH,WAAW,EAAE,KAAK;QAClBC,IAAI,EAAE,EAAE;QACRC,GAAG,EAAE,IAAIL,GAAG,CAAC;MACf;IACF;EACF,CAAC;EAED,MAAMO,QAAQ,GAAIC,QAAwB,IAAK;IAC7CC,MAAM,CAACC,MAAM,CAAC/B,UAAU,EAAE6B,QAAQ,CAAC;EACrC,CAAC;EAED,MAAMG,iBAAiB,GAAGC,cAAQ,CAACC,QAAQ,CAACC,KAAK,CAAC,CAChDC,iCAAkB,EAClB;IACEC,cAAcA,CAAC3C,IAAI,EAAE;MACnBM,UAAU,CAACe,WAAW,CAACuB,IAAI,CAAC5C,IAAI,CAAC;IACnC;EACF,CAAC,CACF,CAAC;EAEF,SAAS6C,iBAAiBA,CAACC,IAAoB,EAAE;IAC/C,OAAOnD,WAAC,CAACoD,cAAc,CAACzC,UAAU,CAACL,IAAI,CAAC+C,SAAS,CAAC,aAAa,CAAC,EAAEF,IAAI,CAAC;EACzE;EAKA,SAASG,sBAAsBA,CAAA,EAAG;IAChC,MAAMC,aAAa,GAAG5C,UAAU,CAACN,IAAI,CAACmD,GAAG,CAAC,MAAM,CAAC;IACjD,KAAK,MAAMnD,IAAI,IAAIkD,aAAa,CAACC,GAAG,CAAC,MAAM,CAAC,EAAE;MAC5C,IAAInD,IAAI,CAACoD,aAAa,CAAC;QAAEC,IAAI,EAAE;MAAc,CAAC,CAAC,EAAE;IACnD;IAEA,IAAIC,MAAsC,EAAElC,IAAI;IAEhD,IAAId,UAAU,CAACQ,SAAS,EAAE;MACxB,MAAMyC,WAAW,GAAGC,cAAQ,CAACC,UAAU,CAACC,GAAI;AAClD;AACA;AACA;AACA,OAA+B;MACzBJ,MAAM,GAAGC,WAAW,CAACD,MAAM;MAC3BlC,IAAI,GAAGmC,WAAW,CAACnC,IAAI;IACzB,CAAC,MAAM;MACLkC,MAAM,GAAG,EAAE;MACXlC,IAAI,GAAGzB,WAAC,CAACgE,cAAc,CAAC,EAAE,CAAC;IAC7B;IAEAT,aAAa,CAACU,gBAAgB,CAC5B,MAAM,EACNjE,WAAC,CAACkE,WAAW,CAAC,aAAa,EAAElE,WAAC,CAACmE,UAAU,CAAC,aAAa,CAAC,EAAER,MAAM,EAAElC,IAAI,CACxE,CAAC;EACH;EAEA,SAAS2C,SAASA,CAAA,EAAG;IACnBd,sBAAsB,CAAC,CAAC;IACxBe,QAAQ,CAAC,CAAC;IACVC,iBAAiB,CAAC,CAAC;IAEnB,IAAI3D,UAAU,CAACW,eAAe,EAAE;MAC9B,MAAM;QAAEzB,eAAe;QAAEyB,eAAe;QAAED;MAAU,CAAC,GAAGV,UAAU;MAElEd,eAAe,CAAC4B,IAAI,CAACwB,IAAI,CAAC,GAAG3B,eAAe,CAACG,IAAI,CAACA,IAAI,CAAC;MACvDzB,WAAC,CAACG,QAAQ,CAACkB,SAAS,EAAEC,eAAe,CAAC;MACtCtB,WAAC,CAACG,QAAQ,CAACN,eAAe,EAAEyB,eAAe,CAACG,IAAI,CAAC;IACnD;IAEA8C,eAAe,CAAC,CAAC;EACnB;EAEA,SAASF,QAAQA,CAAA,EAAG;IAClB,MAAMG,cAA0B,GAAG7D,UAAU,CAACN,IAAI,CAACmD,GAAG,CAAC,WAAW,CAAC;IAEnE,KAAK,MAAMnD,IAAI,IAAImE,cAAc,EAAE;MACjC,MAAM1E,IAAI,GAAGO,IAAI,CAACP,IAAI;MAEtB,IAAIO,IAAI,CAACoE,eAAe,CAAC,CAAC,EAAE;QAC1B,MAAMpE,IAAI,CAACqE,mBAAmB,CAAC,qCAAqC,CAAC;MACvE;MAEA,IAAI5E,IAAI,CAAC6E,UAAU,EAAE;QACnB,MAAMtE,IAAI,CAACqE,mBAAmB,CAC5B,yEACF,CAAC;MACH;MAEA,IAAI1E,WAAC,CAACyD,aAAa,CAAC3D,IAAI,CAAC,EAAE;QACzB,MAAM8E,aAAa,GAAG9E,IAAI,CAAC4D,IAAI,KAAK,aAAa;QAEjD,MAAMmB,aAAa,GAAG,IAAIC,4BAAa,CAAC;UACtCC,UAAU,EAAE1E,IAAI;UAChB2E,SAAS,EAAErE,UAAU,CAACf,QAAQ;UAC9BqF,QAAQ,EAAEtE,UAAU,CAACM,SAAS;UAC9BiE,aAAa,EAAEzE,WAAW,CAACyE,aAAa;UACxC5E,IAAI,EAAEK,UAAU,CAACL,IAAI;UACrB6E,aAAa,EAAExE,UAAU,CAACf;QAC5B,CAAC,CAAC;QAEFiF,aAAa,CAACO,OAAO,CAAC,CAAC;QAEvB,MAAMlE,YAA2C,GAAG,EAAE;QACtDb,IAAI,CAACuC,QAAQ,CACXA,cAAQ,CAACC,QAAQ,CAACC,KAAK,CAAC,CACtBC,iCAAkB,EAClB;UACEsC,eAAeA,CAAChF,IAAI,EAAE;YACpB,IAAI,CAACA,IAAI,CAACiF,iBAAiB,CAAC,CAAC,CAACC,yBAAyB,CAAC,CAAC,EAAE;cACzDrE,YAAY,CAAC+B,IAAI,CAAC5C,IAAI,CAAC;YACzB;UACF;QACF,CAAC,CACF,CACH,CAAC;QAED,IAAIuE,aAAa,EAAE;UACjBY,eAAe,CAACtE,YAAY,EAAEpB,IAAI,EAAsBO,IAAI,CAAC;QAC/D,CAAC,MAAM;UACLoF,UAAU,CAAC3F,IAAI,EAAEO,IAAI,CAAC;QACxB;MACF;IACF;EACF;EAEA,SAASkE,eAAeA,CAAA,EAAG;IACzBmB,kBAAkB,CAAC,CAAC;IAEpB,MAAM;MAAEjE;IAAK,CAAC,GAAGd,UAAU;IAE3B,MAAMgF,KAAmB,GAAG;MAC1BzD,QAAQ,EAAE,IAAI;MACdI,MAAM,EAAE;IACV,CAAC;IAED,KAAK,MAAMsD,SAAS,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAW;MACvD,IAAIjF,UAAU,CAACsB,OAAO,CAAC2D,SAAS,CAAC,CAACxD,IAAI,CAACyD,MAAM,EAAE;QAC7CF,KAAK,CAACC,SAAS,CAAC,GAAGjF,UAAU,CAACsB,OAAO,CAAC2D,SAAS,CAAC,CAACxD,IAAI,CAACC,GAAG,CAACyD,IAAI,IAAI;UAChE,MAAMC,GAAG,GAAG/F,WAAC,CAACgG,gBAAgB,CAAC,CAC7BhG,WAAC,CAACiG,cAAc,CAACjG,WAAC,CAACmE,UAAU,CAAC,KAAK,CAAC,EAAE2B,IAAI,CAACI,GAAG,CAAC,CAChD,CAAC;UAEF,KAAK,MAAMxC,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAW;YACnD,IAAIoC,IAAI,CAACpC,IAAI,CAAC,IAAI,IAAI,EAAE;cACtBqC,GAAG,CAACI,UAAU,CAAClD,IAAI,CACjBjD,WAAC,CAACiG,cAAc,CAACjG,WAAC,CAACmE,UAAU,CAACT,IAAI,CAAC,EAAEoC,IAAI,CAACpC,IAAI,CAAC,CACjD,CAAC;YACH;UACF;UAEA,OAAOqC,GAAG;QACZ,CAAC,CAAC;MACJ;IACF;IAEA,IAAIJ,KAAK,CAACzD,QAAQ,IAAIyD,KAAK,CAACrD,MAAM,EAAE;MAClC,IAAIa,IAAI,GAAG,CACTnD,WAAC,CAACE,SAAS,CAACS,UAAU,CAACf,QAAQ,CAAC,EAChC+F,KAAK,CAACzD,QAAQ,GAAGlC,WAAC,CAACoG,eAAe,CAACT,KAAK,CAACzD,QAAQ,CAAC,GAAGlC,WAAC,CAACqG,WAAW,CAAC,CAAC,EACpEV,KAAK,CAACrD,MAAM,GAAGtC,WAAC,CAACoG,eAAe,CAACT,KAAK,CAACrD,MAAM,CAAC,GAAGtC,WAAC,CAACqG,WAAW,CAAC,CAAC,CACjE;MAED,IAAIC,gBAAgB,GAAG,CAAC;MACxB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpD,IAAI,CAAC0C,MAAM,EAAEU,CAAC,EAAE,EAAE;QACpC,IAAI,CAACvG,WAAC,CAACwG,aAAa,CAACrD,IAAI,CAACoD,CAAC,CAAC,CAAC,EAAED,gBAAgB,GAAGC,CAAC;MACrD;MACApD,IAAI,GAAGA,IAAI,CAACsD,KAAK,CAAC,CAAC,EAAEH,gBAAgB,GAAG,CAAC,CAAC;MAE1C7E,IAAI,CAACwB,IAAI,CAACjD,WAAC,CAAC0G,mBAAmB,CAACxD,iBAAiB,CAACC,IAAI,CAAC,CAAC,CAAC;MACzDxC,UAAU,CAACkB,iBAAiB,GAAG,IAAI;IACrC;EACF;EAEA,SAAS8E,aAAaA,CACpBC,SAAqC,EACrC3B,QAAsB,EACtB4B,OAA2B,EAC3BpF,IAAgC,EAChC;IACA,MAAMqF,aAAa,GAAGF,SAAS,CAAC9G,IAAI;IACpC,IAAIiH,IAAI;IAER,IAAItG,WAAW,CAACuG,0BAA0B,EAAE;MAC1CF,aAAa,CAACG,SAAS,CAACC,OAAO,CAAClH,WAAC,CAACmH,cAAc,CAAC,CAAC,CAAC;MACnD,IACEL,aAAa,CAACG,SAAS,CAACpB,MAAM,KAAK,CAAC,IACpC7F,WAAC,CAACoH,eAAe,CAACN,aAAa,CAACG,SAAS,CAAC,CAAC,CAAC,CAAC,IAC7CjH,WAAC,CAACqH,YAAY,CAACP,aAAa,CAACG,SAAS,CAAC,CAAC,CAAC,CAACK,QAAQ,EAAE;QAClDC,IAAI,EAAE;MACR,CAAC,CAAC,EACF;QAEAT,aAAa,CAACG,SAAS,CAAC,CAAC,CAAC,GAAGH,aAAa,CAACG,SAAS,CAAC,CAAC,CAAC,CAACK,QAAQ;QAChER,aAAa,CAACU,MAAM,GAAGxH,WAAC,CAACyH,gBAAgB,CACvCzH,WAAC,CAACE,SAAS,CAAC+E,QAAQ,CAAC,EACrBjF,WAAC,CAACmE,UAAU,CAAC,OAAO,CACtB,CAAC;MACH,CAAC,MAAM;QACL2C,aAAa,CAACU,MAAM,GAAGxH,WAAC,CAACyH,gBAAgB,CACvCzH,WAAC,CAACE,SAAS,CAAC+E,QAAQ,CAAC,EACrBjF,WAAC,CAACmE,UAAU,CAAC,MAAM,CACrB,CAAC;MACH;MAEA4C,IAAI,GAAG/G,WAAC,CAAC0H,iBAAiB,CAAC,IAAI,EAAEZ,aAAa,EAAE9G,WAAC,CAACmH,cAAc,CAAC,CAAC,CAAC;IACrE,CAAC,MAAM;MACLJ,IAAI,GAAG,IAAAY,qCAAY,EACjB3H,WAAC,CAACE,SAAS,CAACS,UAAU,CAACK,SAAS,CAAC,EACjChB,WAAC,CAACmH,cAAc,CAAC,CAAC,EAClBL,aAAa,CAACG,SAAS,EACvB,KACF,CAAC;IACH;IAEA,IACEL,SAAS,CAACgB,UAAU,CAACC,qBAAqB,CAAC,CAAC,IAC5CjB,SAAS,CAACgB,UAAU,CAACE,SAAS,KAAKrG,IAAI,CAAC3B,IAAI,CAAC2B,IAAI,IACjDA,IAAI,CAAC3B,IAAI,CAAC2B,IAAI,CAACoE,MAAM,GAAG,CAAC,KAAKe,SAAS,CAACgB,UAAU,CAAC1B,GAAG,EACtD;MAIA,IAAIvF,UAAU,CAACe,WAAW,CAACmE,MAAM,EAAE;QACjCkB,IAAI,GAAG/G,WAAC,CAAC+H,oBAAoB,CAAC,GAAG,EAAElB,OAAO,CAAC,CAAC,EAAEE,IAAI,CAAC;MACrD;MAEAH,SAAS,CAACgB,UAAU,CAACI,WAAW,CAAChI,WAAC,CAACiI,eAAe,CAAClB,IAAI,CAAC,CAAC;IAC3D,CAAC,MAAM;MACLH,SAAS,CAACoB,WAAW,CAAChI,WAAC,CAAC+H,oBAAoB,CAAC,GAAG,EAAElB,OAAO,CAAC,CAAC,EAAEE,IAAI,CAAC,CAAC;IACrE;EACF;EAEA,SAASzC,iBAAiBA,CAAA,EAAG;IAC3B,IAAI,CAAC3D,UAAU,CAACQ,SAAS,EAAE;IAE3B,MAAMd,IAAI,GAAGM,UAAU,CAACY,mBAAmB;IAC3C,MAAME,IAAI,GAAGpB,IAAI,CAACmD,GAAG,CAAC,MAAM,CAAC;IAE7BnD,IAAI,CAACuC,QAAQ,CAACD,iBAAiB,CAAC;IAEhC,IAAIkE,OAAO,GAAG,SAAAA,CAAA,EAAY;MACxB,MAAMqB,GAAG,GAAG7H,IAAI,CAACS,KAAK,CAACqH,6BAA6B,CAAC,MAAM,CAAC;MAC5DtB,OAAO,GAAGA,CAAA,KAAM7G,WAAC,CAACE,SAAS,CAACgI,GAAG,CAAC;MAChC,OAAOA,GAAG;IACZ,CAAC;IAED,KAAK,MAAME,QAAQ,IAAIzH,UAAU,CAACe,WAAW,EAAE;MAC7C,MAAM;QAAE5B,IAAI;QAAE8H;MAAW,CAAC,GAAGQ,QAAQ;MACrC,IAAIR,UAAU,CAACS,kBAAkB,CAAC;QAAEC,MAAM,EAAExI;MAAK,CAAC,CAAC,EAAE;QACnDsI,QAAQ,CAACJ,WAAW,CAACnB,OAAO,CAAC,CAAC,CAAC;QAC/B;MACF;MACAuB,QAAQ,CAACJ,WAAW,CAClBhI,WAAC,CAACoD,cAAc,CAACzC,UAAU,CAACL,IAAI,CAAC+C,SAAS,CAAC,uBAAuB,CAAC,EAAE,CACnEwD,OAAO,CAAC,CAAC,CACV,CACH,CAAC;IACH;IAEA,MAAM0B,UAAwC,GAAG,EAAE;IACnDlI,IAAI,CAACuC,QAAQ,CACXA,cAAQ,CAACC,QAAQ,CAACC,KAAK,CAAC,CACtBC,iCAAkB,EAClB;MACEyF,KAAKA,CAACnI,IAAI,EAAE;QACV,MAAM;UAAEP,IAAI;UAAE8H;QAAW,CAAC,GAAGvH,IAAI;QACjC,IAAIuH,UAAU,CAACa,gBAAgB,CAAC;UAAEjB,MAAM,EAAE1H;QAAK,CAAC,CAAC,EAAE;UACjDyI,UAAU,CAACrB,OAAO,CAACU,UAAU,CAAC;QAChC;MACF;IACF,CAAC,CACF,CACH,CAAC;IAED,IAAIc,2BAA2B,GAAG,CAAC,CAACH,UAAU,CAAC1C,MAAM;IAErD,KAAK,MAAMe,SAAS,IAAI2B,UAAU,EAAE;MAClC5B,aAAa,CAACC,SAAS,EAAEjG,UAAU,CAACM,SAAS,EAAE4F,OAAO,EAAEpF,IAAI,CAAC;MAE7D,IAAIiH,2BAA2B,EAAE;QAC/B9B,SAAS,CAAC+B,IAAI,CAAC,UAAUf,UAAU,EAAE;UAEnC,IAAIA,UAAU,KAAKvH,IAAI,EAAE;YACvB,OAAO,IAAI;UACb;UAEA,IACEuH,UAAU,CAACgB,MAAM,CAAC,CAAC,IACnBhB,UAAU,CAACiB,aAAa,CAAC,CAAC,IAC1BjB,UAAU,CAACrC,yBAAyB,CAAC,CAAC,EACtC;YACAmD,2BAA2B,GAAG,KAAK;YACnC,OAAO,IAAI;UACb;QACF,CAAC,CAAC;MACJ;IACF;IAEA,IAAII,UAAU;IAEd,IAAInI,UAAU,CAACH,OAAO,EAAE;MACtBsI,UAAU,GAAIC,SAA8B,IAAK;QAC/C,MAAMC,QAAQ,GAAGhJ,WAAC,CAACoD,cAAc,CAC/BzC,UAAU,CAACL,IAAI,CAAC+C,SAAS,CAAC,uBAAuB,CAAC,EAClD,CAACwD,OAAO,CAAC,CAAC,CACZ,CAAC;QACD,OAAOkC,SAAS,GACZ/I,WAAC,CAAC0H,iBAAiB,CAAC,IAAI,EAAEqB,SAAS,EAAEC,QAAQ,CAAC,GAC9CA,QAAQ;MACd,CAAC;IACH,CAAC,MAAM;MACLF,UAAU,GAAIC,SAAmC,IAAK;QACpD,MAAME,YAA4B,GAAG,CAACpC,OAAO,CAAC,CAAC,CAAC;QAChD,IAAIkC,SAAS,IAAI,IAAI,EAAE;UACrBE,YAAY,CAAChG,IAAI,CAAC8F,SAAS,CAAC;QAC9B;QACA,OAAO/I,WAAC,CAACoD,cAAc,CACrBzC,UAAU,CAACL,IAAI,CAAC+C,SAAS,CAAC,2BAA2B,CAAC,EACtD4F,YACF,CAAC;MACH,CAAC;IACH;IAIA,MAAMC,SAAS,GAAGzH,IAAI,CAAC+B,GAAG,CAAC,MAAM,CAAC;IAClC,IAAI,CAAC0F,SAAS,CAACrD,MAAM,IAAI,CAACqD,SAAS,CAACC,GAAG,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC,EAAE;MAC7D3H,IAAI,CAAC4H,aAAa,CAChB,MAAM,EACNrJ,WAAC,CAACiI,eAAe,CACfS,2BAA2B,GAAG7B,OAAO,CAAC,CAAC,GAAGiC,UAAU,CAAC,CACvD,CACF,CAAC;IACH;IAEA,KAAK,MAAMQ,UAAU,IAAI3I,UAAU,CAACO,YAAY,EAAE;MAChDoI,UAAU,CACP9F,GAAG,CAAC,UAAU,CAAC,CACfwE,WAAW,CAACc,UAAU,CAACQ,UAAU,CAACxJ,IAAI,CAACwH,QAAQ,CAAC,CAAC;IACtD;EACF;EAKA,SAAS7B,UAAUA,CAAC3F,IAAmB,EAAEO,IAAe,EAAE;IACxD,MAAMS,KAAK,GAAGT,IAAI,GAAGA,IAAI,CAACS,KAAK,GAAGH,UAAU,CAACG,KAAK;IAElD,IAAIhB,IAAI,CAAC4D,IAAI,KAAK,QAAQ,EAAE;MAC1B,IAAI6F,aAAa,CAACzJ,IAAI,EAAEgB,KAAK,CAAC,EAAE;IAClC;IAEA,MAAM8E,SAAS,GAAG9F,IAAI,CAACwC,MAAM,GAAG,QAAQ,GAAG,UAAU;IACrD,MAAML,OAAO,GAAGtB,UAAU,CAACsB,OAAO,CAAC2D,SAAS,CAAC;IAE7C,MAAM4D,OAAO,GAAG1J,IAAI,CAAC4D,IAAI,KAAK,QAAQ,GAAG,OAAO,GAAG5D,IAAI,CAAC4D,IAAI;IAC5D,MAAMwC,GAAG,GACPlG,WAAC,CAACyJ,gBAAgB,CAAC3J,IAAI,CAACoG,GAAG,CAAC,IAAIlG,WAAC,CAAC0J,eAAe,CAAC5J,IAAI,CAACoG,GAAG,CAAC,GACvDlG,WAAC,CAAC2J,aAAa,CAACC,MAAM,CAAC9J,IAAI,CAACoG,GAAG,CAAC2D,KAAK,CAAC,CAAC,GACvC7J,WAAC,CAAC8J,aAAa,CAAChK,IAAI,CAAC;IAE3B,IAAIiK,EAAgB,GAAG/J,WAAC,CAACgK,YAAY,CAAClK,IAAI,CAAC;IAE3C,IAAIE,WAAC,CAACiK,eAAe,CAAC/D,GAAG,CAAC,EAAE;MAE1B,IAAIpG,IAAI,CAAC4D,IAAI,KAAK,QAAQ,EAAE;QAAA,IAAAwG,aAAA;QAG1BH,EAAE,IAAAG,aAAA,GACA,IAAAC,2BAAY,EAGV;UAAEC,EAAE,EAAElE,GAAG;UAAEpG,IAAI,EAAEA,IAAI;UAAEgB;QAAM,CAAC,EAC9BD,SAAS,EACTH,gBACF,CAAC,YAAAwJ,aAAA,GAAIH,EAAE;MACX;IACF,CAAC,MAAM;MAEL9H,OAAO,CAACE,WAAW,GAAG,IAAI;IAC5B;IAEA,IAAIkI,UAAsB;IAC1B,IACE,CAACpI,OAAO,CAACE,WAAW,IACpBF,OAAO,CAACI,GAAG,CAACiI,GAAG,CAAEpE,GAAG,CAAqB2D,KAAK,CAAC,EAC/C;MACAQ,UAAU,GAAGpI,OAAO,CAACI,GAAG,CAACmB,GAAG,CAAE0C,GAAG,CAAqB2D,KAAK,CAAC;MAC5DQ,UAAU,CAACb,OAAO,CAAC,GAAGO,EAAE;MAExB,IAAIP,OAAO,KAAK,OAAO,EAAE;QACvBa,UAAU,CAAC7G,GAAG,GAAG,IAAI;QACrB6G,UAAU,CAACE,GAAG,GAAG,IAAI;MACvB,CAAC,MAAM;QACLF,UAAU,CAACR,KAAK,GAAG,IAAI;MACzB;IACF,CAAC,MAAM;MACLQ,UAAU,GAAG;QACXnE,GAAG,EAEDA,GAAmB;QACrB,CAACsD,OAAO,GAAGO;MACb,CAAe;MACf9H,OAAO,CAACG,IAAI,CAACa,IAAI,CAACoH,UAAU,CAAC;MAE7B,IAAI,CAACpI,OAAO,CAACE,WAAW,EAAE;QACxBF,OAAO,CAACI,GAAG,CAACkI,GAAG,CAAErE,GAAG,CAAqB2D,KAAK,EAAEQ,UAAU,CAAC;MAC7D;IACF;EACF;EAEA,SAASd,aAAaA,CAACzJ,IAAmB,EAAEgB,KAAY,EAAE;IACxD,IAAIL,WAAW,CAAC+J,eAAe,IAAI,CAAC1K,IAAI,CAAC6E,UAAU,EAAE;MAEnD,IAAI;QAAE/E;MAAS,CAAC,GAAGe,UAAU;MAC7B,IAAI,CAACb,IAAI,CAACwC,MAAM,EAAE;QAChBmI,oBAAoB,CAAC,CAAC;QACtB7K,QAAQ,GAAGe,UAAU,CAACmB,UAAU;MAClC;MACA,MAAM4I,UAAU,GAAG1K,WAAC,CAACyH,gBAAgB,CACnCzH,WAAC,CAACE,SAAS,CAACN,QAAQ,CAAC,EACrBE,IAAI,CAACoG,GAAG,EACRpG,IAAI,CAAC6K,QAAQ,IAAI3K,WAAC,CAAC4K,SAAS,CAAC9K,IAAI,CAACoG,GAAG,CACvC,CAAC;MAED,IAAInG,IAAkB,GAAGC,WAAC,CAAC6K,kBAAkB,CAC3C,IAAI,EAEJ/K,IAAI,CAAC6D,MAAM,EACX7D,IAAI,CAAC2B,IAAI,EACT3B,IAAI,CAACgL,SAAS,EACdhL,IAAI,CAACiL,KACP,CAAC;MACD/K,WAAC,CAACG,QAAQ,CAACJ,IAAI,EAAED,IAAI,CAAC;MAEtB,MAAMoG,GAAG,GAAGlG,WAAC,CAAC8J,aAAa,CAAChK,IAAI,EAAEA,IAAI,CAACoG,GAAG,CAAC;MAC3C,IAAIlG,WAAC,CAACiK,eAAe,CAAC/D,GAAG,CAAC,EAAE;QAAA,IAAA8E,cAAA;QAE1BjL,IAAI,IAAAiL,cAAA,GACF,IAAAb,2BAAY,EACV;UACErK,IAAI,EAAEC,IAAI;UACVqK,EAAE,EAAElE,GAAG;UACPpF;QACF,CAAC,EACDD,SAAS,EACTH,gBACF,CAAC,YAAAsK,cAAA,GAAIjL,IAAI;MACb;MAEA,MAAMkL,IAAI,GAAGjL,WAAC,CAAC0G,mBAAmB,CAChC1G,WAAC,CAAC+H,oBAAoB,CAAC,GAAG,EAAE2C,UAAU,EAAE3K,IAAI,CAC9C,CAAC;MACDC,WAAC,CAACkL,gBAAgB,CAACD,IAAI,EAAEnL,IAAI,CAAC;MAC9Ba,UAAU,CAACc,IAAI,CAACwB,IAAI,CAACgI,IAAI,CAAC;MAC1B,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd;EAEA,SAASR,oBAAoBA,CAAA,EAAG;IAC9B,IAAI9J,UAAU,CAACmB,UAAU,KAAK,IAAI,EAAE;MAClCS,QAAQ,CAAC;QAAET,UAAU,EAAEnB,UAAU,CAACG,KAAK,CAACqK,qBAAqB,CAAC,OAAO;MAAE,CAAC,CAAC;MACzE,MAAMC,UAAU,GAAGpL,WAAC,CAACyH,gBAAgB,CACnC9G,UAAU,CAACf,QAAQ,EACnBI,WAAC,CAACmE,UAAU,CAAC,WAAW,CAC1B,CAAC;MACD,MAAMkH,gBAAgB,GAAGrL,WAAC,CAACsL,mBAAmB,CAAC,KAAK,EAAE,CACpDtL,WAAC,CAACuL,kBAAkB,CAAC5K,UAAU,CAACmB,UAAU,EAAEsJ,UAAU,CAAC,CACxD,CAAC;MAEFzK,UAAU,CAACc,IAAI,CAACwB,IAAI,CAACoI,gBAAgB,CAAC;IACxC;EACF;EAKA,SAAS7F,eAAeA,CACtBtE,YAA2C,EAC3CsK,MAAwB,EACxBnL,IAAgC,EAChC;IACAkC,QAAQ,CAAC;MACPhB,mBAAmB,EAAElB,IAAI;MACzBiB,eAAe,EAAEkK,MAAM;MACvBhK,cAAc,EAAE,IAAI;MACpBN;IACF,CAAC,CAAC;IAEF,MAAM;MAAEG;IAAU,CAAC,GAAGV,UAAU;IAEhCX,WAAC,CAACkL,gBAAgB,CAAC7J,SAAS,EAAEmK,MAAM,CAAC;IAGrCnK,SAAS,CAACsC,MAAM,GAAG6H,MAAM,CAAC7H,MAAM;IAEhC3D,WAAC,CAACG,QAAQ,CAACkB,SAAS,CAACI,IAAI,EAAE+J,MAAM,CAAC/J,IAAI,CAAC;IACvCJ,SAAS,CAACI,IAAI,CAACgK,UAAU,GAAGD,MAAM,CAAC/J,IAAI,CAACgK,UAAU;IAElDC,qBAAqB,CAAC,CAAC;EACzB;EAEA,SAASA,qBAAqBA,CAAA,EAAG;IAC/B,IAAI/K,UAAU,CAACgB,iBAAiB,EAAE;IAClChB,UAAU,CAACgB,iBAAiB,GAAG,IAAI;IAInC,IAAIhB,UAAU,CAACgL,sBAAsB,IAAIhL,UAAU,CAACiL,oBAAoB,EAAE;MACxErH,eAAe,CAAC,CAAC;IACnB;IAEA5D,UAAU,CAACc,IAAI,CAACwB,IAAI,CAACtC,UAAU,CAACU,SAAS,CAAC;IAE1CqE,kBAAkB,CAAC,CAAC;EACtB;EAKA,SAASA,kBAAkBA,CAAA,EAAG;IAC5B,IAAI,CAAC/E,UAAU,CAACQ,SAAS,IAAIR,UAAU,CAACiB,cAAc,EAAE;IAExD,MAAMZ,SAAS,GAAGX,IAAI,CAACS,KAAK,CAACqK,qBAAqB,CAAC,OAAO,CAAC;IAE3D5I,QAAQ,CAAC;MAAEX,cAAc,EAAE,IAAI;MAAEZ;IAAU,CAAC,CAAC;IAK7C,IAAI,CAACP,WAAW,CAACuG,0BAA0B,EAAE;MAC3CrG,UAAU,CAACc,IAAI,CAACyF,OAAO,CACrBlH,WAAC,CAACsL,mBAAmB,CAAC,KAAK,EAAE,CAC3BtL,WAAC,CAACuL,kBAAkB,CAClBvK,SAAS,EACThB,WAAC,CAACoD,cAAc,CAAC,IAAAyI,iCAAoB,EAAClL,UAAU,CAACL,IAAI,CAAC,EAAE,CACtDN,WAAC,CAACE,SAAS,CAACS,UAAU,CAACf,QAAQ,CAAC,CACjC,CACH,CAAC,CACF,CACH,CAAC;IACH;IAEAe,UAAU,CAACc,IAAI,CAACyF,OAAO,CACrBlH,WAAC,CAAC0G,mBAAmB,CACnB1G,WAAC,CAACoD,cAAc,CACdzC,UAAU,CAACL,IAAI,CAAC+C,SAAS,CACvB1C,UAAU,CAACH,OAAO,GAAG,eAAe,GAAG,UACzC,CAAC,EACD,CAACR,WAAC,CAACE,SAAS,CAACS,UAAU,CAACf,QAAQ,CAAC,EAAEI,WAAC,CAACE,SAAS,CAACS,UAAU,CAACM,SAAS,CAAC,CACtE,CACF,CACF,CAAC;EACH;EAEA,SAAS6K,kBAAkBA,CAAA,EAAG;IAC5B,MAAM;MAAE/J,WAAW;MAAEjC,IAAI;MAAEgB;IAAM,CAAC,GAAGH,UAAU;IAE/C,KAAK,MAAMoL,IAAI,IAAIjM,IAAI,CAAC2B,IAAI,CAACA,IAAI,EAAE;MACjC,IAAI,CAACzB,WAAC,CAACyD,aAAa,CAACsI,IAAI,CAAC,IAAI,CAACA,IAAI,CAACpB,QAAQ,EAAE;MAC9C,IAAI7J,KAAK,CAACkL,MAAM,CAACD,IAAI,CAAC7F,GAAG,EAAsB,IAAI,CAAC,EAAE;MAEtD,MAAMkE,EAAE,GAAGtJ,KAAK,CAACmL,gCAAgC,CAACF,IAAI,CAAC7F,GAAG,CAAC;MAC3DnE,WAAW,CAACwI,GAAG,CAACH,EAAE,CAAC7C,IAAI,EAAEwE,IAAI,CAAC7F,GAAG,CAAC;MAElC6F,IAAI,CAAC7F,GAAG,GAAGkE,EAAE;IACf;EACF;EAEA,SAAS8B,sBAAsBA,CAAA,EAAG;IAChC,MAAM;MAAEjL,SAAS;MAAEc;IAAY,CAAC,GAAGpB,UAAU;IAC7C,MAAMwL,aAAa,GAAG,EAAE;IACxB,MAAMC,WAAW,GAAG,EAAE;IAEtB,IAAIzL,UAAU,CAACQ,SAAS,EAAE;MACxB,IAAIkL,GAAG,GAAGrM,WAAC,CAACE,SAAS,CAACe,SAAS,CAAC;MAChC,IAAIN,UAAU,CAACS,aAAa,EAAE;QAC5BiL,GAAG,GAAGrM,WAAC,CAACoD,cAAc,CAACzC,UAAU,CAACL,IAAI,CAAC+C,SAAS,CAAC,iBAAiB,CAAC,EAAE,CACnEgJ,GAAG,CACJ,CAAC;QACF,IAAAC,6BAAc,EAACD,GAAG,CAAC;MACrB;MAEA,MAAME,KAAK,GACT5L,UAAU,CAACG,KAAK,CAACmL,gCAAgC,CAAChL,SAAS,CAAC;MAE9DkL,aAAa,CAAClJ,IAAI,CAACsJ,KAAK,CAAC;MACzBH,WAAW,CAACnJ,IAAI,CAACoJ,GAAG,CAAC;MAErB9J,QAAQ,CAAC;QAAEtB,SAAS,EAAEjB,WAAC,CAACE,SAAS,CAACqM,KAAK;MAAE,CAAC,CAAC;IAC7C;IAEA,KAAK,MAAM,CAAChF,IAAI,EAAEsC,KAAK,CAAC,IAAI9H,WAAW,EAAE;MACvCoK,aAAa,CAAClJ,IAAI,CAACjD,WAAC,CAACmE,UAAU,CAACoD,IAAI,CAAC,CAAC;MACtC6E,WAAW,CAACnJ,IAAI,CAAC4G,KAAK,CAAC;IACzB;IAEA,OAAO;MAAEsC,aAAa;MAAEC;IAAY,CAAC;EACvC;EAEA,SAASI,gBAAgBA,CACvBnM,IAAuB,EACvBC,IAAU,EACVC,cAAmC,EACnCC,OAAgB,EAChB;IACA+B,QAAQ,CAAC;MACP3B,MAAM,EAAEP,IAAI,CAACO,MAAM;MACnBE,KAAK,EAAET,IAAI,CAACS,KAAK;MACjBhB,IAAI,EAAEO,IAAI,CAACP,IAAI;MACfO,IAAI;MACJC,IAAI;MACJE;IACF,CAAC,CAAC;IAEF+B,QAAQ,CAAC;MACPxB,OAAO,EAAEJ,UAAU,CAACb,IAAI,CAACsK,EAAE;MAE3BxK,QAAQ,EAAEe,UAAU,CAACb,IAAI,CAACsK,EAAE,GACxBpK,WAAC,CAACmE,UAAU,CAACxD,UAAU,CAACb,IAAI,CAACsK,EAAE,CAAC7C,IAAI,CAAC,GACrC5G,UAAU,CAACG,KAAK,CAACqK,qBAAqB,CAAC,OAAO,CAAC;MACnDlK,SAAS,EAAEN,UAAU,CAACb,IAAI,CAAC2M,UAAU;MACrCtL,SAAS,EAAE,CAAC,CAACR,UAAU,CAACb,IAAI,CAAC2M,UAAU;MACvC5M,eAAe,EAAEG,WAAC,CAACgE,cAAc,CAAC,EAAE;IACtC,CAAC,CAAC;IAEFzB,QAAQ,CAAC;MACPnB,aAAa,EACXpB,WAAC,CAACqH,YAAY,CAAC1G,UAAU,CAACM,SAAS,CAAC,IACpCV,cAAc,CAAC+J,GAAG,CAAC3J,UAAU,CAACM,SAAS,CAACsG,IAAI,CAAC,IAC7C,CAAC5G,UAAU,CAACG,KAAK,CAAC4L,UAAU,CAC1B/L,UAAU,CAACM,SAAS,CAACsG,IAAI,EACT,IAClB;IACJ,CAAC,CAAC;IAEF,MAAM;MAAE3H,QAAQ;MAAEE,IAAI;MAAED;IAAgB,CAAC,GAAGc,UAAU;IAEtD4B,QAAQ,CAAC;MACPlB,SAAS,EAAE1B,gBAAgB,CAACC,QAAQ,EAAEC,eAAe,EAAEC,IAAI;IAC7D,CAAC,CAAC;IAEFgM,kBAAkB,CAAC,CAAC;IAEpB,MAAM;MAAErK;IAAK,CAAC,GAAGd,UAAU;IAC3B,MAAM;MAAEwL,aAAa;MAAEC;IAAY,CAAC,GAAGF,sBAAsB,CAAC,CAAC;IAE/D9H,SAAS,CAAC,CAAC;IAGX,IAAI,CAAC3D,WAAW,CAACkM,YAAY,EAAE;MAC7B9M,eAAe,CAAC4B,IAAI,CAACyF,OAAO,CAC1BlH,WAAC,CAAC0G,mBAAmB,CACnB1G,WAAC,CAACoD,cAAc,CAACzC,UAAU,CAACL,IAAI,CAAC+C,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAC5DrD,WAAC,CAACmH,cAAc,CAAC,CAAC,EAClBnH,WAAC,CAACE,SAAS,CAACS,UAAU,CAACf,QAAQ,CAAC,CACjC,CACH,CACF,CAAC;IACH;IAEA,MAAMgN,QAAQ,GAAGvM,IAAI,CAACwM,cAAc,CAAC,CAAC;IACtC,IAAIC,eAAe,GAAGnM,UAAU,CAACI,OAAO,IAAIU,IAAI,CAACoE,MAAM,KAAK,CAAC;IAC7D,IAAIiH,eAAe,IAAI,CAACF,QAAQ,EAAE;MAChC,KAAK,MAAML,KAAK,IAAI5L,UAAU,CAACU,SAAS,CAACsC,MAAM,EAAE;QAI/C,IAAI,CAAC3D,WAAC,CAACqH,YAAY,CAACkF,KAAK,CAAC,EAAE;UAC1BO,eAAe,GAAG,KAAK;UACvB;QACF;MACF;IACF;IAEA,MAAMrB,UAAU,GAAGqB,eAAe,GAC7BrL,IAAI,CAAC,CAAC,CAAC,CAAkDA,IAAI,CAC3DgK,UAAU,GACb,EAAE;IACN,IAAI,CAACmB,QAAQ,EAAE;MACbnB,UAAU,CAACxI,IAAI,CAACjD,WAAC,CAAC+M,SAAS,CAAC/M,WAAC,CAACgN,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;IAChE;IAEA,IAAIF,eAAe,EAAE;MAEnB,MAAM7B,IAAI,GAAGjL,WAAC,CAACgK,YAAY,CACzBvI,IAAI,CAAC,CAAC,CACR,CAAC;MACD,OAAOd,UAAU,CAACH,OAAO,GAAGyK,IAAI,GAAG/H,iBAAiB,CAAC,CAAC+H,IAAI,CAAC,CAAC;IAC9D;IAEA,IAAIlC,SAAuB,GAAG/I,WAAC,CAACE,SAAS,CAACS,UAAU,CAACf,QAAQ,CAAC;IAC9D,IAAI,CAACe,UAAU,CAACkB,iBAAiB,IAAI,CAAClB,UAAU,CAACH,OAAO,EAAE;MACxDuI,SAAS,GAAG7F,iBAAiB,CAAC,CAAC6F,SAAS,CAAC,CAAC;IAC5C;IAEAtH,IAAI,CAACwB,IAAI,CAACjD,WAAC,CAACiI,eAAe,CAACc,SAAS,CAAC,CAAC;IACvC,MAAMjB,SAAS,GAAG9H,WAAC,CAACiN,uBAAuB,CACzCd,aAAa,EACbnM,WAAC,CAACgE,cAAc,CAACvC,IAAI,EAAEgK,UAAU,CACnC,CAAC;IACD,OAAOzL,WAAC,CAACoD,cAAc,CAAC0E,SAAS,EAAEsE,WAAW,CAAC;EACjD;EAEA,OAAOI,gBAAgB,CAACnM,IAAI,EAAEC,IAAI,EAAEC,cAAc,EAAEC,OAAO,CAAC;AAC9D"}
\ No newline at end of file diff --git a/node_modules/@babel/plugin-transform-classes/package.json b/node_modules/@babel/plugin-transform-classes/package.json new file mode 100644 index 00000000..f9176586 --- /dev/null +++ b/node_modules/@babel/plugin-transform-classes/package.json @@ -0,0 +1,43 @@ +{ + "name": "@babel/plugin-transform-classes", + "version": "7.22.15", + "description": "Compile ES2015 classes to ES5", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-plugin-transform-classes" + }, + "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-classes", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "keywords": [ + "babel-plugin" + ], + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "devDependencies": { + "@babel/core": "^7.22.15", + "@babel/helper-plugin-test-runner": "^7.22.5", + "@babel/traverse": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" +}
\ No newline at end of file |
