summaryrefslogtreecommitdiff
path: root/node_modules/@babel/helper-create-class-features-plugin/lib
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-12-21 22:46:53 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-12-21 22:46:53 +0800
commitf06956efd2dc4bf77244a9fcce2b883a00b925af (patch)
tree0123cb73ce67f1f4b17e1d6cbabff076ee44e31b /node_modules/@babel/helper-create-class-features-plugin/lib
parent8d980c13970c15b6d2312b6fc4ac51698dd0d220 (diff)
updated node modules
Diffstat (limited to 'node_modules/@babel/helper-create-class-features-plugin/lib')
-rw-r--r--node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js4
-rw-r--r--node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js.map2
-rw-r--r--node_modules/@babel/helper-create-class-features-plugin/lib/features.js31
-rw-r--r--node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map2
-rw-r--r--node_modules/@babel/helper-create-class-features-plugin/lib/fields.js4
-rw-r--r--node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map2
-rw-r--r--node_modules/@babel/helper-create-class-features-plugin/lib/index.js15
-rw-r--r--node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map2
-rw-r--r--node_modules/@babel/helper-create-class-features-plugin/lib/misc.js38
-rw-r--r--node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map2
10 files changed, 67 insertions, 35 deletions
diff --git a/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js b/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js
index 887e8126..33af0cd8 100644
--- a/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js
+++ b/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js
@@ -124,7 +124,9 @@ function buildDecoratedClass(ref, path, elements, file) {
classPathDesc = "declarations.0.init." + classPathDesc;
}
return {
- instanceNodes: [_core.template.statement.ast`${_core.types.cloneNode(initializeId)}(this)`],
+ instanceNodes: [_core.template.statement.ast`
+ ${_core.types.cloneNode(initializeId)}(this)
+ `],
wrapClass(path) {
path.replaceWith(replacement);
return path.get(classPathDesc);
diff --git a/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js.map b/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js.map
index ab81512d..fc829aeb 100644
--- a/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js.map
+++ b/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js.map
@@ -1 +1 @@
-{"version":3,"names":["_core","require","_helperReplaceSupers","_helperFunctionName","hasOwnDecorators","node","_node$decorators","decorators","length","hasDecorators","body","some","prop","key","value","t","objectProperty","identifier","method","objectMethod","blockStatement","takeDecorators","result","arrayExpression","map","decorator","expression","undefined","getKey","computed","isIdentifier","stringLiteral","name","String","extractElementDescriptor","file","classRef","superRef","path","isMethod","isClassMethod","isPrivate","buildCodeFrameError","type","scope","isTSDeclareMethod","ReplaceSupers","methodPath","objectRef","refToPreserve","replace","properties","kind","static","booleanLiteral","filter","Boolean","id","transformed","toExpression","push","nameFunction","isClassProperty","template","statements","ast","buildUndefinedNode","remove","objectExpression","addDecorateHelper","addHelper","buildDecoratedClass","ref","elements","initializeId","generateUidIdentifier","isDeclaration","isStrict","isInStrictMode","superClass","cloneNode","superId","generateUidIdentifierBasedOnNode","classDecorators","definitions","element","abstract","wrapperCall","nullLiteral","arguments","directives","directive","directiveLiteral","replacement","classPathDesc","statement","instanceNodes","wrapClass","replaceWith","get"],"sources":["../src/decorators.ts"],"sourcesContent":["// TODO(Babel 8): Remove this file\n\nimport { types as t, template } from \"@babel/core\";\nimport type { File } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport nameFunction from \"@babel/helper-function-name\";\n\ntype Decoratable = Extract<t.Node, { decorators?: t.Decorator[] | null }>;\n\nexport function hasOwnDecorators(node: t.Class | t.ClassBody[\"body\"][number]) {\n // @ts-expect-error: 'decorators' not in TSIndexSignature\n return !!node.decorators?.length;\n}\n\nexport function hasDecorators(node: t.Class) {\n return hasOwnDecorators(node) || node.body.body.some(hasOwnDecorators);\n}\n\nfunction prop(key: string, value?: t.Expression) {\n if (!value) return null;\n return t.objectProperty(t.identifier(key), value);\n}\n\nfunction method(key: string, body: t.Statement[]) {\n return t.objectMethod(\n \"method\",\n t.identifier(key),\n [],\n t.blockStatement(body),\n );\n}\n\nfunction takeDecorators(node: Decoratable) {\n let result: t.ArrayExpression | undefined;\n if (node.decorators && node.decorators.length > 0) {\n result = t.arrayExpression(\n node.decorators.map(decorator => decorator.expression),\n );\n }\n node.decorators = undefined;\n return result;\n}\n\ntype AcceptedElement = Exclude<ClassElement, t.TSIndexSignature>;\ntype SupportedElement = Exclude<\n AcceptedElement,\n | t.ClassPrivateMethod\n | t.ClassPrivateProperty\n | t.ClassAccessorProperty\n | t.StaticBlock\n>;\n\nfunction getKey(node: SupportedElement) {\n if (node.computed) {\n return node.key;\n } else if (t.isIdentifier(node.key)) {\n return t.stringLiteral(node.key.name);\n } else {\n return t.stringLiteral(\n String(\n // A non-identifier non-computed key\n (node.key as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n .value,\n ),\n );\n }\n}\n\nfunction extractElementDescriptor(\n file: File,\n classRef: t.Identifier,\n superRef: t.Identifier,\n path: NodePath<AcceptedElement>,\n) {\n const isMethod = path.isClassMethod();\n if (path.isPrivate()) {\n throw path.buildCodeFrameError(\n `Private ${\n isMethod ? \"methods\" : \"fields\"\n } in decorated classes are not supported yet.`,\n );\n }\n if (path.node.type === \"ClassAccessorProperty\") {\n throw path.buildCodeFrameError(\n `Accessor properties are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.`,\n );\n }\n if (path.node.type === \"StaticBlock\") {\n throw path.buildCodeFrameError(\n `Static blocks are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.`,\n );\n }\n\n const { node, scope } = path as NodePath<SupportedElement>;\n\n if (!path.isTSDeclareMethod()) {\n new ReplaceSupers({\n methodPath: path as NodePath<\n Exclude<SupportedElement, t.TSDeclareMethod>\n >,\n objectRef: classRef,\n superRef,\n file,\n refToPreserve: classRef,\n }).replace();\n }\n\n const properties: t.ObjectExpression[\"properties\"] = [\n prop(\"kind\", t.stringLiteral(t.isClassMethod(node) ? node.kind : \"field\")),\n prop(\"decorators\", takeDecorators(node as Decoratable)),\n prop(\"static\", node.static && t.booleanLiteral(true)),\n prop(\"key\", getKey(node)),\n ].filter(Boolean);\n\n if (t.isClassMethod(node)) {\n const id = node.computed\n ? null\n : (node.key as\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral);\n const transformed = t.toExpression(node);\n properties.push(\n prop(\n \"value\",\n nameFunction({ node: transformed, id, scope }) || transformed,\n ),\n );\n } else if (t.isClassProperty(node) && node.value) {\n properties.push(\n method(\"value\", template.statements.ast`return ${node.value}`),\n );\n } else {\n properties.push(prop(\"value\", scope.buildUndefinedNode()));\n }\n\n path.remove();\n\n return t.objectExpression(properties);\n}\n\nfunction addDecorateHelper(file: File) {\n return file.addHelper(\"decorate\");\n}\n\ntype ClassElement = t.Class[\"body\"][\"body\"][number];\ntype ClassElementPath = NodePath<ClassElement>;\n\nexport function buildDecoratedClass(\n ref: t.Identifier,\n path: NodePath<t.Class>,\n elements: ClassElementPath[],\n file: File,\n) {\n const { node, scope } = path;\n const initializeId = scope.generateUidIdentifier(\"initialize\");\n const isDeclaration = node.id && path.isDeclaration();\n const isStrict = path.isInStrictMode();\n const { superClass } = node;\n\n node.type = \"ClassDeclaration\";\n if (!node.id) node.id = t.cloneNode(ref);\n\n let superId: t.Identifier;\n if (superClass) {\n superId = scope.generateUidIdentifierBasedOnNode(node.superClass, \"super\");\n node.superClass = superId;\n }\n\n const classDecorators = takeDecorators(node);\n const definitions = t.arrayExpression(\n elements\n .filter(\n element =>\n // @ts-expect-error Ignore TypeScript's abstract methods (see #10514)\n !element.node.abstract && element.node.type !== \"TSIndexSignature\",\n )\n .map(path =>\n extractElementDescriptor(\n file,\n node.id,\n superId,\n // @ts-expect-error TS can not exclude TSIndexSignature\n path,\n ),\n ),\n );\n\n const wrapperCall = template.expression.ast`\n ${addDecorateHelper(file)}(\n ${classDecorators || t.nullLiteral()},\n function (${initializeId}, ${superClass ? t.cloneNode(superId) : null}) {\n ${node}\n return { F: ${t.cloneNode(node.id)}, d: ${definitions} };\n },\n ${superClass}\n )\n ` as t.CallExpression & { arguments: [unknown, t.FunctionExpression] };\n\n if (!isStrict) {\n wrapperCall.arguments[1].body.directives.push(\n t.directive(t.directiveLiteral(\"use strict\")),\n );\n }\n\n let replacement: t.Node = wrapperCall;\n let classPathDesc = \"arguments.1.body.body.0\";\n if (isDeclaration) {\n replacement = template.statement.ast`let ${ref} = ${wrapperCall}`;\n classPathDesc = \"declarations.0.init.\" + classPathDesc;\n }\n\n return {\n instanceNodes: [template.statement.ast`${t.cloneNode(initializeId)}(this)`],\n wrapClass(path: NodePath<t.Class>) {\n path.replaceWith(replacement);\n return path.get(classPathDesc) as NodePath;\n },\n };\n}\n"],"mappings":"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"} \ No newline at end of file
+{"version":3,"names":["_core","require","_helperReplaceSupers","_helperFunctionName","hasOwnDecorators","node","_node$decorators","decorators","length","hasDecorators","body","some","prop","key","value","t","objectProperty","identifier","method","objectMethod","blockStatement","takeDecorators","result","arrayExpression","map","decorator","expression","undefined","getKey","computed","isIdentifier","stringLiteral","name","String","extractElementDescriptor","file","classRef","superRef","path","isMethod","isClassMethod","isPrivate","buildCodeFrameError","type","scope","isTSDeclareMethod","ReplaceSupers","methodPath","objectRef","refToPreserve","replace","properties","kind","static","booleanLiteral","filter","Boolean","id","transformed","toExpression","push","nameFunction","isClassProperty","template","statements","ast","buildUndefinedNode","remove","objectExpression","addDecorateHelper","addHelper","buildDecoratedClass","ref","elements","initializeId","generateUidIdentifier","isDeclaration","isStrict","isInStrictMode","superClass","cloneNode","superId","generateUidIdentifierBasedOnNode","classDecorators","definitions","element","abstract","wrapperCall","nullLiteral","arguments","directives","directive","directiveLiteral","replacement","classPathDesc","statement","instanceNodes","wrapClass","replaceWith","get"],"sources":["../src/decorators.ts"],"sourcesContent":["// TODO(Babel 8): Remove this file\n\nimport { types as t, template } from \"@babel/core\";\nimport type { File } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport nameFunction from \"@babel/helper-function-name\";\n\ntype Decoratable = Extract<t.Node, { decorators?: t.Decorator[] | null }>;\n\nexport function hasOwnDecorators(node: t.Class | t.ClassBody[\"body\"][number]) {\n // @ts-expect-error: 'decorators' not in TSIndexSignature\n return !!node.decorators?.length;\n}\n\nexport function hasDecorators(node: t.Class) {\n return hasOwnDecorators(node) || node.body.body.some(hasOwnDecorators);\n}\n\nfunction prop(key: string, value?: t.Expression) {\n if (!value) return null;\n return t.objectProperty(t.identifier(key), value);\n}\n\nfunction method(key: string, body: t.Statement[]) {\n return t.objectMethod(\n \"method\",\n t.identifier(key),\n [],\n t.blockStatement(body),\n );\n}\n\nfunction takeDecorators(node: Decoratable) {\n let result: t.ArrayExpression | undefined;\n if (node.decorators && node.decorators.length > 0) {\n result = t.arrayExpression(\n node.decorators.map(decorator => decorator.expression),\n );\n }\n node.decorators = undefined;\n return result;\n}\n\ntype AcceptedElement = Exclude<ClassElement, t.TSIndexSignature>;\ntype SupportedElement = Exclude<\n AcceptedElement,\n | t.ClassPrivateMethod\n | t.ClassPrivateProperty\n | t.ClassAccessorProperty\n | t.StaticBlock\n>;\n\nfunction getKey(node: SupportedElement) {\n if (node.computed) {\n return node.key;\n } else if (t.isIdentifier(node.key)) {\n return t.stringLiteral(node.key.name);\n } else {\n return t.stringLiteral(\n String(\n // A non-identifier non-computed key\n (node.key as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n .value,\n ),\n );\n }\n}\n\nfunction extractElementDescriptor(\n file: File,\n classRef: t.Identifier,\n superRef: t.Identifier,\n path: NodePath<AcceptedElement>,\n) {\n const isMethod = path.isClassMethod();\n if (path.isPrivate()) {\n throw path.buildCodeFrameError(\n `Private ${\n isMethod ? \"methods\" : \"fields\"\n } in decorated classes are not supported yet.`,\n );\n }\n if (path.node.type === \"ClassAccessorProperty\") {\n throw path.buildCodeFrameError(\n `Accessor properties are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.`,\n );\n }\n if (path.node.type === \"StaticBlock\") {\n throw path.buildCodeFrameError(\n `Static blocks are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.`,\n );\n }\n\n const { node, scope } = path as NodePath<SupportedElement>;\n\n if (!path.isTSDeclareMethod()) {\n new ReplaceSupers({\n methodPath: path as NodePath<\n Exclude<SupportedElement, t.TSDeclareMethod>\n >,\n objectRef: classRef,\n superRef,\n file,\n refToPreserve: classRef,\n }).replace();\n }\n\n const properties: t.ObjectExpression[\"properties\"] = [\n prop(\"kind\", t.stringLiteral(t.isClassMethod(node) ? node.kind : \"field\")),\n prop(\"decorators\", takeDecorators(node as Decoratable)),\n prop(\"static\", node.static && t.booleanLiteral(true)),\n prop(\"key\", getKey(node)),\n ].filter(Boolean);\n\n if (t.isClassMethod(node)) {\n const id = node.computed\n ? null\n : (node.key as\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral);\n const transformed = t.toExpression(node);\n properties.push(\n prop(\n \"value\",\n nameFunction({ node: transformed, id, scope }) || transformed,\n ),\n );\n } else if (t.isClassProperty(node) && node.value) {\n properties.push(\n method(\"value\", template.statements.ast`return ${node.value}`),\n );\n } else {\n properties.push(prop(\"value\", scope.buildUndefinedNode()));\n }\n\n path.remove();\n\n return t.objectExpression(properties);\n}\n\nfunction addDecorateHelper(file: File) {\n return file.addHelper(\"decorate\");\n}\n\ntype ClassElement = t.Class[\"body\"][\"body\"][number];\ntype ClassElementPath = NodePath<ClassElement>;\n\nexport function buildDecoratedClass(\n ref: t.Identifier,\n path: NodePath<t.Class>,\n elements: ClassElementPath[],\n file: File,\n) {\n const { node, scope } = path;\n const initializeId = scope.generateUidIdentifier(\"initialize\");\n const isDeclaration = node.id && path.isDeclaration();\n const isStrict = path.isInStrictMode();\n const { superClass } = node;\n\n node.type = \"ClassDeclaration\";\n if (!node.id) node.id = t.cloneNode(ref);\n\n let superId: t.Identifier;\n if (superClass) {\n superId = scope.generateUidIdentifierBasedOnNode(node.superClass, \"super\");\n node.superClass = superId;\n }\n\n const classDecorators = takeDecorators(node);\n const definitions = t.arrayExpression(\n elements\n .filter(\n element =>\n // @ts-expect-error Ignore TypeScript's abstract methods (see #10514)\n !element.node.abstract && element.node.type !== \"TSIndexSignature\",\n )\n .map(path =>\n extractElementDescriptor(\n file,\n node.id,\n superId,\n // @ts-expect-error TS can not exclude TSIndexSignature\n path,\n ),\n ),\n );\n\n const wrapperCall = template.expression.ast`\n ${addDecorateHelper(file)}(\n ${classDecorators || t.nullLiteral()},\n function (${initializeId}, ${superClass ? t.cloneNode(superId) : null}) {\n ${node}\n return { F: ${t.cloneNode(node.id)}, d: ${definitions} };\n },\n ${superClass}\n )\n ` as t.CallExpression & { arguments: [unknown, t.FunctionExpression] };\n\n if (!isStrict) {\n wrapperCall.arguments[1].body.directives.push(\n t.directive(t.directiveLiteral(\"use strict\")),\n );\n }\n\n let replacement: t.Node = wrapperCall;\n let classPathDesc = \"arguments.1.body.body.0\";\n if (isDeclaration) {\n replacement = template.statement.ast`let ${ref} = ${wrapperCall}`;\n classPathDesc = \"declarations.0.init.\" + classPathDesc;\n }\n\n return {\n instanceNodes: [\n template.statement.ast`\n ${t.cloneNode(initializeId)}(this)\n ` as t.ExpressionStatement,\n ],\n wrapClass(path: NodePath<t.Class>) {\n path.replaceWith(replacement);\n return path.get(classPathDesc) as NodePath;\n },\n };\n}\n"],"mappings":"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"} \ No newline at end of file
diff --git a/node_modules/@babel/helper-create-class-features-plugin/lib/features.js b/node_modules/@babel/helper-create-class-features-plugin/lib/features.js
index a4460a6f..047b4d5b 100644
--- a/node_modules/@babel/helper-create-class-features-plugin/lib/features.js
+++ b/node_modules/@babel/helper-create-class-features-plugin/lib/features.js
@@ -8,18 +8,24 @@ exports.enableFeature = enableFeature;
exports.isLoose = isLoose;
exports.shouldTransform = shouldTransform;
var _decorators = require("./decorators.js");
-const FEATURES = Object.freeze({
+const FEATURES = exports.FEATURES = Object.freeze({
fields: 1 << 1,
privateMethods: 1 << 2,
decorators: 1 << 3,
privateIn: 1 << 4,
staticBlocks: 1 << 5
});
-exports.FEATURES = FEATURES;
const featuresSameLoose = new Map([[FEATURES.fields, "@babel/plugin-transform-class-properties"], [FEATURES.privateMethods, "@babel/plugin-transform-private-methods"], [FEATURES.privateIn, "@babel/plugin-transform-private-property-in-object"]]);
const featuresKey = "@babel/plugin-class-features/featuresKey";
const looseKey = "@babel/plugin-class-features/looseKey";
-const looseLowPriorityKey = "@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing";
+{
+ var looseLowPriorityKey = "@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing";
+}
+{
+ var canIgnoreLoose = function (file, feature) {
+ return !!(file.get(looseLowPriorityKey) & feature);
+ };
+}
function enableFeature(file, feature, loose) {
if (!hasFeature(file, feature) || canIgnoreLoose(file, feature)) {
file.set(featuresKey, file.get(featuresKey) | feature);
@@ -34,17 +40,19 @@ function enableFeature(file, feature, loose) {
}
}
let resolvedLoose;
- let higherPriorityPluginName;
for (const [mask, name] of featuresSameLoose) {
if (!hasFeature(file, mask)) continue;
+ {
+ if (canIgnoreLoose(file, mask)) continue;
+ }
const loose = isLoose(file, mask);
- if (canIgnoreLoose(file, mask)) {
- continue;
- } else if (resolvedLoose === !loose) {
+ if (resolvedLoose === !loose) {
throw new Error("'loose' mode configuration must be the same for @babel/plugin-transform-class-properties, " + "@babel/plugin-transform-private-methods and " + "@babel/plugin-transform-private-property-in-object (when they are enabled).");
} else {
resolvedLoose = loose;
- higherPriorityPluginName = name;
+ {
+ var higherPriorityPluginName = name;
+ }
}
}
if (resolvedLoose !== undefined) {
@@ -64,10 +72,9 @@ function isLoose(file, feature) {
}
function setLoose(file, feature, loose) {
if (loose) file.set(looseKey, file.get(looseKey) | feature);else file.set(looseKey, file.get(looseKey) & ~feature);
- file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);
-}
-function canIgnoreLoose(file, feature) {
- return !!(file.get(looseLowPriorityKey) & feature);
+ {
+ file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);
+ }
}
function shouldTransform(path, file) {
let decoratorPath = null;
diff --git a/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map b/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map
index 86403e45..ae2a3d90 100644
--- a/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map
+++ b/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map
@@ -1 +1 @@
-{"version":3,"names":["_decorators","require","FEATURES","Object","freeze","fields","privateMethods","decorators","privateIn","staticBlocks","exports","featuresSameLoose","Map","featuresKey","looseKey","looseLowPriorityKey","enableFeature","file","feature","loose","hasFeature","canIgnoreLoose","set","get","setLoose","resolvedLoose","higherPriorityPluginName","mask","name","isLoose","Error","undefined","console","warn","shouldTransform","path","decoratorPath","publicFieldPath","privateFieldPath","privateMethodPath","staticBlockPath","hasOwnDecorators","node","el","isClassProperty","isClassPrivateProperty","isClassPrivateMethod","isStaticBlock","buildCodeFrameError"],"sources":["../src/features.ts"],"sourcesContent":["import type { File, types as t } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\nimport { hasOwnDecorators } from \"./decorators.ts\";\n\nexport const FEATURES = Object.freeze(\n process.env.BABEL_8_BREAKING\n ? {\n //classes: 1 << 0,\n fields: 1 << 1,\n privateMethods: 1 << 2,\n privateIn: 1 << 3,\n staticBlocks: 1 << 4,\n }\n : {\n //classes: 1 << 0,\n fields: 1 << 1,\n privateMethods: 1 << 2,\n decorators: 1 << 3,\n privateIn: 1 << 4,\n staticBlocks: 1 << 5,\n },\n);\n\nconst featuresSameLoose = new Map([\n [FEATURES.fields, \"@babel/plugin-transform-class-properties\"],\n [FEATURES.privateMethods, \"@babel/plugin-transform-private-methods\"],\n [FEATURES.privateIn, \"@babel/plugin-transform-private-property-in-object\"],\n]);\n\n// We can't use a symbol because this needs to always be the same, even if\n// this package isn't deduped by npm. e.g.\n// - node_modules/\n// - @babel/plugin-class-features\n// - @babel/plugin-proposal-decorators\n// - node_modules\n// - @babel-plugin-class-features\nconst featuresKey = \"@babel/plugin-class-features/featuresKey\";\nconst looseKey = \"@babel/plugin-class-features/looseKey\";\n\n// See https://github.com/babel/babel/issues/11622.\n// Since preset-env sets loose for the fields and private methods plugins, it can\n// cause conflicts with the loose mode set by an explicit plugin in the config.\n// To solve this problem, we ignore preset-env's loose mode if another plugin\n// explicitly sets it\n// The code to handle this logic doesn't check that \"low priority loose\" is always\n// the same. However, it is only set by the preset and not directly by users:\n// unless someone _wants_ to break it, it shouldn't be a problem.\nconst looseLowPriorityKey =\n \"@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing\";\n\nexport function enableFeature(file: File, feature: number, loose: boolean) {\n // We can't blindly enable the feature because, if it was already set,\n // \"loose\" can't be changed, so that\n // @babel/plugin-class-properties { loose: true }\n // @babel/plugin-class-properties { loose: false }\n // is transformed in loose mode.\n // We only enabled the feature if it was previously disabled.\n if (!hasFeature(file, feature) || canIgnoreLoose(file, feature)) {\n file.set(featuresKey, file.get(featuresKey) | feature);\n if (\n // @ts-expect-error comparing loose with internal private magic string\n loose ===\n \"#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error\"\n ) {\n setLoose(file, feature, true);\n file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);\n } else if (\n // @ts-expect-error comparing loose with internal private magic string\n loose ===\n \"#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error\"\n ) {\n setLoose(file, feature, false);\n file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);\n } else {\n setLoose(file, feature, loose);\n }\n }\n\n let resolvedLoose: boolean | undefined;\n let higherPriorityPluginName: string | undefined;\n\n for (const [mask, name] of featuresSameLoose) {\n if (!hasFeature(file, mask)) continue;\n\n const loose = isLoose(file, mask);\n\n if (canIgnoreLoose(file, mask)) {\n continue;\n } else if (resolvedLoose === !loose) {\n throw new Error(\n \"'loose' mode configuration must be the same for @babel/plugin-transform-class-properties, \" +\n \"@babel/plugin-transform-private-methods and \" +\n \"@babel/plugin-transform-private-property-in-object (when they are enabled).\",\n );\n } else {\n resolvedLoose = loose;\n higherPriorityPluginName = name;\n }\n }\n\n if (resolvedLoose !== undefined) {\n for (const [mask, name] of featuresSameLoose) {\n if (hasFeature(file, mask) && isLoose(file, mask) !== resolvedLoose) {\n setLoose(file, mask, resolvedLoose);\n console.warn(\n `Though the \"loose\" option was set to \"${!resolvedLoose}\" in your @babel/preset-env ` +\n `config, it will not be used for ${name} since the \"loose\" mode option was set to ` +\n `\"${resolvedLoose}\" for ${higherPriorityPluginName}.\\nThe \"loose\" option must be the ` +\n `same for @babel/plugin-transform-class-properties, @babel/plugin-transform-private-methods ` +\n `and @babel/plugin-transform-private-property-in-object (when they are enabled): you can ` +\n `silence this warning by explicitly adding\\n` +\n `\\t[\"${name}\", { \"loose\": ${resolvedLoose} }]\\n` +\n `to the \"plugins\" section of your Babel config.`,\n );\n }\n }\n }\n}\n\nfunction hasFeature(file: File, feature: number) {\n return !!(file.get(featuresKey) & feature);\n}\n\nexport function isLoose(file: File, feature: number) {\n return !!(file.get(looseKey) & feature);\n}\n\nfunction setLoose(file: File, feature: number, loose: boolean) {\n if (loose) file.set(looseKey, file.get(looseKey) | feature);\n else file.set(looseKey, file.get(looseKey) & ~feature);\n\n file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);\n}\n\nfunction canIgnoreLoose(file: File, feature: number) {\n return !!(file.get(looseLowPriorityKey) & feature);\n}\n\nexport function shouldTransform(path: NodePath<t.Class>, file: File): boolean {\n let decoratorPath: NodePath<t.Decorator> | null = null;\n let publicFieldPath: NodePath<t.ClassProperty> | null = null;\n let privateFieldPath: NodePath<t.ClassPrivateProperty> | null = null;\n let privateMethodPath: NodePath<t.ClassPrivateMethod> | null = null;\n let staticBlockPath: NodePath<t.StaticBlock> | null = null;\n\n if (hasOwnDecorators(path.node)) {\n decoratorPath = path.get(\"decorators.0\");\n }\n for (const el of path.get(\"body.body\")) {\n if (!decoratorPath && hasOwnDecorators(el.node)) {\n decoratorPath = el.get(\"decorators.0\");\n }\n if (!publicFieldPath && el.isClassProperty()) {\n publicFieldPath = el;\n }\n if (!privateFieldPath && el.isClassPrivateProperty()) {\n privateFieldPath = el;\n }\n // NOTE: path.isClassPrivateMethod() it isn't supported in <7.2.0\n if (!privateMethodPath && el.isClassPrivateMethod?.()) {\n privateMethodPath = el;\n }\n if (!staticBlockPath && el.isStaticBlock?.()) {\n staticBlockPath = el;\n }\n }\n\n if (decoratorPath && privateFieldPath) {\n throw privateFieldPath.buildCodeFrameError(\n \"Private fields in decorated classes are not supported yet.\",\n );\n }\n if (decoratorPath && privateMethodPath) {\n throw privateMethodPath.buildCodeFrameError(\n \"Private methods in decorated classes are not supported yet.\",\n );\n }\n\n if (decoratorPath && !hasFeature(file, FEATURES.decorators)) {\n throw path.buildCodeFrameError(\n \"Decorators are not enabled.\" +\n \"\\nIf you are using \" +\n '[\"@babel/plugin-proposal-decorators\", { \"version\": \"legacy\" }], ' +\n 'make sure it comes *before* \"@babel/plugin-transform-class-properties\" ' +\n \"and enable loose mode, like so:\\n\" +\n '\\t[\"@babel/plugin-proposal-decorators\", { \"version\": \"legacy\" }]\\n' +\n '\\t[\"@babel/plugin-transform-class-properties\", { \"loose\": true }]',\n );\n }\n\n if (privateMethodPath && !hasFeature(file, FEATURES.privateMethods)) {\n throw privateMethodPath.buildCodeFrameError(\n \"Class private methods are not enabled. \" +\n \"Please add `@babel/plugin-transform-private-methods` to your configuration.\",\n );\n }\n\n if (\n (publicFieldPath || privateFieldPath) &&\n !hasFeature(file, FEATURES.fields) &&\n // We want to allow enabling the private-methods plugin even without enabling\n // the class-properties plugin. Class fields will still be compiled in classes\n // that contain private methods.\n // This is already allowed with the other various class features plugins, but\n // it's because they can fallback to a transform separated from this helper.\n !hasFeature(file, FEATURES.privateMethods)\n ) {\n throw path.buildCodeFrameError(\n \"Class fields are not enabled. \" +\n \"Please add `@babel/plugin-transform-class-properties` to your configuration.\",\n );\n }\n\n if (staticBlockPath && !hasFeature(file, FEATURES.staticBlocks)) {\n throw path.buildCodeFrameError(\n \"Static class blocks are not enabled. \" +\n \"Please add `@babel/plugin-transform-class-static-block` to your configuration.\",\n );\n }\n\n if (decoratorPath || privateMethodPath || staticBlockPath) {\n // If one of those feature is used we know that its transform is\n // enabled, otherwise the previous checks throw.\n return true;\n }\n if (\n (publicFieldPath || privateFieldPath) &&\n hasFeature(file, FEATURES.fields)\n ) {\n return true;\n }\n\n return false;\n}\n"],"mappings":"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"} \ No newline at end of file
+{"version":3,"names":["_decorators","require","FEATURES","exports","Object","freeze","fields","privateMethods","decorators","privateIn","staticBlocks","featuresSameLoose","Map","featuresKey","looseKey","looseLowPriorityKey","canIgnoreLoose","file","feature","get","enableFeature","loose","hasFeature","set","setLoose","resolvedLoose","mask","name","isLoose","Error","higherPriorityPluginName","undefined","console","warn","shouldTransform","path","decoratorPath","publicFieldPath","privateFieldPath","privateMethodPath","staticBlockPath","hasOwnDecorators","node","el","isClassProperty","isClassPrivateProperty","isClassPrivateMethod","isStaticBlock","buildCodeFrameError"],"sources":["../src/features.ts"],"sourcesContent":["import type { File, types as t } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\nimport { hasOwnDecorators } from \"./decorators.ts\";\n\nexport const FEATURES = Object.freeze(\n process.env.BABEL_8_BREAKING\n ? {\n //classes: 1 << 0,\n fields: 1 << 1,\n privateMethods: 1 << 2,\n privateIn: 1 << 3,\n staticBlocks: 1 << 4,\n }\n : {\n //classes: 1 << 0,\n fields: 1 << 1,\n privateMethods: 1 << 2,\n decorators: 1 << 3,\n privateIn: 1 << 4,\n staticBlocks: 1 << 5,\n },\n);\n\nconst featuresSameLoose = new Map([\n [FEATURES.fields, \"@babel/plugin-transform-class-properties\"],\n [FEATURES.privateMethods, \"@babel/plugin-transform-private-methods\"],\n [FEATURES.privateIn, \"@babel/plugin-transform-private-property-in-object\"],\n]);\n\n// We can't use a symbol because this needs to always be the same, even if\n// this package isn't deduped by npm. e.g.\n// - node_modules/\n// - @babel/plugin-class-features\n// - @babel/plugin-proposal-decorators\n// - node_modules\n// - @babel-plugin-class-features\nconst featuresKey = \"@babel/plugin-class-features/featuresKey\";\nconst looseKey = \"@babel/plugin-class-features/looseKey\";\n\nif (!process.env.BABEL_8_BREAKING) {\n // See https://github.com/babel/babel/issues/11622.\n // Since preset-env sets loose for the fields and private methods plugins, it can\n // cause conflicts with the loose mode set by an explicit plugin in the config.\n // To solve this problem, we ignore preset-env's loose mode if another plugin\n // explicitly sets it\n // The code to handle this logic doesn't check that \"low priority loose\" is always\n // the same. However, it is only set by the preset and not directly by users:\n // unless someone _wants_ to break it, it shouldn't be a problem.\n // eslint-disable-next-line no-var\n var looseLowPriorityKey =\n \"@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n // eslint-disable-next-line no-var\n var canIgnoreLoose = function (file: File, feature: number) {\n return !!(file.get(looseLowPriorityKey) & feature);\n };\n}\n\nexport function enableFeature(file: File, feature: number, loose: boolean) {\n // We can't blindly enable the feature because, if it was already set,\n // \"loose\" can't be changed, so that\n // @babel/plugin-class-properties { loose: true }\n // @babel/plugin-class-properties { loose: false }\n // is transformed in loose mode.\n // We only enabled the feature if it was previously disabled.\n if (process.env.BABEL_8_BREAKING) {\n if (!hasFeature(file, feature)) {\n file.set(featuresKey, file.get(featuresKey) | feature);\n setLoose(file, feature, loose);\n }\n } else if (!hasFeature(file, feature) || canIgnoreLoose(file, feature)) {\n file.set(featuresKey, file.get(featuresKey) | feature);\n if (\n // @ts-expect-error comparing loose with internal private magic string\n loose ===\n \"#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error\"\n ) {\n setLoose(file, feature, true);\n file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);\n } else if (\n // @ts-expect-error comparing loose with internal private magic string\n loose ===\n \"#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error\"\n ) {\n setLoose(file, feature, false);\n file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);\n } else {\n setLoose(file, feature, loose);\n }\n }\n\n let resolvedLoose: boolean | undefined;\n for (const [mask, name] of featuresSameLoose) {\n if (!hasFeature(file, mask)) continue;\n if (!process.env.BABEL_8_BREAKING) {\n if (canIgnoreLoose(file, mask)) continue;\n }\n\n const loose = isLoose(file, mask);\n\n if (resolvedLoose === !loose) {\n throw new Error(\n \"'loose' mode configuration must be the same for @babel/plugin-transform-class-properties, \" +\n \"@babel/plugin-transform-private-methods and \" +\n \"@babel/plugin-transform-private-property-in-object (when they are enabled).\",\n );\n } else {\n resolvedLoose = loose;\n\n if (!process.env.BABEL_8_BREAKING) {\n // eslint-disable-next-line no-var\n var higherPriorityPluginName = name;\n }\n }\n }\n\n if (!process.env.BABEL_8_BREAKING && resolvedLoose !== undefined) {\n for (const [mask, name] of featuresSameLoose) {\n if (hasFeature(file, mask) && isLoose(file, mask) !== resolvedLoose) {\n setLoose(file, mask, resolvedLoose);\n console.warn(\n `Though the \"loose\" option was set to \"${!resolvedLoose}\" in your @babel/preset-env ` +\n `config, it will not be used for ${name} since the \"loose\" mode option was set to ` +\n `\"${resolvedLoose}\" for ${higherPriorityPluginName}.\\nThe \"loose\" option must be the ` +\n `same for @babel/plugin-transform-class-properties, @babel/plugin-transform-private-methods ` +\n `and @babel/plugin-transform-private-property-in-object (when they are enabled): you can ` +\n `silence this warning by explicitly adding\\n` +\n `\\t[\"${name}\", { \"loose\": ${resolvedLoose} }]\\n` +\n `to the \"plugins\" section of your Babel config.`,\n );\n }\n }\n }\n}\n\nfunction hasFeature(file: File, feature: number) {\n return !!(file.get(featuresKey) & feature);\n}\n\nexport function isLoose(file: File, feature: number) {\n return !!(file.get(looseKey) & feature);\n}\n\nfunction setLoose(file: File, feature: number, loose: boolean) {\n if (loose) file.set(looseKey, file.get(looseKey) | feature);\n else file.set(looseKey, file.get(looseKey) & ~feature);\n\n if (!process.env.BABEL_8_BREAKING) {\n file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);\n }\n}\n\nexport function shouldTransform(path: NodePath<t.Class>, file: File): boolean {\n let decoratorPath: NodePath<t.Decorator> | null = null;\n let publicFieldPath: NodePath<t.ClassProperty> | null = null;\n let privateFieldPath: NodePath<t.ClassPrivateProperty> | null = null;\n let privateMethodPath: NodePath<t.ClassPrivateMethod> | null = null;\n let staticBlockPath: NodePath<t.StaticBlock> | null = null;\n\n if (hasOwnDecorators(path.node)) {\n decoratorPath = path.get(\"decorators.0\");\n }\n for (const el of path.get(\"body.body\")) {\n if (!decoratorPath && hasOwnDecorators(el.node)) {\n decoratorPath = el.get(\"decorators.0\");\n }\n if (!publicFieldPath && el.isClassProperty()) {\n publicFieldPath = el;\n }\n if (!privateFieldPath && el.isClassPrivateProperty()) {\n privateFieldPath = el;\n }\n // NOTE: path.isClassPrivateMethod() it isn't supported in <7.2.0\n if (!privateMethodPath && el.isClassPrivateMethod?.()) {\n privateMethodPath = el;\n }\n if (!staticBlockPath && el.isStaticBlock?.()) {\n staticBlockPath = el;\n }\n }\n\n if (decoratorPath && privateFieldPath) {\n throw privateFieldPath.buildCodeFrameError(\n \"Private fields in decorated classes are not supported yet.\",\n );\n }\n if (decoratorPath && privateMethodPath) {\n throw privateMethodPath.buildCodeFrameError(\n \"Private methods in decorated classes are not supported yet.\",\n );\n }\n\n if (decoratorPath && !hasFeature(file, FEATURES.decorators)) {\n throw path.buildCodeFrameError(\n \"Decorators are not enabled.\" +\n \"\\nIf you are using \" +\n '[\"@babel/plugin-proposal-decorators\", { \"version\": \"legacy\" }], ' +\n 'make sure it comes *before* \"@babel/plugin-transform-class-properties\" ' +\n \"and enable loose mode, like so:\\n\" +\n '\\t[\"@babel/plugin-proposal-decorators\", { \"version\": \"legacy\" }]\\n' +\n '\\t[\"@babel/plugin-transform-class-properties\", { \"loose\": true }]',\n );\n }\n\n if (privateMethodPath && !hasFeature(file, FEATURES.privateMethods)) {\n throw privateMethodPath.buildCodeFrameError(\n \"Class private methods are not enabled. \" +\n \"Please add `@babel/plugin-transform-private-methods` to your configuration.\",\n );\n }\n\n if (\n (publicFieldPath || privateFieldPath) &&\n !hasFeature(file, FEATURES.fields) &&\n // We want to allow enabling the private-methods plugin even without enabling\n // the class-properties plugin. Class fields will still be compiled in classes\n // that contain private methods.\n // This is already allowed with the other various class features plugins, but\n // it's because they can fallback to a transform separated from this helper.\n !hasFeature(file, FEATURES.privateMethods)\n ) {\n throw path.buildCodeFrameError(\n \"Class fields are not enabled. \" +\n \"Please add `@babel/plugin-transform-class-properties` to your configuration.\",\n );\n }\n\n if (staticBlockPath && !hasFeature(file, FEATURES.staticBlocks)) {\n throw path.buildCodeFrameError(\n \"Static class blocks are not enabled. \" +\n \"Please add `@babel/plugin-transform-class-static-block` to your configuration.\",\n );\n }\n\n if (decoratorPath || privateMethodPath || staticBlockPath) {\n // If one of those feature is used we know that its transform is\n // enabled, otherwise the previous checks throw.\n return true;\n }\n if (\n (publicFieldPath || privateFieldPath) &&\n hasFeature(file, FEATURES.fields)\n ) {\n return true;\n }\n\n return false;\n}\n"],"mappings":"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"} \ No newline at end of file
diff --git a/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js b/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js
index 253bc0cd..981cf0b3 100644
--- a/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js
+++ b/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js
@@ -699,6 +699,7 @@ function buildFieldsInitNodes(ref, superRef, props, privateNamesMap, file, setPu
let injectSuperRef;
const staticNodes = [];
const instanceNodes = [];
+ let lastInstanceNodeReturnsThis = false;
const pureStaticNodes = [];
let classBindingNode = null;
const getSuperRef = _core.types.isIdentifier(superRef) ? () => superRef : () => {
@@ -739,6 +740,7 @@ function buildFieldsInitNodes(ref, superRef, props, privateNamesMap, file, setPu
classRefFlags |= 2;
}
}
+ lastInstanceNodeReturnsThis = false;
switch (true) {
case isStaticBlock:
{
@@ -790,6 +792,7 @@ function buildFieldsInitNodes(ref, superRef, props, privateNamesMap, file, setPu
instanceNodes.push(buildPublicFieldInitLoose(_core.types.thisExpression(), prop));
break;
case isInstance && isPublic && isField && !setPublicClassFields:
+ lastInstanceNodeReturnsThis = true;
instanceNodes.push(buildPublicFieldInitSpec(_core.types.thisExpression(), prop, file));
break;
default:
@@ -802,6 +805,7 @@ function buildFieldsInitNodes(ref, superRef, props, privateNamesMap, file, setPu
return {
staticNodes: staticNodes.filter(Boolean),
instanceNodes: instanceNodes.filter(Boolean),
+ lastInstanceNodeReturnsThis,
pureStaticNodes: pureStaticNodes.filter(Boolean),
classBindingNode,
wrapClass(path) {
diff --git a/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map b/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map
index 645a5dd8..90ad5c6d 100644
--- a/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map
+++ b/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map
@@ -1 +1 @@
-{"version":3,"names":["_core","require","_helperReplaceSupers","_helperEnvironmentVisitor","_helperMemberExpressionToFunctions","_helperOptimiseCallExpression","_helperAnnotateAsPure","_helperSkipTransparentExpressionWrappers","ts","buildPrivateNamesMap","props","privateNamesMap","Map","prop","isPrivate","name","node","key","id","update","has","get","scope","generateUidIdentifier","static","method","isProperty","isClassPrivateMethod","kind","getId","setId","methodId","set","buildPrivateNamesNodes","privateFieldsAsProperties","privateFieldsAsSymbols","state","initNodes","value","isStatic","isMethod","isAccessor","t","cloneNode","init","callExpression","addHelper","stringLiteral","identifier","newExpression","annotateAsPure","push","template","statement","ast","privateNameVisitorFactory","visitor","nestedVisitor","traverse","visitors","merge","Object","assign","environmentVisitor","privateNameVisitor","Class","path","body","visiblePrivateNames","redeclared","delete","length","skipKey","PrivateName","noDocumentAll","parentPath","isMemberExpression","property","isOptionalMemberExpression","includes","handle","unshadow","innerBinding","_scope","hasBinding","bindingIdentifierEquals","rename","parent","buildCheckInRHS","rhs","file","inRHSIsObject","availableHelper","privateInVisitor","BinaryExpression","operator","left","right","isPrivateName","classRef","replaceWith","expression","privateNameHandlerSpec","memoise","member","count","object","memo","maybeGenerateMemoised","memoiser","receiver","helperName","sequenceExpression","console","warn","boundGet","memberExpression","destructureSet","helper","_unused","Error","call","args","optimiseCall","optionalCall","privateNameHandlerLoose","BASE","REF","PROP","simpleSet","optionalCallExpression","transformPrivateNamesUsage","ref","size","handler","memberExpressionToFunctions","buildPrivateFieldInitLoose","buildUndefinedNode","inheritPropComments","buildPrivateInstanceFieldInitSpec","thisExpression","buildPrivateStaticFieldInitSpec","privateName","initAdded","buildPrivateMethodInitLoose","buildPrivateInstanceMethodInitSpec","buildPrivateAccessorInitialization","buildPrivateInstanceMethodInitialization","buildPublicFieldInitLoose","computed","expressionStatement","assignmentExpression","isLiteral","buildPublicFieldInitSpec","buildPrivateStaticMethodInitLoose","buildPrivateMethodDeclaration","getterDeclared","setterDeclared","params","generator","async","isGetter","isSetter","declId","functionDeclaration","thisContextVisitor","UnaryExpression","argument","skipTransparentExprWrapperNodes","isThisExpression","booleanLiteral","ThisExpression","needsClassRef","MetaProperty","meta","innerReferencesVisitor","ReferencedIdentifier","replaceThisContext","innerBindingRef","_state$classRef","isNameOrLength","type","inheritLeadingComments","inheritInnerComments","buildFieldsInitNodes","superRef","setPublicClassFields","constantSuper","_ref","_ref2","classRefFlags","injectSuperRef","staticNodes","instanceNodes","pureStaticNodes","classBindingNode","getSuperRef","isIdentifier","_injectSuperRef","generateUidIdentifierBasedOnNode","classRefForInnerBinding","isClassProperty","assertFieldTransformed","isStaticBlock","isInstance","isPublic","isField","ReplaceSupers","methodPath","refToPreserve","getObjectRef","replace","replaced","blockBody","isExpressionStatement","inheritsComments","unshift","filter","Boolean","wrapClass","leadingComments","remove","superClass","isClassExpression"],"sources":["../src/fields.ts"],"sourcesContent":["import { template, traverse, types as t } from \"@babel/core\";\nimport type { File } from \"@babel/core\";\nimport type { NodePath, Visitor, Scope } from \"@babel/traverse\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport environmentVisitor from \"@babel/helper-environment-visitor\";\nimport memberExpressionToFunctions from \"@babel/helper-member-expression-to-functions\";\nimport type {\n Handler,\n HandlerState,\n} from \"@babel/helper-member-expression-to-functions\";\nimport optimiseCall from \"@babel/helper-optimise-call-expression\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { skipTransparentExprWrapperNodes } from \"@babel/helper-skip-transparent-expression-wrappers\";\n\nimport * as ts from \"./typescript.ts\";\n\ninterface PrivateNameMetadata {\n id: t.Identifier;\n static: boolean;\n method: boolean;\n getId?: t.Identifier;\n setId?: t.Identifier;\n methodId?: t.Identifier;\n initAdded?: boolean;\n getterDeclared?: boolean;\n setterDeclared?: boolean;\n}\n\ntype PrivateNamesMap = Map<string, PrivateNameMetadata>;\n\nexport function buildPrivateNamesMap(props: PropPath[]) {\n const privateNamesMap: PrivateNamesMap = new Map();\n for (const prop of props) {\n if (prop.isPrivate()) {\n const { name } = prop.node.key.id;\n const update: PrivateNameMetadata = privateNamesMap.has(name)\n ? privateNamesMap.get(name)\n : {\n id: prop.scope.generateUidIdentifier(name),\n static: prop.node.static,\n method: !prop.isProperty(),\n };\n if (prop.isClassPrivateMethod()) {\n if (prop.node.kind === \"get\") {\n update.getId = prop.scope.generateUidIdentifier(`get_${name}`);\n } else if (prop.node.kind === \"set\") {\n update.setId = prop.scope.generateUidIdentifier(`set_${name}`);\n } else if (prop.node.kind === \"method\") {\n update.methodId = prop.scope.generateUidIdentifier(name);\n }\n }\n privateNamesMap.set(name, update);\n }\n }\n return privateNamesMap;\n}\n\nexport function buildPrivateNamesNodes(\n privateNamesMap: PrivateNamesMap,\n privateFieldsAsProperties: boolean,\n privateFieldsAsSymbols: boolean,\n state: File,\n) {\n const initNodes: t.Statement[] = [];\n\n for (const [name, value] of privateNamesMap) {\n // - When the privateFieldsAsProperties assumption is enabled,\n // both static and instance fields are transpiled using a\n // secret non-enumerable property. Hence, we also need to generate that\n // key (using the classPrivateFieldLooseKey helper).\n // - When the privateFieldsAsSymbols assumption is enabled,\n // both static and instance fields are transpiled using a\n // unique Symbol to define a non-enumerable property.\n // - In spec mode, only instance fields need a \"private name\" initializer\n // because static fields are directly assigned to a variable in the\n // buildPrivateStaticFieldInitSpec function.\n const { static: isStatic, method: isMethod, getId, setId } = value;\n const isAccessor = getId || setId;\n const id = t.cloneNode(value.id);\n\n let init: t.Expression;\n\n if (privateFieldsAsProperties) {\n init = t.callExpression(state.addHelper(\"classPrivateFieldLooseKey\"), [\n t.stringLiteral(name),\n ]);\n } else if (privateFieldsAsSymbols) {\n init = t.callExpression(t.identifier(\"Symbol\"), [t.stringLiteral(name)]);\n } else if (!isStatic) {\n init = t.newExpression(\n t.identifier(!isMethod || isAccessor ? \"WeakMap\" : \"WeakSet\"),\n [],\n );\n }\n\n if (init) {\n annotateAsPure(init);\n initNodes.push(template.statement.ast`var ${id} = ${init}`);\n }\n }\n\n return initNodes;\n}\n\ninterface PrivateNameVisitorState {\n privateNamesMap: PrivateNamesMap;\n privateFieldsAsProperties: boolean;\n redeclared?: string[];\n}\n\n// Traverses the class scope, handling private name references. If an inner\n// class redeclares the same private name, it will hand off traversal to the\n// restricted visitor (which doesn't traverse the inner class's inner scope).\nfunction privateNameVisitorFactory<S>(\n visitor: Visitor<PrivateNameVisitorState & S>,\n) {\n // Traverses the outer portion of a class, without touching the class's inner\n // scope, for private names.\n const nestedVisitor = traverse.visitors.merge([\n {\n ...visitor,\n },\n environmentVisitor,\n ]);\n\n const privateNameVisitor: Visitor<PrivateNameVisitorState & S> = {\n ...visitor,\n\n Class(path) {\n const { privateNamesMap } = this;\n const body = path.get(\"body.body\");\n\n const visiblePrivateNames = new Map(privateNamesMap);\n const redeclared = [];\n for (const prop of body) {\n if (!prop.isPrivate()) continue;\n const { name } = prop.node.key.id;\n visiblePrivateNames.delete(name);\n redeclared.push(name);\n }\n\n // If the class doesn't redeclare any private fields, we can continue with\n // our overall traversal.\n if (!redeclared.length) {\n return;\n }\n\n // This class redeclares some private field. We need to process the outer\n // environment with access to all the outer privates, then we can process\n // the inner environment with only the still-visible outer privates.\n path.get(\"body\").traverse(nestedVisitor, {\n ...this,\n redeclared,\n });\n path.traverse(privateNameVisitor, {\n ...this,\n privateNamesMap: visiblePrivateNames,\n });\n\n // We'll eventually hit this class node again with the overall Class\n // Features visitor, which'll process the redeclared privates.\n path.skipKey(\"body\");\n },\n };\n\n return privateNameVisitor;\n}\n\ninterface PrivateNameState {\n privateNamesMap: PrivateNamesMap;\n classRef: t.Identifier;\n file: File;\n noDocumentAll: boolean;\n innerBinding?: t.Identifier;\n}\n\nconst privateNameVisitor = privateNameVisitorFactory<\n HandlerState<PrivateNameState> & PrivateNameState\n>({\n PrivateName(path, { noDocumentAll }) {\n const { privateNamesMap, redeclared } = this;\n const { node, parentPath } = path;\n\n if (\n !parentPath.isMemberExpression({ property: node }) &&\n !parentPath.isOptionalMemberExpression({ property: node })\n ) {\n return;\n }\n const { name } = node.id;\n if (!privateNamesMap.has(name)) return;\n if (redeclared && redeclared.includes(name)) return;\n\n this.handle(parentPath, noDocumentAll);\n },\n});\n\n// rename all bindings that shadows innerBinding\nfunction unshadow(\n name: string,\n scope: Scope,\n innerBinding: t.Identifier | undefined,\n) {\n // in some cases, scope.getBinding(name) === undefined\n // so we check hasBinding to avoid keeping looping\n // see: https://github.com/babel/babel/pull/13656#discussion_r686030715\n while (\n scope?.hasBinding(name) &&\n !scope.bindingIdentifierEquals(name, innerBinding)\n ) {\n scope.rename(name);\n scope = scope.parent;\n }\n}\n\nexport function buildCheckInRHS(\n rhs: t.Expression,\n file: File,\n inRHSIsObject?: boolean,\n) {\n if (inRHSIsObject || !file.availableHelper?.(\"checkInRHS\")) return rhs;\n return t.callExpression(file.addHelper(\"checkInRHS\"), [rhs]);\n}\n\nconst privateInVisitor = privateNameVisitorFactory<{\n classRef: t.Identifier;\n file: File;\n innerBinding?: t.Identifier;\n}>({\n BinaryExpression(path, { file }) {\n const { operator, left, right } = path.node;\n if (operator !== \"in\") return;\n if (!t.isPrivateName(left)) return;\n\n const { privateFieldsAsProperties, privateNamesMap, redeclared } = this;\n\n const { name } = left.id;\n\n if (!privateNamesMap.has(name)) return;\n if (redeclared && redeclared.includes(name)) return;\n\n // if there are any local variable shadowing classRef, unshadow it\n // see #12960\n unshadow(this.classRef.name, path.scope, this.innerBinding);\n\n if (privateFieldsAsProperties) {\n const { id } = privateNamesMap.get(name);\n path.replaceWith(template.expression.ast`\n Object.prototype.hasOwnProperty.call(${buildCheckInRHS(\n right,\n file,\n )}, ${t.cloneNode(id)})\n `);\n return;\n }\n\n const { id, static: isStatic } = privateNamesMap.get(name);\n\n if (isStatic) {\n path.replaceWith(\n template.expression.ast`${buildCheckInRHS(\n right,\n file,\n )} === ${t.cloneNode(this.classRef)}`,\n );\n return;\n }\n\n path.replaceWith(\n template.expression.ast`${t.cloneNode(id)}.has(${buildCheckInRHS(\n right,\n file,\n )})`,\n );\n },\n});\n\ninterface Receiver {\n receiver(\n this: HandlerState<PrivateNameState> & PrivateNameState,\n member: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n ): t.Expression;\n}\n\nconst privateNameHandlerSpec: Handler<PrivateNameState & Receiver> & Receiver =\n {\n memoise(member, count) {\n const { scope } = member;\n const { object } = member.node as { object: t.Expression };\n\n const memo = scope.maybeGenerateMemoised(object);\n if (!memo) {\n return;\n }\n\n this.memoiser.set(object, memo, count);\n },\n\n receiver(member) {\n const { object } = member.node as { object: t.Expression };\n\n if (this.memoiser.has(object)) {\n return t.cloneNode(this.memoiser.get(object));\n }\n\n return t.cloneNode(object);\n },\n\n get(member) {\n const { classRef, privateNamesMap, file, innerBinding } = this;\n const { name } = (member.node.property as t.PrivateName).id;\n const {\n id,\n static: isStatic,\n method: isMethod,\n methodId,\n getId,\n setId,\n } = privateNamesMap.get(name);\n const isAccessor = getId || setId;\n\n if (isStatic) {\n // NOTE: This package has a peerDependency on @babel/core@^7.0.0, but these\n // helpers have been introduced in @babel/helpers@7.1.0.\n const helperName =\n isMethod && !isAccessor\n ? \"classStaticPrivateMethodGet\"\n : \"classStaticPrivateFieldSpecGet\";\n\n // if there are any local variable shadowing classRef, unshadow it\n // see #12960\n unshadow(classRef.name, member.scope, innerBinding);\n\n return t.callExpression(file.addHelper(helperName), [\n this.receiver(member),\n t.cloneNode(classRef),\n t.cloneNode(id),\n ]);\n }\n\n if (isMethod) {\n if (isAccessor) {\n if (!getId && setId) {\n if (file.availableHelper(\"writeOnlyError\")) {\n return t.sequenceExpression([\n this.receiver(member),\n t.callExpression(file.addHelper(\"writeOnlyError\"), [\n t.stringLiteral(`#${name}`),\n ]),\n ]);\n }\n console.warn(\n `@babel/helpers is outdated, update it to silence this warning.`,\n );\n }\n return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n this.receiver(member),\n t.cloneNode(id),\n ]);\n }\n return t.callExpression(file.addHelper(\"classPrivateMethodGet\"), [\n this.receiver(member),\n t.cloneNode(id),\n t.cloneNode(methodId),\n ]);\n }\n return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n this.receiver(member),\n t.cloneNode(id),\n ]);\n },\n\n boundGet(member) {\n this.memoise(member, 1);\n\n return t.callExpression(\n t.memberExpression(this.get(member), t.identifier(\"bind\")),\n [this.receiver(member)],\n );\n },\n\n set(member, value) {\n const { classRef, privateNamesMap, file } = this;\n const { name } = (member.node.property as t.PrivateName).id;\n const {\n id,\n static: isStatic,\n method: isMethod,\n setId,\n getId,\n } = privateNamesMap.get(name);\n const isAccessor = getId || setId;\n\n if (isStatic) {\n const helperName =\n isMethod && !isAccessor\n ? \"classStaticPrivateMethodSet\"\n : \"classStaticPrivateFieldSpecSet\";\n\n return t.callExpression(file.addHelper(helperName), [\n this.receiver(member),\n t.cloneNode(classRef),\n t.cloneNode(id),\n value,\n ]);\n }\n if (isMethod) {\n if (setId) {\n return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n this.receiver(member),\n t.cloneNode(id),\n value,\n ]);\n }\n return t.sequenceExpression([\n this.receiver(member),\n value,\n t.callExpression(file.addHelper(\"readOnlyError\"), [\n t.stringLiteral(`#${name}`),\n ]),\n ]);\n }\n return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n this.receiver(member),\n t.cloneNode(id),\n value,\n ]);\n },\n\n destructureSet(member) {\n const { classRef, privateNamesMap, file } = this;\n const { name } = (member.node.property as t.PrivateName).id;\n const { id, static: isStatic } = privateNamesMap.get(name);\n if (isStatic) {\n try {\n // classStaticPrivateFieldDestructureSet was introduced in 7.13.10\n // eslint-disable-next-line no-var\n var helper = file.addHelper(\"classStaticPrivateFieldDestructureSet\");\n } catch {\n throw new Error(\n \"Babel can not transpile `[C.#p] = [0]` with @babel/helpers < 7.13.10, \\n\" +\n \"please update @babel/helpers to the latest version.\",\n );\n }\n return t.memberExpression(\n t.callExpression(helper, [\n this.receiver(member),\n t.cloneNode(classRef),\n t.cloneNode(id),\n ]),\n t.identifier(\"value\"),\n );\n }\n\n return t.memberExpression(\n t.callExpression(file.addHelper(\"classPrivateFieldDestructureSet\"), [\n this.receiver(member),\n t.cloneNode(id),\n ]),\n t.identifier(\"value\"),\n );\n },\n\n call(member, args: (t.Expression | t.SpreadElement)[]) {\n // The first access (the get) should do the memo assignment.\n this.memoise(member, 1);\n\n return optimiseCall(this.get(member), this.receiver(member), args, false);\n },\n\n optionalCall(member, args: (t.Expression | t.SpreadElement)[]) {\n this.memoise(member, 1);\n\n return optimiseCall(this.get(member), this.receiver(member), args, true);\n },\n\n delete() {\n throw new Error(\n \"Internal Babel error: deleting private elements is a parsing error.\",\n );\n },\n };\n\nconst privateNameHandlerLoose: Handler<PrivateNameState> = {\n get(member) {\n const { privateNamesMap, file } = this;\n const { object } = member.node;\n const { name } = (member.node.property as t.PrivateName).id;\n\n return template.expression`BASE(REF, PROP)[PROP]`({\n BASE: file.addHelper(\"classPrivateFieldLooseBase\"),\n REF: t.cloneNode(object),\n PROP: t.cloneNode(privateNamesMap.get(name).id),\n });\n },\n\n set() {\n // noop\n throw new Error(\"private name handler with loose = true don't need set()\");\n },\n\n boundGet(member) {\n return t.callExpression(\n t.memberExpression(this.get(member), t.identifier(\"bind\")),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n [t.cloneNode(member.node.object as t.Expression)],\n );\n },\n\n simpleSet(member) {\n return this.get(member);\n },\n\n destructureSet(member) {\n return this.get(member);\n },\n\n call(member, args) {\n return t.callExpression(this.get(member), args);\n },\n\n optionalCall(member, args) {\n return t.optionalCallExpression(this.get(member), args, true);\n },\n\n delete() {\n throw new Error(\n \"Internal Babel error: deleting private elements is a parsing error.\",\n );\n },\n};\n\nexport function transformPrivateNamesUsage(\n ref: t.Identifier,\n path: NodePath<t.Class>,\n privateNamesMap: PrivateNamesMap,\n {\n privateFieldsAsProperties,\n noDocumentAll,\n innerBinding,\n }: {\n privateFieldsAsProperties: boolean;\n noDocumentAll: boolean;\n innerBinding: t.Identifier;\n },\n state: File,\n) {\n if (!privateNamesMap.size) return;\n\n const body = path.get(\"body\");\n const handler = privateFieldsAsProperties\n ? privateNameHandlerLoose\n : privateNameHandlerSpec;\n\n memberExpressionToFunctions<PrivateNameState>(body, privateNameVisitor, {\n privateNamesMap,\n classRef: ref,\n file: state,\n ...handler,\n noDocumentAll,\n innerBinding,\n });\n body.traverse(privateInVisitor, {\n privateNamesMap,\n classRef: ref,\n file: state,\n privateFieldsAsProperties,\n innerBinding,\n });\n}\n\nfunction buildPrivateFieldInitLoose(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateProperty>,\n privateNamesMap: PrivateNamesMap,\n) {\n const { id } = privateNamesMap.get(prop.node.key.id.name);\n const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n return inheritPropComments(\n template.statement.ast`\n Object.defineProperty(${ref}, ${t.cloneNode(id)}, {\n // configurable is false by default\n // enumerable is false by default\n writable: true,\n value: ${value}\n });\n `,\n prop,\n );\n}\n\nfunction buildPrivateInstanceFieldInitSpec(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateProperty>,\n privateNamesMap: PrivateNamesMap,\n state: File,\n) {\n const { id } = privateNamesMap.get(prop.node.key.id.name);\n const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n if (!process.env.BABEL_8_BREAKING) {\n if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n return inheritPropComments(\n template.statement.ast`${t.cloneNode(id)}.set(${ref}, {\n // configurable is always false for private elements\n // enumerable is always false for private elements\n writable: true,\n value: ${value},\n })`,\n prop,\n );\n }\n }\n\n const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n return inheritPropComments(\n template.statement.ast`${helper}(\n ${t.thisExpression()},\n ${t.cloneNode(id)},\n {\n writable: true,\n value: ${value}\n },\n )`,\n prop,\n );\n}\n\nfunction buildPrivateStaticFieldInitSpec(\n prop: NodePath<t.ClassPrivateProperty>,\n privateNamesMap: PrivateNamesMap,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { id, getId, setId, initAdded } = privateName;\n const isAccessor = getId || setId;\n\n if (!prop.isProperty() && (initAdded || !isAccessor)) return;\n\n if (isAccessor) {\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n initAdded: true,\n });\n\n return inheritPropComments(\n template.statement.ast`\n var ${t.cloneNode(id)} = {\n // configurable is false by default\n // enumerable is false by default\n // writable is false by default\n get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n }\n `,\n prop,\n );\n }\n\n const value = prop.node.value || prop.scope.buildUndefinedNode();\n return inheritPropComments(\n template.statement.ast`\n var ${t.cloneNode(id)} = {\n // configurable is false by default\n // enumerable is false by default\n writable: true,\n value: ${value}\n };\n `,\n prop,\n );\n}\n\nfunction buildPrivateMethodInitLoose(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateMethod>,\n privateNamesMap: PrivateNamesMap,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { methodId, id, getId, setId, initAdded } = privateName;\n if (initAdded) return;\n\n if (methodId) {\n return inheritPropComments(\n template.statement.ast`\n Object.defineProperty(${ref}, ${id}, {\n // configurable is false by default\n // enumerable is false by default\n // writable is false by default\n value: ${methodId.name}\n });\n `,\n prop,\n );\n }\n const isAccessor = getId || setId;\n if (isAccessor) {\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n initAdded: true,\n });\n\n return inheritPropComments(\n template.statement.ast`\n Object.defineProperty(${ref}, ${id}, {\n // configurable is false by default\n // enumerable is false by default\n // writable is false by default\n get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n });\n `,\n prop,\n );\n }\n}\n\nfunction buildPrivateInstanceMethodInitSpec(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateMethod>,\n privateNamesMap: PrivateNamesMap,\n state: File,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { getId, setId, initAdded } = privateName;\n\n if (initAdded) return;\n\n const isAccessor = getId || setId;\n if (isAccessor) {\n return buildPrivateAccessorInitialization(\n ref,\n prop,\n privateNamesMap,\n state,\n );\n }\n\n return buildPrivateInstanceMethodInitialization(\n ref,\n prop,\n privateNamesMap,\n state,\n );\n}\n\nfunction buildPrivateAccessorInitialization(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateMethod>,\n privateNamesMap: PrivateNamesMap,\n state: File,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { id, getId, setId } = privateName;\n\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n initAdded: true,\n });\n\n if (!process.env.BABEL_8_BREAKING) {\n if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n return inheritPropComments(\n template.statement.ast`\n ${id}.set(${ref}, {\n get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n });\n `,\n prop,\n );\n }\n }\n\n const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n return inheritPropComments(\n template.statement.ast`${helper}(\n ${t.thisExpression()},\n ${t.cloneNode(id)},\n {\n get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n },\n )`,\n prop,\n );\n}\n\nfunction buildPrivateInstanceMethodInitialization(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateMethod>,\n privateNamesMap: PrivateNamesMap,\n state: File,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { id } = privateName;\n\n if (!process.env.BABEL_8_BREAKING) {\n if (!state.availableHelper(\"classPrivateMethodInitSpec\")) {\n return inheritPropComments(\n template.statement.ast`${id}.add(${ref})`,\n prop,\n );\n }\n }\n\n const helper = state.addHelper(\"classPrivateMethodInitSpec\");\n return inheritPropComments(\n template.statement.ast`${helper}(\n ${t.thisExpression()},\n ${t.cloneNode(id)}\n )`,\n prop,\n );\n}\n\nfunction buildPublicFieldInitLoose(\n ref: t.Expression,\n prop: NodePath<t.ClassProperty>,\n) {\n const { key, computed } = prop.node;\n const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n return inheritPropComments(\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(ref, key, computed || t.isLiteral(key)),\n value,\n ),\n ),\n prop,\n );\n}\n\nfunction buildPublicFieldInitSpec(\n ref: t.Expression,\n prop: NodePath<t.ClassProperty>,\n state: File,\n) {\n const { key, computed } = prop.node;\n const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n return inheritPropComments(\n t.expressionStatement(\n t.callExpression(state.addHelper(\"defineProperty\"), [\n ref,\n computed || t.isLiteral(key)\n ? key\n : t.stringLiteral((key as t.Identifier).name),\n value,\n ]),\n ),\n prop,\n );\n}\n\nfunction buildPrivateStaticMethodInitLoose(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateMethod>,\n state: File,\n privateNamesMap: PrivateNamesMap,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { id, methodId, getId, setId, initAdded } = privateName;\n\n if (initAdded) return;\n\n const isAccessor = getId || setId;\n if (isAccessor) {\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n initAdded: true,\n });\n\n return inheritPropComments(\n template.statement.ast`\n Object.defineProperty(${ref}, ${id}, {\n // configurable is false by default\n // enumerable is false by default\n // writable is false by default\n get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n })\n `,\n prop,\n );\n }\n\n return inheritPropComments(\n template.statement.ast`\n Object.defineProperty(${ref}, ${id}, {\n // configurable is false by default\n // enumerable is false by default\n // writable is false by default\n value: ${methodId.name}\n });\n `,\n prop,\n );\n}\n\nfunction buildPrivateMethodDeclaration(\n prop: NodePath<t.ClassPrivateMethod>,\n privateNamesMap: PrivateNamesMap,\n privateFieldsAsProperties = false,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const {\n id,\n methodId,\n getId,\n setId,\n getterDeclared,\n setterDeclared,\n static: isStatic,\n } = privateName;\n const { params, body, generator, async } = prop.node;\n const isGetter = getId && !getterDeclared && params.length === 0;\n const isSetter = setId && !setterDeclared && params.length > 0;\n\n let declId = methodId;\n\n if (isGetter) {\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n getterDeclared: true,\n });\n declId = getId;\n } else if (isSetter) {\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n setterDeclared: true,\n });\n declId = setId;\n } else if (isStatic && !privateFieldsAsProperties) {\n declId = id;\n }\n\n return inheritPropComments(\n t.functionDeclaration(\n t.cloneNode(declId),\n // @ts-expect-error params for ClassMethod has TSParameterProperty\n params,\n body,\n generator,\n async,\n ),\n prop,\n );\n}\n\ntype ReplaceThisState = {\n classRef: t.Identifier;\n needsClassRef: boolean;\n innerBinding: t.Identifier | null;\n};\n\ntype ReplaceInnerBindingReferenceState = ReplaceThisState;\n\nconst thisContextVisitor = traverse.visitors.merge<ReplaceThisState>([\n {\n UnaryExpression(path) {\n // Replace `delete this` with `true`\n const { node } = path;\n if (node.operator === \"delete\") {\n const argument = skipTransparentExprWrapperNodes(node.argument);\n if (t.isThisExpression(argument)) {\n path.replaceWith(t.booleanLiteral(true));\n }\n }\n },\n ThisExpression(path, state) {\n state.needsClassRef = true;\n path.replaceWith(t.cloneNode(state.classRef));\n },\n MetaProperty(path) {\n const { node, scope } = path;\n // if there are `new.target` in static field\n // we should replace it with `undefined`\n if (node.meta.name === \"new\" && node.property.name === \"target\") {\n path.replaceWith(scope.buildUndefinedNode());\n }\n },\n },\n environmentVisitor,\n]);\n\nconst innerReferencesVisitor: Visitor<ReplaceInnerBindingReferenceState> = {\n ReferencedIdentifier(path, state) {\n if (\n path.scope.bindingIdentifierEquals(path.node.name, state.innerBinding)\n ) {\n state.needsClassRef = true;\n path.node.name = state.classRef.name;\n }\n },\n};\n\nfunction replaceThisContext(\n path: PropPath,\n ref: t.Identifier,\n innerBindingRef: t.Identifier | null,\n) {\n const state: ReplaceThisState = {\n classRef: ref,\n needsClassRef: false,\n innerBinding: innerBindingRef,\n };\n if (!path.isMethod()) {\n // replace `this` in property initializers and static blocks\n path.traverse(thisContextVisitor, state);\n }\n\n // todo: use innerBinding.referencePaths to avoid full traversal\n if (\n innerBindingRef != null &&\n state.classRef?.name &&\n state.classRef.name !== innerBindingRef.name\n ) {\n path.traverse(innerReferencesVisitor, state);\n }\n\n return state.needsClassRef;\n}\n\nexport type PropNode =\n | t.ClassProperty\n | t.ClassPrivateMethod\n | t.ClassPrivateProperty\n | t.StaticBlock;\nexport type PropPath = NodePath<PropNode>;\n\nfunction isNameOrLength({ key, computed }: t.ClassProperty) {\n if (key.type === \"Identifier\") {\n return !computed && (key.name === \"name\" || key.name === \"length\");\n }\n if (key.type === \"StringLiteral\") {\n return key.value === \"name\" || key.value === \"length\";\n }\n return false;\n}\n\n/**\n * Inherit comments from class members. This is a reduced version of\n * t.inheritsComments: the trailing comments are not inherited because\n * for most class members except the last one, their trailing comments are\n * the next sibling's leading comments.\n *\n * @template T transformed class member type\n * @param {T} node transformed class member\n * @param {PropPath} prop class member\n * @returns transformed class member type with comments inherited\n */\nfunction inheritPropComments<T extends t.Node>(node: T, prop: PropPath) {\n t.inheritLeadingComments(node, prop.node);\n t.inheritInnerComments(node, prop.node);\n return node;\n}\n\n/**\n * ClassRefFlag records the requirement of the class binding reference.\n *\n * @enum {number}\n */\nconst enum ClassRefFlag {\n None,\n /**\n * When this flag is enabled, the binding reference can be the class id,\n * if exists, or the uid identifier generated for class expression. The\n * reference is safe to be consumed by [[Define]].\n */\n ForDefine = 1 << 0,\n /**\n * When this flag is enabled, the reference must be a uid, because the outer\n * class binding can be mutated by user codes.\n * E.g.\n * class C { static p = C }; const oldC = C; C = null; oldC.p;\n * we must memoize class `C` before defining the property `p`.\n */\n ForInnerBinding = 1 << 1,\n}\n\nexport function buildFieldsInitNodes(\n ref: t.Identifier | null,\n superRef: t.Expression | undefined,\n props: PropPath[],\n privateNamesMap: PrivateNamesMap,\n file: File,\n setPublicClassFields: boolean,\n privateFieldsAsProperties: boolean,\n constantSuper: boolean,\n innerBindingRef: t.Identifier | null,\n) {\n let classRefFlags = ClassRefFlag.None;\n let injectSuperRef: t.Identifier;\n const staticNodes: t.Statement[] = [];\n const instanceNodes: t.Statement[] = [];\n // These nodes are pure and can be moved to the closest statement position\n const pureStaticNodes: t.FunctionDeclaration[] = [];\n let classBindingNode: t.ExpressionStatement | null = null;\n\n const getSuperRef = t.isIdentifier(superRef)\n ? () => superRef\n : () => {\n injectSuperRef ??=\n props[0].scope.generateUidIdentifierBasedOnNode(superRef);\n return injectSuperRef;\n };\n\n const classRefForInnerBinding =\n ref ?? props[0].scope.generateUidIdentifier(\"class\");\n ref ??= t.cloneNode(innerBindingRef);\n\n for (const prop of props) {\n prop.isClassProperty() && ts.assertFieldTransformed(prop);\n\n // @ts-expect-error: TS doesn't infer that prop.node is not a StaticBlock\n const isStatic = !t.isStaticBlock?.(prop.node) && prop.node.static;\n const isInstance = !isStatic;\n const isPrivate = prop.isPrivate();\n const isPublic = !isPrivate;\n const isField = prop.isProperty();\n const isMethod = !isField;\n const isStaticBlock = prop.isStaticBlock?.();\n\n if (isStatic) classRefFlags |= ClassRefFlag.ForDefine;\n\n if (isStatic || (isMethod && isPrivate) || isStaticBlock) {\n new ReplaceSupers({\n methodPath: prop,\n constantSuper,\n file: file,\n refToPreserve: innerBindingRef,\n getSuperRef,\n getObjectRef() {\n classRefFlags |= ClassRefFlag.ForInnerBinding;\n if (isStatic || isStaticBlock) {\n return classRefForInnerBinding;\n } else {\n return t.memberExpression(\n classRefForInnerBinding,\n t.identifier(\"prototype\"),\n );\n }\n },\n }).replace();\n\n const replaced = replaceThisContext(\n prop,\n classRefForInnerBinding,\n innerBindingRef,\n );\n if (replaced) {\n classRefFlags |= ClassRefFlag.ForInnerBinding;\n }\n }\n\n // TODO(ts): there are so many `ts-expect-error` inside cases since\n // ts can not infer type from pre-computed values (or a case test)\n // even change `isStaticBlock` to `t.isStaticBlock(prop)` will not make prop\n // a `NodePath<t.StaticBlock>`\n // this maybe a bug for ts\n switch (true) {\n case isStaticBlock: {\n const blockBody = (prop.node as t.StaticBlock).body;\n // We special-case the single expression case to avoid the iife, since\n // it's common.\n if (blockBody.length === 1 && t.isExpressionStatement(blockBody[0])) {\n staticNodes.push(inheritPropComments(blockBody[0], prop));\n } else {\n staticNodes.push(\n t.inheritsComments(\n template.statement.ast`(() => { ${blockBody} })()`,\n prop.node,\n ),\n );\n }\n break;\n }\n case isStatic && isPrivate && isField && privateFieldsAsProperties:\n staticNodes.push(\n // @ts-expect-error checked in switch\n buildPrivateFieldInitLoose(t.cloneNode(ref), prop, privateNamesMap),\n );\n break;\n case isStatic && isPrivate && isField && !privateFieldsAsProperties:\n staticNodes.push(\n // @ts-expect-error checked in switch\n buildPrivateStaticFieldInitSpec(prop, privateNamesMap),\n );\n break;\n case isStatic && isPublic && isField && setPublicClassFields:\n // Functions always have non-writable .name and .length properties,\n // so we must always use [[Define]] for them.\n // It might still be possible to a computed static fields whose resulting\n // key is \"name\" or \"length\", but the assumption is telling us that it's\n // not going to happen.\n // @ts-expect-error checked in switch\n if (!isNameOrLength(prop.node)) {\n // @ts-expect-error checked in switch\n staticNodes.push(buildPublicFieldInitLoose(t.cloneNode(ref), prop));\n break;\n }\n // falls through\n case isStatic && isPublic && isField && !setPublicClassFields:\n staticNodes.push(\n // @ts-expect-error checked in switch\n buildPublicFieldInitSpec(t.cloneNode(ref), prop, file),\n );\n break;\n case isInstance && isPrivate && isField && privateFieldsAsProperties:\n instanceNodes.push(\n // @ts-expect-error checked in switch\n buildPrivateFieldInitLoose(t.thisExpression(), prop, privateNamesMap),\n );\n break;\n case isInstance && isPrivate && isField && !privateFieldsAsProperties:\n instanceNodes.push(\n buildPrivateInstanceFieldInitSpec(\n t.thisExpression(),\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n file,\n ),\n );\n break;\n case isInstance && isPrivate && isMethod && privateFieldsAsProperties:\n instanceNodes.unshift(\n buildPrivateMethodInitLoose(\n t.thisExpression(),\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n ),\n );\n pureStaticNodes.push(\n buildPrivateMethodDeclaration(\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n privateFieldsAsProperties,\n ),\n );\n break;\n case isInstance && isPrivate && isMethod && !privateFieldsAsProperties:\n instanceNodes.unshift(\n buildPrivateInstanceMethodInitSpec(\n t.thisExpression(),\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n file,\n ),\n );\n pureStaticNodes.push(\n buildPrivateMethodDeclaration(\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n privateFieldsAsProperties,\n ),\n );\n break;\n case isStatic && isPrivate && isMethod && !privateFieldsAsProperties:\n staticNodes.unshift(\n // @ts-expect-error checked in switch\n buildPrivateStaticFieldInitSpec(prop, privateNamesMap),\n );\n pureStaticNodes.push(\n buildPrivateMethodDeclaration(\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n privateFieldsAsProperties,\n ),\n );\n break;\n case isStatic && isPrivate && isMethod && privateFieldsAsProperties:\n staticNodes.unshift(\n buildPrivateStaticMethodInitLoose(\n t.cloneNode(ref),\n // @ts-expect-error checked in switch\n prop,\n file,\n privateNamesMap,\n ),\n );\n pureStaticNodes.push(\n buildPrivateMethodDeclaration(\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n privateFieldsAsProperties,\n ),\n );\n break;\n case isInstance && isPublic && isField && setPublicClassFields:\n // @ts-expect-error checked in switch\n instanceNodes.push(buildPublicFieldInitLoose(t.thisExpression(), prop));\n break;\n case isInstance && isPublic && isField && !setPublicClassFields:\n instanceNodes.push(\n // @ts-expect-error checked in switch\n buildPublicFieldInitSpec(t.thisExpression(), prop, file),\n );\n break;\n default:\n throw new Error(\"Unreachable.\");\n }\n }\n\n if (classRefFlags & ClassRefFlag.ForInnerBinding && innerBindingRef != null) {\n classBindingNode = t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.cloneNode(classRefForInnerBinding),\n t.cloneNode(innerBindingRef),\n ),\n );\n }\n\n return {\n staticNodes: staticNodes.filter(Boolean),\n instanceNodes: instanceNodes.filter(Boolean),\n pureStaticNodes: pureStaticNodes.filter(Boolean),\n classBindingNode,\n wrapClass(path: NodePath<t.Class>) {\n for (const prop of props) {\n // Delete leading comments so that they don't get attached as\n // trailing comments of the previous sibling.\n // When transforming props, we explicitly attach their leading\n // comments to the transformed node with `inheritPropComments`\n // above.\n prop.node.leadingComments = null;\n prop.remove();\n }\n\n if (injectSuperRef) {\n path.scope.push({ id: t.cloneNode(injectSuperRef) });\n path.set(\n \"superClass\",\n t.assignmentExpression(\"=\", injectSuperRef, path.node.superClass),\n );\n }\n\n if (classRefFlags !== ClassRefFlag.None) {\n if (path.isClassExpression()) {\n path.scope.push({ id: ref });\n path.replaceWith(\n t.assignmentExpression(\"=\", t.cloneNode(ref), path.node),\n );\n } else {\n if (innerBindingRef == null) {\n // export anonymous class declaration\n path.node.id = ref;\n }\n if (classBindingNode != null) {\n path.scope.push({ id: classRefForInnerBinding });\n }\n }\n }\n\n return path;\n },\n };\n}\n"],"mappings":"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"} \ No newline at end of file
+{"version":3,"names":["_core","require","_helperReplaceSupers","_helperEnvironmentVisitor","_helperMemberExpressionToFunctions","_helperOptimiseCallExpression","_helperAnnotateAsPure","_helperSkipTransparentExpressionWrappers","ts","buildPrivateNamesMap","props","privateNamesMap","Map","prop","isPrivate","name","node","key","id","update","has","get","scope","generateUidIdentifier","static","method","isProperty","isClassPrivateMethod","kind","getId","setId","methodId","set","buildPrivateNamesNodes","privateFieldsAsProperties","privateFieldsAsSymbols","state","initNodes","value","isStatic","isMethod","isAccessor","t","cloneNode","init","callExpression","addHelper","stringLiteral","identifier","newExpression","annotateAsPure","push","template","statement","ast","privateNameVisitorFactory","visitor","nestedVisitor","traverse","visitors","merge","Object","assign","environmentVisitor","privateNameVisitor","Class","path","body","visiblePrivateNames","redeclared","delete","length","skipKey","PrivateName","noDocumentAll","parentPath","isMemberExpression","property","isOptionalMemberExpression","includes","handle","unshadow","innerBinding","_scope","hasBinding","bindingIdentifierEquals","rename","parent","buildCheckInRHS","rhs","file","inRHSIsObject","availableHelper","privateInVisitor","BinaryExpression","operator","left","right","isPrivateName","classRef","replaceWith","expression","privateNameHandlerSpec","memoise","member","count","object","memo","maybeGenerateMemoised","memoiser","receiver","helperName","sequenceExpression","console","warn","boundGet","memberExpression","destructureSet","helper","_unused","Error","call","args","optimiseCall","optionalCall","privateNameHandlerLoose","BASE","REF","PROP","simpleSet","optionalCallExpression","transformPrivateNamesUsage","ref","size","handler","memberExpressionToFunctions","buildPrivateFieldInitLoose","buildUndefinedNode","inheritPropComments","buildPrivateInstanceFieldInitSpec","thisExpression","buildPrivateStaticFieldInitSpec","privateName","initAdded","buildPrivateMethodInitLoose","buildPrivateInstanceMethodInitSpec","buildPrivateAccessorInitialization","buildPrivateInstanceMethodInitialization","buildPublicFieldInitLoose","computed","expressionStatement","assignmentExpression","isLiteral","buildPublicFieldInitSpec","buildPrivateStaticMethodInitLoose","buildPrivateMethodDeclaration","getterDeclared","setterDeclared","params","generator","async","isGetter","isSetter","declId","functionDeclaration","thisContextVisitor","UnaryExpression","argument","skipTransparentExprWrapperNodes","isThisExpression","booleanLiteral","ThisExpression","needsClassRef","MetaProperty","meta","innerReferencesVisitor","ReferencedIdentifier","replaceThisContext","innerBindingRef","_state$classRef","isNameOrLength","type","inheritLeadingComments","inheritInnerComments","buildFieldsInitNodes","superRef","setPublicClassFields","constantSuper","_ref","_ref2","classRefFlags","injectSuperRef","staticNodes","instanceNodes","lastInstanceNodeReturnsThis","pureStaticNodes","classBindingNode","getSuperRef","isIdentifier","_injectSuperRef","generateUidIdentifierBasedOnNode","classRefForInnerBinding","isClassProperty","assertFieldTransformed","isStaticBlock","isInstance","isPublic","isField","ReplaceSupers","methodPath","refToPreserve","getObjectRef","replace","replaced","blockBody","isExpressionStatement","inheritsComments","unshift","filter","Boolean","wrapClass","leadingComments","remove","superClass","isClassExpression"],"sources":["../src/fields.ts"],"sourcesContent":["import { template, traverse, types as t } from \"@babel/core\";\nimport type { File } from \"@babel/core\";\nimport type { NodePath, Visitor, Scope } from \"@babel/traverse\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport environmentVisitor from \"@babel/helper-environment-visitor\";\nimport memberExpressionToFunctions from \"@babel/helper-member-expression-to-functions\";\nimport type {\n Handler,\n HandlerState,\n} from \"@babel/helper-member-expression-to-functions\";\nimport optimiseCall from \"@babel/helper-optimise-call-expression\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { skipTransparentExprWrapperNodes } from \"@babel/helper-skip-transparent-expression-wrappers\";\n\nimport * as ts from \"./typescript.ts\";\n\ninterface PrivateNameMetadata {\n id: t.Identifier;\n static: boolean;\n method: boolean;\n getId?: t.Identifier;\n setId?: t.Identifier;\n methodId?: t.Identifier;\n initAdded?: boolean;\n getterDeclared?: boolean;\n setterDeclared?: boolean;\n}\n\ntype PrivateNamesMap = Map<string, PrivateNameMetadata>;\n\nexport function buildPrivateNamesMap(props: PropPath[]) {\n const privateNamesMap: PrivateNamesMap = new Map();\n for (const prop of props) {\n if (prop.isPrivate()) {\n const { name } = prop.node.key.id;\n const update: PrivateNameMetadata = privateNamesMap.has(name)\n ? privateNamesMap.get(name)\n : {\n id: prop.scope.generateUidIdentifier(name),\n static: prop.node.static,\n method: !prop.isProperty(),\n };\n if (prop.isClassPrivateMethod()) {\n if (prop.node.kind === \"get\") {\n update.getId = prop.scope.generateUidIdentifier(`get_${name}`);\n } else if (prop.node.kind === \"set\") {\n update.setId = prop.scope.generateUidIdentifier(`set_${name}`);\n } else if (prop.node.kind === \"method\") {\n update.methodId = prop.scope.generateUidIdentifier(name);\n }\n }\n privateNamesMap.set(name, update);\n }\n }\n return privateNamesMap;\n}\n\nexport function buildPrivateNamesNodes(\n privateNamesMap: PrivateNamesMap,\n privateFieldsAsProperties: boolean,\n privateFieldsAsSymbols: boolean,\n state: File,\n) {\n const initNodes: t.Statement[] = [];\n\n for (const [name, value] of privateNamesMap) {\n // - When the privateFieldsAsProperties assumption is enabled,\n // both static and instance fields are transpiled using a\n // secret non-enumerable property. Hence, we also need to generate that\n // key (using the classPrivateFieldLooseKey helper).\n // - When the privateFieldsAsSymbols assumption is enabled,\n // both static and instance fields are transpiled using a\n // unique Symbol to define a non-enumerable property.\n // - In spec mode, only instance fields need a \"private name\" initializer\n // because static fields are directly assigned to a variable in the\n // buildPrivateStaticFieldInitSpec function.\n const { static: isStatic, method: isMethod, getId, setId } = value;\n const isAccessor = getId || setId;\n const id = t.cloneNode(value.id);\n\n let init: t.Expression;\n\n if (privateFieldsAsProperties) {\n init = t.callExpression(state.addHelper(\"classPrivateFieldLooseKey\"), [\n t.stringLiteral(name),\n ]);\n } else if (privateFieldsAsSymbols) {\n init = t.callExpression(t.identifier(\"Symbol\"), [t.stringLiteral(name)]);\n } else if (!isStatic) {\n init = t.newExpression(\n t.identifier(!isMethod || isAccessor ? \"WeakMap\" : \"WeakSet\"),\n [],\n );\n }\n\n if (init) {\n annotateAsPure(init);\n initNodes.push(template.statement.ast`var ${id} = ${init}`);\n }\n }\n\n return initNodes;\n}\n\ninterface PrivateNameVisitorState {\n privateNamesMap: PrivateNamesMap;\n privateFieldsAsProperties: boolean;\n redeclared?: string[];\n}\n\n// Traverses the class scope, handling private name references. If an inner\n// class redeclares the same private name, it will hand off traversal to the\n// restricted visitor (which doesn't traverse the inner class's inner scope).\nfunction privateNameVisitorFactory<S>(\n visitor: Visitor<PrivateNameVisitorState & S>,\n) {\n // Traverses the outer portion of a class, without touching the class's inner\n // scope, for private names.\n const nestedVisitor = traverse.visitors.merge([\n {\n ...visitor,\n },\n environmentVisitor,\n ]);\n\n const privateNameVisitor: Visitor<PrivateNameVisitorState & S> = {\n ...visitor,\n\n Class(path) {\n const { privateNamesMap } = this;\n const body = path.get(\"body.body\");\n\n const visiblePrivateNames = new Map(privateNamesMap);\n const redeclared = [];\n for (const prop of body) {\n if (!prop.isPrivate()) continue;\n const { name } = prop.node.key.id;\n visiblePrivateNames.delete(name);\n redeclared.push(name);\n }\n\n // If the class doesn't redeclare any private fields, we can continue with\n // our overall traversal.\n if (!redeclared.length) {\n return;\n }\n\n // This class redeclares some private field. We need to process the outer\n // environment with access to all the outer privates, then we can process\n // the inner environment with only the still-visible outer privates.\n path.get(\"body\").traverse(nestedVisitor, {\n ...this,\n redeclared,\n });\n path.traverse(privateNameVisitor, {\n ...this,\n privateNamesMap: visiblePrivateNames,\n });\n\n // We'll eventually hit this class node again with the overall Class\n // Features visitor, which'll process the redeclared privates.\n path.skipKey(\"body\");\n },\n };\n\n return privateNameVisitor;\n}\n\ninterface PrivateNameState {\n privateNamesMap: PrivateNamesMap;\n classRef: t.Identifier;\n file: File;\n noDocumentAll: boolean;\n innerBinding?: t.Identifier;\n}\n\nconst privateNameVisitor = privateNameVisitorFactory<\n HandlerState<PrivateNameState> & PrivateNameState\n>({\n PrivateName(path, { noDocumentAll }) {\n const { privateNamesMap, redeclared } = this;\n const { node, parentPath } = path;\n\n if (\n !parentPath.isMemberExpression({ property: node }) &&\n !parentPath.isOptionalMemberExpression({ property: node })\n ) {\n return;\n }\n const { name } = node.id;\n if (!privateNamesMap.has(name)) return;\n if (redeclared && redeclared.includes(name)) return;\n\n this.handle(parentPath, noDocumentAll);\n },\n});\n\n// rename all bindings that shadows innerBinding\nfunction unshadow(\n name: string,\n scope: Scope,\n innerBinding: t.Identifier | undefined,\n) {\n // in some cases, scope.getBinding(name) === undefined\n // so we check hasBinding to avoid keeping looping\n // see: https://github.com/babel/babel/pull/13656#discussion_r686030715\n while (\n scope?.hasBinding(name) &&\n !scope.bindingIdentifierEquals(name, innerBinding)\n ) {\n scope.rename(name);\n scope = scope.parent;\n }\n}\n\nexport function buildCheckInRHS(\n rhs: t.Expression,\n file: File,\n inRHSIsObject?: boolean,\n) {\n if (inRHSIsObject || !file.availableHelper?.(\"checkInRHS\")) return rhs;\n return t.callExpression(file.addHelper(\"checkInRHS\"), [rhs]);\n}\n\nconst privateInVisitor = privateNameVisitorFactory<{\n classRef: t.Identifier;\n file: File;\n innerBinding?: t.Identifier;\n}>({\n BinaryExpression(path, { file }) {\n const { operator, left, right } = path.node;\n if (operator !== \"in\") return;\n if (!t.isPrivateName(left)) return;\n\n const { privateFieldsAsProperties, privateNamesMap, redeclared } = this;\n\n const { name } = left.id;\n\n if (!privateNamesMap.has(name)) return;\n if (redeclared && redeclared.includes(name)) return;\n\n // if there are any local variable shadowing classRef, unshadow it\n // see #12960\n unshadow(this.classRef.name, path.scope, this.innerBinding);\n\n if (privateFieldsAsProperties) {\n const { id } = privateNamesMap.get(name);\n path.replaceWith(template.expression.ast`\n Object.prototype.hasOwnProperty.call(${buildCheckInRHS(\n right,\n file,\n )}, ${t.cloneNode(id)})\n `);\n return;\n }\n\n const { id, static: isStatic } = privateNamesMap.get(name);\n\n if (isStatic) {\n path.replaceWith(\n template.expression.ast`${buildCheckInRHS(\n right,\n file,\n )} === ${t.cloneNode(this.classRef)}`,\n );\n return;\n }\n\n path.replaceWith(\n template.expression.ast`${t.cloneNode(id)}.has(${buildCheckInRHS(\n right,\n file,\n )})`,\n );\n },\n});\n\ninterface Receiver {\n receiver(\n this: HandlerState<PrivateNameState> & PrivateNameState,\n member: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n ): t.Expression;\n}\n\nconst privateNameHandlerSpec: Handler<PrivateNameState & Receiver> & Receiver =\n {\n memoise(member, count) {\n const { scope } = member;\n const { object } = member.node as { object: t.Expression };\n\n const memo = scope.maybeGenerateMemoised(object);\n if (!memo) {\n return;\n }\n\n this.memoiser.set(object, memo, count);\n },\n\n receiver(member) {\n const { object } = member.node as { object: t.Expression };\n\n if (this.memoiser.has(object)) {\n return t.cloneNode(this.memoiser.get(object));\n }\n\n return t.cloneNode(object);\n },\n\n get(member) {\n const { classRef, privateNamesMap, file, innerBinding } = this;\n const { name } = (member.node.property as t.PrivateName).id;\n const {\n id,\n static: isStatic,\n method: isMethod,\n methodId,\n getId,\n setId,\n } = privateNamesMap.get(name);\n const isAccessor = getId || setId;\n\n if (isStatic) {\n // NOTE: This package has a peerDependency on @babel/core@^7.0.0, but these\n // helpers have been introduced in @babel/helpers@7.1.0.\n const helperName =\n isMethod && !isAccessor\n ? \"classStaticPrivateMethodGet\"\n : \"classStaticPrivateFieldSpecGet\";\n\n // if there are any local variable shadowing classRef, unshadow it\n // see #12960\n unshadow(classRef.name, member.scope, innerBinding);\n\n return t.callExpression(file.addHelper(helperName), [\n this.receiver(member),\n t.cloneNode(classRef),\n t.cloneNode(id),\n ]);\n }\n\n if (isMethod) {\n if (isAccessor) {\n if (!getId && setId) {\n if (file.availableHelper(\"writeOnlyError\")) {\n return t.sequenceExpression([\n this.receiver(member),\n t.callExpression(file.addHelper(\"writeOnlyError\"), [\n t.stringLiteral(`#${name}`),\n ]),\n ]);\n }\n console.warn(\n `@babel/helpers is outdated, update it to silence this warning.`,\n );\n }\n return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n this.receiver(member),\n t.cloneNode(id),\n ]);\n }\n return t.callExpression(file.addHelper(\"classPrivateMethodGet\"), [\n this.receiver(member),\n t.cloneNode(id),\n t.cloneNode(methodId),\n ]);\n }\n return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n this.receiver(member),\n t.cloneNode(id),\n ]);\n },\n\n boundGet(member) {\n this.memoise(member, 1);\n\n return t.callExpression(\n t.memberExpression(this.get(member), t.identifier(\"bind\")),\n [this.receiver(member)],\n );\n },\n\n set(member, value) {\n const { classRef, privateNamesMap, file } = this;\n const { name } = (member.node.property as t.PrivateName).id;\n const {\n id,\n static: isStatic,\n method: isMethod,\n setId,\n getId,\n } = privateNamesMap.get(name);\n const isAccessor = getId || setId;\n\n if (isStatic) {\n const helperName =\n isMethod && !isAccessor\n ? \"classStaticPrivateMethodSet\"\n : \"classStaticPrivateFieldSpecSet\";\n\n return t.callExpression(file.addHelper(helperName), [\n this.receiver(member),\n t.cloneNode(classRef),\n t.cloneNode(id),\n value,\n ]);\n }\n if (isMethod) {\n if (setId) {\n return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n this.receiver(member),\n t.cloneNode(id),\n value,\n ]);\n }\n return t.sequenceExpression([\n this.receiver(member),\n value,\n t.callExpression(file.addHelper(\"readOnlyError\"), [\n t.stringLiteral(`#${name}`),\n ]),\n ]);\n }\n return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n this.receiver(member),\n t.cloneNode(id),\n value,\n ]);\n },\n\n destructureSet(member) {\n const { classRef, privateNamesMap, file } = this;\n const { name } = (member.node.property as t.PrivateName).id;\n const { id, static: isStatic } = privateNamesMap.get(name);\n if (isStatic) {\n try {\n // classStaticPrivateFieldDestructureSet was introduced in 7.13.10\n // eslint-disable-next-line no-var\n var helper = file.addHelper(\"classStaticPrivateFieldDestructureSet\");\n } catch {\n throw new Error(\n \"Babel can not transpile `[C.#p] = [0]` with @babel/helpers < 7.13.10, \\n\" +\n \"please update @babel/helpers to the latest version.\",\n );\n }\n return t.memberExpression(\n t.callExpression(helper, [\n this.receiver(member),\n t.cloneNode(classRef),\n t.cloneNode(id),\n ]),\n t.identifier(\"value\"),\n );\n }\n\n return t.memberExpression(\n t.callExpression(file.addHelper(\"classPrivateFieldDestructureSet\"), [\n this.receiver(member),\n t.cloneNode(id),\n ]),\n t.identifier(\"value\"),\n );\n },\n\n call(member, args: (t.Expression | t.SpreadElement)[]) {\n // The first access (the get) should do the memo assignment.\n this.memoise(member, 1);\n\n return optimiseCall(this.get(member), this.receiver(member), args, false);\n },\n\n optionalCall(member, args: (t.Expression | t.SpreadElement)[]) {\n this.memoise(member, 1);\n\n return optimiseCall(this.get(member), this.receiver(member), args, true);\n },\n\n delete() {\n throw new Error(\n \"Internal Babel error: deleting private elements is a parsing error.\",\n );\n },\n };\n\nconst privateNameHandlerLoose: Handler<PrivateNameState> = {\n get(member) {\n const { privateNamesMap, file } = this;\n const { object } = member.node;\n const { name } = (member.node.property as t.PrivateName).id;\n\n return template.expression`BASE(REF, PROP)[PROP]`({\n BASE: file.addHelper(\"classPrivateFieldLooseBase\"),\n REF: t.cloneNode(object),\n PROP: t.cloneNode(privateNamesMap.get(name).id),\n });\n },\n\n set() {\n // noop\n throw new Error(\"private name handler with loose = true don't need set()\");\n },\n\n boundGet(member) {\n return t.callExpression(\n t.memberExpression(this.get(member), t.identifier(\"bind\")),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n [t.cloneNode(member.node.object as t.Expression)],\n );\n },\n\n simpleSet(member) {\n return this.get(member);\n },\n\n destructureSet(member) {\n return this.get(member);\n },\n\n call(member, args) {\n return t.callExpression(this.get(member), args);\n },\n\n optionalCall(member, args) {\n return t.optionalCallExpression(this.get(member), args, true);\n },\n\n delete() {\n throw new Error(\n \"Internal Babel error: deleting private elements is a parsing error.\",\n );\n },\n};\n\nexport function transformPrivateNamesUsage(\n ref: t.Identifier,\n path: NodePath<t.Class>,\n privateNamesMap: PrivateNamesMap,\n {\n privateFieldsAsProperties,\n noDocumentAll,\n innerBinding,\n }: {\n privateFieldsAsProperties: boolean;\n noDocumentAll: boolean;\n innerBinding: t.Identifier;\n },\n state: File,\n) {\n if (!privateNamesMap.size) return;\n\n const body = path.get(\"body\");\n const handler = privateFieldsAsProperties\n ? privateNameHandlerLoose\n : privateNameHandlerSpec;\n\n memberExpressionToFunctions<PrivateNameState>(body, privateNameVisitor, {\n privateNamesMap,\n classRef: ref,\n file: state,\n ...handler,\n noDocumentAll,\n innerBinding,\n });\n body.traverse(privateInVisitor, {\n privateNamesMap,\n classRef: ref,\n file: state,\n privateFieldsAsProperties,\n innerBinding,\n });\n}\n\nfunction buildPrivateFieldInitLoose(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateProperty>,\n privateNamesMap: PrivateNamesMap,\n) {\n const { id } = privateNamesMap.get(prop.node.key.id.name);\n const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n return inheritPropComments(\n template.statement.ast`\n Object.defineProperty(${ref}, ${t.cloneNode(id)}, {\n // configurable is false by default\n // enumerable is false by default\n writable: true,\n value: ${value}\n });\n ` as t.ExpressionStatement,\n prop,\n );\n}\n\nfunction buildPrivateInstanceFieldInitSpec(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateProperty>,\n privateNamesMap: PrivateNamesMap,\n state: File,\n) {\n const { id } = privateNamesMap.get(prop.node.key.id.name);\n const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n if (!process.env.BABEL_8_BREAKING) {\n if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n return inheritPropComments(\n template.statement.ast`${t.cloneNode(id)}.set(${ref}, {\n // configurable is always false for private elements\n // enumerable is always false for private elements\n writable: true,\n value: ${value},\n })` as t.ExpressionStatement,\n prop,\n );\n }\n }\n\n const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n return inheritPropComments(\n template.statement.ast`${helper}(\n ${t.thisExpression()},\n ${t.cloneNode(id)},\n {\n writable: true,\n value: ${value}\n },\n )` as t.ExpressionStatement,\n prop,\n );\n}\n\nfunction buildPrivateStaticFieldInitSpec(\n prop: NodePath<t.ClassPrivateProperty>,\n privateNamesMap: PrivateNamesMap,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { id, getId, setId, initAdded } = privateName;\n const isAccessor = getId || setId;\n\n if (!prop.isProperty() && (initAdded || !isAccessor)) return;\n\n if (isAccessor) {\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n initAdded: true,\n });\n\n return inheritPropComments(\n template.statement.ast`\n var ${t.cloneNode(id)} = {\n // configurable is false by default\n // enumerable is false by default\n // writable is false by default\n get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n }\n `,\n prop,\n );\n }\n\n const value = prop.node.value || prop.scope.buildUndefinedNode();\n return inheritPropComments(\n template.statement.ast`\n var ${t.cloneNode(id)} = {\n // configurable is false by default\n // enumerable is false by default\n writable: true,\n value: ${value}\n };\n `,\n prop,\n );\n}\n\nfunction buildPrivateMethodInitLoose(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateMethod>,\n privateNamesMap: PrivateNamesMap,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { methodId, id, getId, setId, initAdded } = privateName;\n if (initAdded) return;\n\n if (methodId) {\n return inheritPropComments(\n template.statement.ast`\n Object.defineProperty(${ref}, ${id}, {\n // configurable is false by default\n // enumerable is false by default\n // writable is false by default\n value: ${methodId.name}\n });\n ` as t.ExpressionStatement,\n prop,\n );\n }\n const isAccessor = getId || setId;\n if (isAccessor) {\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n initAdded: true,\n });\n\n return inheritPropComments(\n template.statement.ast`\n Object.defineProperty(${ref}, ${id}, {\n // configurable is false by default\n // enumerable is false by default\n // writable is false by default\n get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n });\n ` as t.ExpressionStatement,\n prop,\n );\n }\n}\n\nfunction buildPrivateInstanceMethodInitSpec(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateMethod>,\n privateNamesMap: PrivateNamesMap,\n state: File,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { getId, setId, initAdded } = privateName;\n\n if (initAdded) return;\n\n const isAccessor = getId || setId;\n if (isAccessor) {\n return buildPrivateAccessorInitialization(\n ref,\n prop,\n privateNamesMap,\n state,\n );\n }\n\n return buildPrivateInstanceMethodInitialization(\n ref,\n prop,\n privateNamesMap,\n state,\n );\n}\n\nfunction buildPrivateAccessorInitialization(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateMethod>,\n privateNamesMap: PrivateNamesMap,\n state: File,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { id, getId, setId } = privateName;\n\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n initAdded: true,\n });\n\n if (!process.env.BABEL_8_BREAKING) {\n if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n return inheritPropComments(\n template.statement.ast`\n ${id}.set(${ref}, {\n get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n });\n ` as t.ExpressionStatement,\n prop,\n );\n }\n }\n\n const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n return inheritPropComments(\n template.statement.ast`${helper}(\n ${t.thisExpression()},\n ${t.cloneNode(id)},\n {\n get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n },\n )` as t.ExpressionStatement,\n prop,\n );\n}\n\nfunction buildPrivateInstanceMethodInitialization(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateMethod>,\n privateNamesMap: PrivateNamesMap,\n state: File,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { id } = privateName;\n\n if (!process.env.BABEL_8_BREAKING) {\n if (!state.availableHelper(\"classPrivateMethodInitSpec\")) {\n return inheritPropComments(\n template.statement.ast`${id}.add(${ref})` as t.ExpressionStatement,\n prop,\n );\n }\n }\n\n const helper = state.addHelper(\"classPrivateMethodInitSpec\");\n return inheritPropComments(\n template.statement.ast`${helper}(\n ${t.thisExpression()},\n ${t.cloneNode(id)}\n )` as t.ExpressionStatement,\n prop,\n );\n}\n\nfunction buildPublicFieldInitLoose(\n ref: t.Expression,\n prop: NodePath<t.ClassProperty>,\n) {\n const { key, computed } = prop.node;\n const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n return inheritPropComments(\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(ref, key, computed || t.isLiteral(key)),\n value,\n ),\n ),\n prop,\n );\n}\n\nfunction buildPublicFieldInitSpec(\n ref: t.Expression,\n prop: NodePath<t.ClassProperty>,\n state: File,\n) {\n const { key, computed } = prop.node;\n const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n return inheritPropComments(\n t.expressionStatement(\n t.callExpression(state.addHelper(\"defineProperty\"), [\n ref,\n computed || t.isLiteral(key)\n ? key\n : t.stringLiteral((key as t.Identifier).name),\n value,\n ]),\n ),\n prop,\n );\n}\n\nfunction buildPrivateStaticMethodInitLoose(\n ref: t.Expression,\n prop: NodePath<t.ClassPrivateMethod>,\n state: File,\n privateNamesMap: PrivateNamesMap,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const { id, methodId, getId, setId, initAdded } = privateName;\n\n if (initAdded) return;\n\n const isAccessor = getId || setId;\n if (isAccessor) {\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n initAdded: true,\n });\n\n return inheritPropComments(\n template.statement.ast`\n Object.defineProperty(${ref}, ${id}, {\n // configurable is false by default\n // enumerable is false by default\n // writable is false by default\n get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n })\n `,\n prop,\n );\n }\n\n return inheritPropComments(\n template.statement.ast`\n Object.defineProperty(${ref}, ${id}, {\n // configurable is false by default\n // enumerable is false by default\n // writable is false by default\n value: ${methodId.name}\n });\n `,\n prop,\n );\n}\n\nfunction buildPrivateMethodDeclaration(\n prop: NodePath<t.ClassPrivateMethod>,\n privateNamesMap: PrivateNamesMap,\n privateFieldsAsProperties = false,\n) {\n const privateName = privateNamesMap.get(prop.node.key.id.name);\n const {\n id,\n methodId,\n getId,\n setId,\n getterDeclared,\n setterDeclared,\n static: isStatic,\n } = privateName;\n const { params, body, generator, async } = prop.node;\n const isGetter = getId && !getterDeclared && params.length === 0;\n const isSetter = setId && !setterDeclared && params.length > 0;\n\n let declId = methodId;\n\n if (isGetter) {\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n getterDeclared: true,\n });\n declId = getId;\n } else if (isSetter) {\n privateNamesMap.set(prop.node.key.id.name, {\n ...privateName,\n setterDeclared: true,\n });\n declId = setId;\n } else if (isStatic && !privateFieldsAsProperties) {\n declId = id;\n }\n\n return inheritPropComments(\n t.functionDeclaration(\n t.cloneNode(declId),\n // @ts-expect-error params for ClassMethod has TSParameterProperty\n params,\n body,\n generator,\n async,\n ),\n prop,\n );\n}\n\ntype ReplaceThisState = {\n classRef: t.Identifier;\n needsClassRef: boolean;\n innerBinding: t.Identifier | null;\n};\n\ntype ReplaceInnerBindingReferenceState = ReplaceThisState;\n\nconst thisContextVisitor = traverse.visitors.merge<ReplaceThisState>([\n {\n UnaryExpression(path) {\n // Replace `delete this` with `true`\n const { node } = path;\n if (node.operator === \"delete\") {\n const argument = skipTransparentExprWrapperNodes(node.argument);\n if (t.isThisExpression(argument)) {\n path.replaceWith(t.booleanLiteral(true));\n }\n }\n },\n ThisExpression(path, state) {\n state.needsClassRef = true;\n path.replaceWith(t.cloneNode(state.classRef));\n },\n MetaProperty(path) {\n const { node, scope } = path;\n // if there are `new.target` in static field\n // we should replace it with `undefined`\n if (node.meta.name === \"new\" && node.property.name === \"target\") {\n path.replaceWith(scope.buildUndefinedNode());\n }\n },\n },\n environmentVisitor,\n]);\n\nconst innerReferencesVisitor: Visitor<ReplaceInnerBindingReferenceState> = {\n ReferencedIdentifier(path, state) {\n if (\n path.scope.bindingIdentifierEquals(path.node.name, state.innerBinding)\n ) {\n state.needsClassRef = true;\n path.node.name = state.classRef.name;\n }\n },\n};\n\nfunction replaceThisContext(\n path: PropPath,\n ref: t.Identifier,\n innerBindingRef: t.Identifier | null,\n) {\n const state: ReplaceThisState = {\n classRef: ref,\n needsClassRef: false,\n innerBinding: innerBindingRef,\n };\n if (!path.isMethod()) {\n // replace `this` in property initializers and static blocks\n path.traverse(thisContextVisitor, state);\n }\n\n // todo: use innerBinding.referencePaths to avoid full traversal\n if (\n innerBindingRef != null &&\n state.classRef?.name &&\n state.classRef.name !== innerBindingRef.name\n ) {\n path.traverse(innerReferencesVisitor, state);\n }\n\n return state.needsClassRef;\n}\n\nexport type PropNode =\n | t.ClassProperty\n | t.ClassPrivateMethod\n | t.ClassPrivateProperty\n | t.StaticBlock;\nexport type PropPath = NodePath<PropNode>;\n\nfunction isNameOrLength({ key, computed }: t.ClassProperty) {\n if (key.type === \"Identifier\") {\n return !computed && (key.name === \"name\" || key.name === \"length\");\n }\n if (key.type === \"StringLiteral\") {\n return key.value === \"name\" || key.value === \"length\";\n }\n return false;\n}\n\n/**\n * Inherit comments from class members. This is a reduced version of\n * t.inheritsComments: the trailing comments are not inherited because\n * for most class members except the last one, their trailing comments are\n * the next sibling's leading comments.\n *\n * @template T transformed class member type\n * @param {T} node transformed class member\n * @param {PropPath} prop class member\n * @returns transformed class member type with comments inherited\n */\nfunction inheritPropComments<T extends t.Node>(node: T, prop: PropPath) {\n t.inheritLeadingComments(node, prop.node);\n t.inheritInnerComments(node, prop.node);\n return node;\n}\n\n/**\n * ClassRefFlag records the requirement of the class binding reference.\n *\n * @enum {number}\n */\nconst enum ClassRefFlag {\n None,\n /**\n * When this flag is enabled, the binding reference can be the class id,\n * if exists, or the uid identifier generated for class expression. The\n * reference is safe to be consumed by [[Define]].\n */\n ForDefine = 1 << 0,\n /**\n * When this flag is enabled, the reference must be a uid, because the outer\n * class binding can be mutated by user codes.\n * E.g.\n * class C { static p = C }; const oldC = C; C = null; oldC.p;\n * we must memoize class `C` before defining the property `p`.\n */\n ForInnerBinding = 1 << 1,\n}\n\nexport function buildFieldsInitNodes(\n ref: t.Identifier | null,\n superRef: t.Expression | undefined,\n props: PropPath[],\n privateNamesMap: PrivateNamesMap,\n file: File,\n setPublicClassFields: boolean,\n privateFieldsAsProperties: boolean,\n constantSuper: boolean,\n innerBindingRef: t.Identifier | null,\n) {\n let classRefFlags = ClassRefFlag.None;\n let injectSuperRef: t.Identifier;\n const staticNodes: t.Statement[] = [];\n const instanceNodes: t.ExpressionStatement[] = [];\n let lastInstanceNodeReturnsThis = false;\n // These nodes are pure and can be moved to the closest statement position\n const pureStaticNodes: t.FunctionDeclaration[] = [];\n let classBindingNode: t.ExpressionStatement | null = null;\n\n const getSuperRef = t.isIdentifier(superRef)\n ? () => superRef\n : () => {\n injectSuperRef ??=\n props[0].scope.generateUidIdentifierBasedOnNode(superRef);\n return injectSuperRef;\n };\n\n const classRefForInnerBinding =\n ref ?? props[0].scope.generateUidIdentifier(\"class\");\n ref ??= t.cloneNode(innerBindingRef);\n\n for (const prop of props) {\n prop.isClassProperty() && ts.assertFieldTransformed(prop);\n\n // @ts-expect-error: TS doesn't infer that prop.node is not a StaticBlock\n const isStatic = !t.isStaticBlock?.(prop.node) && prop.node.static;\n const isInstance = !isStatic;\n const isPrivate = prop.isPrivate();\n const isPublic = !isPrivate;\n const isField = prop.isProperty();\n const isMethod = !isField;\n const isStaticBlock = prop.isStaticBlock?.();\n\n if (isStatic) classRefFlags |= ClassRefFlag.ForDefine;\n\n if (isStatic || (isMethod && isPrivate) || isStaticBlock) {\n new ReplaceSupers({\n methodPath: prop,\n constantSuper,\n file: file,\n refToPreserve: innerBindingRef,\n getSuperRef,\n getObjectRef() {\n classRefFlags |= ClassRefFlag.ForInnerBinding;\n if (isStatic || isStaticBlock) {\n return classRefForInnerBinding;\n } else {\n return t.memberExpression(\n classRefForInnerBinding,\n t.identifier(\"prototype\"),\n );\n }\n },\n }).replace();\n\n const replaced = replaceThisContext(\n prop,\n classRefForInnerBinding,\n innerBindingRef,\n );\n if (replaced) {\n classRefFlags |= ClassRefFlag.ForInnerBinding;\n }\n }\n\n lastInstanceNodeReturnsThis = false;\n\n // TODO(ts): there are so many `ts-expect-error` inside cases since\n // ts can not infer type from pre-computed values (or a case test)\n // even change `isStaticBlock` to `t.isStaticBlock(prop)` will not make prop\n // a `NodePath<t.StaticBlock>`\n // this maybe a bug for ts\n switch (true) {\n case isStaticBlock: {\n const blockBody = (prop.node as t.StaticBlock).body;\n // We special-case the single expression case to avoid the iife, since\n // it's common.\n if (blockBody.length === 1 && t.isExpressionStatement(blockBody[0])) {\n staticNodes.push(inheritPropComments(blockBody[0], prop));\n } else {\n staticNodes.push(\n t.inheritsComments(\n template.statement.ast`(() => { ${blockBody} })()`,\n prop.node,\n ),\n );\n }\n break;\n }\n case isStatic && isPrivate && isField && privateFieldsAsProperties:\n staticNodes.push(\n // @ts-expect-error checked in switch\n buildPrivateFieldInitLoose(t.cloneNode(ref), prop, privateNamesMap),\n );\n break;\n case isStatic && isPrivate && isField && !privateFieldsAsProperties:\n staticNodes.push(\n // @ts-expect-error checked in switch\n buildPrivateStaticFieldInitSpec(prop, privateNamesMap),\n );\n break;\n case isStatic && isPublic && isField && setPublicClassFields:\n // Functions always have non-writable .name and .length properties,\n // so we must always use [[Define]] for them.\n // It might still be possible to a computed static fields whose resulting\n // key is \"name\" or \"length\", but the assumption is telling us that it's\n // not going to happen.\n // @ts-expect-error checked in switch\n if (!isNameOrLength(prop.node)) {\n // @ts-expect-error checked in switch\n staticNodes.push(buildPublicFieldInitLoose(t.cloneNode(ref), prop));\n break;\n }\n // falls through\n case isStatic && isPublic && isField && !setPublicClassFields:\n staticNodes.push(\n // @ts-expect-error checked in switch\n buildPublicFieldInitSpec(t.cloneNode(ref), prop, file),\n );\n break;\n case isInstance && isPrivate && isField && privateFieldsAsProperties:\n instanceNodes.push(\n // @ts-expect-error checked in switch\n buildPrivateFieldInitLoose(t.thisExpression(), prop, privateNamesMap),\n );\n break;\n case isInstance && isPrivate && isField && !privateFieldsAsProperties:\n instanceNodes.push(\n buildPrivateInstanceFieldInitSpec(\n t.thisExpression(),\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n file,\n ),\n );\n break;\n case isInstance && isPrivate && isMethod && privateFieldsAsProperties:\n instanceNodes.unshift(\n buildPrivateMethodInitLoose(\n t.thisExpression(),\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n ),\n );\n pureStaticNodes.push(\n buildPrivateMethodDeclaration(\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n privateFieldsAsProperties,\n ),\n );\n break;\n case isInstance && isPrivate && isMethod && !privateFieldsAsProperties:\n instanceNodes.unshift(\n buildPrivateInstanceMethodInitSpec(\n t.thisExpression(),\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n file,\n ),\n );\n pureStaticNodes.push(\n buildPrivateMethodDeclaration(\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n privateFieldsAsProperties,\n ),\n );\n break;\n case isStatic && isPrivate && isMethod && !privateFieldsAsProperties:\n staticNodes.unshift(\n // @ts-expect-error checked in switch\n buildPrivateStaticFieldInitSpec(prop, privateNamesMap),\n );\n pureStaticNodes.push(\n buildPrivateMethodDeclaration(\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n privateFieldsAsProperties,\n ),\n );\n break;\n case isStatic && isPrivate && isMethod && privateFieldsAsProperties:\n staticNodes.unshift(\n buildPrivateStaticMethodInitLoose(\n t.cloneNode(ref),\n // @ts-expect-error checked in switch\n prop,\n file,\n privateNamesMap,\n ),\n );\n pureStaticNodes.push(\n buildPrivateMethodDeclaration(\n // @ts-expect-error checked in switch\n prop,\n privateNamesMap,\n privateFieldsAsProperties,\n ),\n );\n break;\n case isInstance && isPublic && isField && setPublicClassFields:\n // @ts-expect-error checked in switch\n instanceNodes.push(buildPublicFieldInitLoose(t.thisExpression(), prop));\n break;\n case isInstance && isPublic && isField && !setPublicClassFields:\n lastInstanceNodeReturnsThis = true;\n instanceNodes.push(\n // @ts-expect-error checked in switch\n buildPublicFieldInitSpec(t.thisExpression(), prop, file),\n );\n break;\n default:\n throw new Error(\"Unreachable.\");\n }\n }\n\n if (classRefFlags & ClassRefFlag.ForInnerBinding && innerBindingRef != null) {\n classBindingNode = t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.cloneNode(classRefForInnerBinding),\n t.cloneNode(innerBindingRef),\n ),\n );\n }\n\n return {\n staticNodes: staticNodes.filter(Boolean),\n instanceNodes: instanceNodes.filter(Boolean),\n lastInstanceNodeReturnsThis,\n pureStaticNodes: pureStaticNodes.filter(Boolean),\n classBindingNode,\n wrapClass(path: NodePath<t.Class>) {\n for (const prop of props) {\n // Delete leading comments so that they don't get attached as\n // trailing comments of the previous sibling.\n // When transforming props, we explicitly attach their leading\n // comments to the transformed node with `inheritPropComments`\n // above.\n prop.node.leadingComments = null;\n prop.remove();\n }\n\n if (injectSuperRef) {\n path.scope.push({ id: t.cloneNode(injectSuperRef) });\n path.set(\n \"superClass\",\n t.assignmentExpression(\"=\", injectSuperRef, path.node.superClass),\n );\n }\n\n if (classRefFlags !== ClassRefFlag.None) {\n if (path.isClassExpression()) {\n path.scope.push({ id: ref });\n path.replaceWith(\n t.assignmentExpression(\"=\", t.cloneNode(ref), path.node),\n );\n } else {\n if (innerBindingRef == null) {\n // export anonymous class declaration\n path.node.id = ref;\n }\n if (classBindingNode != null) {\n path.scope.push({ id: classRefForInnerBinding });\n }\n }\n }\n\n return path;\n },\n };\n}\n"],"mappings":"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"} \ No newline at end of file
diff --git a/node_modules/@babel/helper-create-class-features-plugin/lib/index.js b/node_modules/@babel/helper-create-class-features-plugin/lib/index.js
index 8bb71f8d..69bff6fe 100644
--- a/node_modules/@babel/helper-create-class-features-plugin/lib/index.js
+++ b/node_modules/@babel/helper-create-class-features-plugin/lib/index.js
@@ -84,12 +84,12 @@ function createClassFeaturePlugin({
(0, _features.enableFeature)(file, feature, loose);
{
if (typeof file.get(versionKey) === "number") {
- file.set(versionKey, "7.22.15");
+ file.set(versionKey, "7.23.6");
return;
}
}
- if (!file.get(versionKey) || _semver.lt(file.get(versionKey), "7.22.15")) {
- file.set(versionKey, "7.22.15");
+ if (!file.get(versionKey) || _semver.lt(file.get(versionKey), "7.23.6")) {
+ file.set(versionKey, "7.23.6");
}
},
visitor: {
@@ -97,7 +97,7 @@ function createClassFeaturePlugin({
file
}) {
var _ref;
- if (file.get(versionKey) !== "7.22.15") return;
+ if (file.get(versionKey) !== "7.23.6") return;
if (!(0, _features.shouldTransform)(path, file)) return;
const pathIsClassDeclaration = path.isClassDeclaration();
if (pathIsClassDeclaration) (0, _typescript.assertFieldTransformed)(path);
@@ -166,7 +166,7 @@ function createClassFeaturePlugin({
noDocumentAll,
innerBinding
}, file);
- let keysNodes, staticNodes, instanceNodes, pureStaticNodes, classBindingNode, wrapClass;
+ let keysNodes, staticNodes, instanceNodes, lastInstanceNodeReturnsThis, pureStaticNodes, classBindingNode, wrapClass;
{
if (isDecorated) {
staticNodes = pureStaticNodes = keysNodes = [];
@@ -180,6 +180,7 @@ function createClassFeaturePlugin({
staticNodes,
pureStaticNodes,
instanceNodes,
+ lastInstanceNodeReturnsThis,
classBindingNode,
wrapClass
} = (0, _fields.buildFieldsInitNodes)(ref, path.node.superClass, props, privateNamesMap, file, setPublicClassFields != null ? setPublicClassFields : loose, privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose, constantSuper != null ? constantSuper : loose, innerBinding));
@@ -194,7 +195,7 @@ function createClassFeaturePlugin({
if (_core.types.isStaticBlock != null && _core.types.isStaticBlock(prop.node) || prop.node.static) continue;
prop.traverse(referenceVisitor, state);
}
- });
+ }, lastInstanceNodeReturnsThis);
}
const wrappedPath = wrapClass(path);
wrappedPath.insertBefore([...privateNamesNodes, ...keysNodes]);
@@ -212,7 +213,7 @@ function createClassFeaturePlugin({
file
}) {
{
- if (file.get(versionKey) !== "7.22.15") return;
+ if (file.get(versionKey) !== "7.23.6") return;
const decl = path.get("declaration");
if (decl.isClassDeclaration() && (0, _decorators.hasDecorators)(decl.node)) {
if (decl.node.id) {
diff --git a/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map b/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map
index f1f027c9..7f1c8989 100644
--- a/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map
+++ b/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map
@@ -1 +1 @@
-{"version":3,"names":["_core","require","_helperFunctionName","_helperSplitExportDeclaration","_semver","_fields","_decorators","_misc","_features","_typescript","versionKey","createClassFeaturePlugin","name","feature","loose","manipulateOptions","api","inherits","_api","assumption","setPublicClassFields","privateFieldsAsSymbols","privateFieldsAsProperties","constantSuper","noDocumentAll","Error","privateFieldsAsSymbolsOrProperties","explicit","undefined","push","length","console","warn","join","pre","file","enableFeature","get","set","semver","lt","visitor","Class","path","_ref","shouldTransform","pathIsClassDeclaration","isClassDeclaration","assertFieldTransformed","isLoose","constructor","isDecorated","hasDecorators","node","props","elements","computedPaths","privateNames","Set","body","isClassProperty","isClassMethod","computed","isPrivate","key","id","getName","setName","isClassPrivateMethod","kind","has","buildCodeFrameError","add","isProperty","isStaticBlock","innerBinding","ref","nameFunction","scope","generateUidIdentifier","classRefForDefine","t","cloneNode","privateNamesMap","buildPrivateNamesMap","privateNamesNodes","buildPrivateNamesNodes","transformPrivateNamesUsage","keysNodes","staticNodes","instanceNodes","pureStaticNodes","classBindingNode","wrapClass","buildDecoratedClass","extractComputedKeys","buildFieldsInitNodes","superClass","injectInitialization","referenceVisitor","state","prop","static","traverse","wrappedPath","insertBefore","insertAfter","find","parent","isStatement","isDeclaration","ExportDefaultDeclaration","decl","splitExportDeclaration","type"],"sources":["../src/index.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { PluginAPI, PluginObject } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\nimport nameFunction from \"@babel/helper-function-name\";\nimport splitExportDeclaration from \"@babel/helper-split-export-declaration\";\n\nimport semver from \"semver\";\n\nimport {\n buildPrivateNamesNodes,\n buildPrivateNamesMap,\n transformPrivateNamesUsage,\n buildFieldsInitNodes,\n buildCheckInRHS,\n} from \"./fields.ts\";\nimport type { PropPath } from \"./fields.ts\";\nimport { buildDecoratedClass, hasDecorators } from \"./decorators.ts\";\nimport { injectInitialization, extractComputedKeys } from \"./misc.ts\";\nimport {\n enableFeature,\n FEATURES,\n isLoose,\n shouldTransform,\n} from \"./features.ts\";\nimport { assertFieldTransformed } from \"./typescript.ts\";\n\nexport { FEATURES, enableFeature, injectInitialization, buildCheckInRHS };\n\nconst versionKey = \"@babel/plugin-class-features/version\";\n\ninterface Options {\n name: string;\n feature: number;\n loose?: boolean;\n inherits?: PluginObject[\"inherits\"];\n manipulateOptions?: PluginObject[\"manipulateOptions\"];\n api?: PluginAPI;\n}\n\nexport function createClassFeaturePlugin({\n name,\n feature,\n loose,\n manipulateOptions,\n api,\n inherits,\n}: Options): PluginObject {\n if (!process.env.BABEL_8_BREAKING) {\n api ??= { assumption: () => void 0 as any } as any;\n }\n const setPublicClassFields = api.assumption(\"setPublicClassFields\");\n const privateFieldsAsSymbols = api.assumption(\"privateFieldsAsSymbols\");\n const privateFieldsAsProperties = api.assumption(\"privateFieldsAsProperties\");\n const constantSuper = api.assumption(\"constantSuper\");\n const noDocumentAll = api.assumption(\"noDocumentAll\");\n\n if (privateFieldsAsProperties && privateFieldsAsSymbols) {\n throw new Error(\n `Cannot enable both the \"privateFieldsAsProperties\" and ` +\n `\"privateFieldsAsSymbols\" assumptions as the same time.`,\n );\n }\n const privateFieldsAsSymbolsOrProperties =\n privateFieldsAsProperties || privateFieldsAsSymbols;\n\n if (loose === true) {\n type AssumptionName = Parameters<PluginAPI[\"assumption\"]>[0];\n const explicit: `\"${AssumptionName}\"`[] = [];\n\n if (setPublicClassFields !== undefined) {\n explicit.push(`\"setPublicClassFields\"`);\n }\n if (privateFieldsAsProperties !== undefined) {\n explicit.push(`\"privateFieldsAsProperties\"`);\n }\n if (privateFieldsAsSymbols !== undefined) {\n explicit.push(`\"privateFieldsAsSymbols\"`);\n }\n if (explicit.length !== 0) {\n console.warn(\n `[${name}]: You are using the \"loose: true\" option and you are` +\n ` explicitly setting a value for the ${explicit.join(\" and \")}` +\n ` assumption${explicit.length > 1 ? \"s\" : \"\"}. The \"loose\" option` +\n ` can cause incompatibilities with the other class features` +\n ` plugins, so it's recommended that you replace it with the` +\n ` following top-level option:\\n` +\n `\\t\"assumptions\": {\\n` +\n `\\t\\t\"setPublicClassFields\": true,\\n` +\n `\\t\\t\"privateFieldsAsSymbols\": true\\n` +\n `\\t}`,\n );\n }\n }\n\n return {\n name,\n manipulateOptions,\n inherits,\n\n pre(file) {\n enableFeature(file, feature, loose);\n\n if (!process.env.BABEL_8_BREAKING) {\n // Until 7.21.4, we used to encode the version as a number.\n // If file.get(versionKey) is a number, it has thus been\n // set by an older version of this plugin.\n if (typeof file.get(versionKey) === \"number\") {\n file.set(versionKey, PACKAGE_JSON.version);\n return;\n }\n }\n if (\n !file.get(versionKey) ||\n semver.lt(file.get(versionKey), PACKAGE_JSON.version)\n ) {\n file.set(versionKey, PACKAGE_JSON.version);\n }\n },\n\n visitor: {\n Class(path, { file }) {\n if (file.get(versionKey) !== PACKAGE_JSON.version) return;\n\n if (!shouldTransform(path, file)) return;\n\n const pathIsClassDeclaration = path.isClassDeclaration();\n\n if (pathIsClassDeclaration) assertFieldTransformed(path);\n\n const loose = isLoose(file, feature);\n\n let constructor: NodePath<t.ClassMethod>;\n const isDecorated = hasDecorators(path.node);\n const props: PropPath[] = [];\n const elements = [];\n const computedPaths: NodePath<t.ClassProperty | t.ClassMethod>[] = [];\n const privateNames = new Set<string>();\n const body = path.get(\"body\");\n\n for (const path of body.get(\"body\")) {\n if (\n // check path.node.computed is enough, but ts will complain\n (path.isClassProperty() || path.isClassMethod()) &&\n path.node.computed\n ) {\n computedPaths.push(path);\n }\n\n if (path.isPrivate()) {\n const { name } = path.node.key.id;\n const getName = `get ${name}`;\n const setName = `set ${name}`;\n\n if (path.isClassPrivateMethod()) {\n if (path.node.kind === \"get\") {\n if (\n privateNames.has(getName) ||\n (privateNames.has(name) && !privateNames.has(setName))\n ) {\n throw path.buildCodeFrameError(\"Duplicate private field\");\n }\n privateNames.add(getName).add(name);\n } else if (path.node.kind === \"set\") {\n if (\n privateNames.has(setName) ||\n (privateNames.has(name) && !privateNames.has(getName))\n ) {\n throw path.buildCodeFrameError(\"Duplicate private field\");\n }\n privateNames.add(setName).add(name);\n }\n } else {\n if (\n (privateNames.has(name) &&\n !privateNames.has(getName) &&\n !privateNames.has(setName)) ||\n (privateNames.has(name) &&\n (privateNames.has(getName) || privateNames.has(setName)))\n ) {\n throw path.buildCodeFrameError(\"Duplicate private field\");\n }\n\n privateNames.add(name);\n }\n }\n\n if (path.isClassMethod({ kind: \"constructor\" })) {\n constructor = path;\n } else {\n elements.push(path);\n if (\n path.isProperty() ||\n path.isPrivate() ||\n path.isStaticBlock?.()\n ) {\n props.push(path as PropPath);\n }\n }\n }\n\n if (process.env.BABEL_8_BREAKING) {\n if (!props.length) return;\n } else {\n if (!props.length && !isDecorated) return;\n }\n\n const innerBinding = path.node.id;\n let ref: t.Identifier | null;\n if (!innerBinding || !pathIsClassDeclaration) {\n nameFunction(path);\n ref = path.scope.generateUidIdentifier(\"class\");\n }\n const classRefForDefine = ref ?? t.cloneNode(innerBinding);\n\n // NODE: These three functions don't support decorators yet,\n // but verifyUsedFeatures throws if there are both\n // decorators and private fields.\n const privateNamesMap = buildPrivateNamesMap(props);\n const privateNamesNodes = buildPrivateNamesNodes(\n privateNamesMap,\n privateFieldsAsProperties ?? loose,\n privateFieldsAsSymbols ?? false,\n file,\n );\n\n transformPrivateNamesUsage(\n classRefForDefine,\n path,\n privateNamesMap,\n {\n privateFieldsAsProperties:\n privateFieldsAsSymbolsOrProperties ?? loose,\n noDocumentAll,\n innerBinding,\n },\n file,\n );\n\n let keysNodes: t.Statement[],\n staticNodes: t.Statement[],\n instanceNodes: t.Statement[],\n pureStaticNodes: t.FunctionDeclaration[],\n classBindingNode: t.Statement | null,\n wrapClass: (path: NodePath<t.Class>) => NodePath;\n\n if (!process.env.BABEL_8_BREAKING) {\n if (isDecorated) {\n staticNodes = pureStaticNodes = keysNodes = [];\n ({ instanceNodes, wrapClass } = buildDecoratedClass(\n classRefForDefine,\n path,\n elements,\n file,\n ));\n } else {\n keysNodes = extractComputedKeys(path, computedPaths, file);\n ({\n staticNodes,\n pureStaticNodes,\n instanceNodes,\n classBindingNode,\n wrapClass,\n } = buildFieldsInitNodes(\n ref,\n path.node.superClass,\n props,\n privateNamesMap,\n file,\n setPublicClassFields ?? loose,\n privateFieldsAsSymbolsOrProperties ?? loose,\n constantSuper ?? loose,\n innerBinding,\n ));\n }\n } else {\n keysNodes = extractComputedKeys(path, computedPaths, file);\n ({\n staticNodes,\n pureStaticNodes,\n instanceNodes,\n classBindingNode,\n wrapClass,\n } = buildFieldsInitNodes(\n ref,\n path.node.superClass,\n props,\n privateNamesMap,\n file,\n setPublicClassFields ?? loose,\n privateFieldsAsSymbolsOrProperties ?? loose,\n constantSuper ?? loose,\n innerBinding,\n ));\n }\n\n if (instanceNodes.length > 0) {\n injectInitialization(\n path,\n constructor,\n instanceNodes,\n (referenceVisitor, state) => {\n if (!process.env.BABEL_8_BREAKING) {\n if (isDecorated) return;\n }\n for (const prop of props) {\n // @ts-expect-error: TS doesn't infer that prop.node is not a StaticBlock\n if (t.isStaticBlock?.(prop.node) || prop.node.static) continue;\n prop.traverse(referenceVisitor, state);\n }\n },\n );\n }\n\n // rename to make ts happy\n const wrappedPath = wrapClass(path);\n wrappedPath.insertBefore([...privateNamesNodes, ...keysNodes]);\n if (staticNodes.length > 0) {\n wrappedPath.insertAfter(staticNodes);\n }\n if (pureStaticNodes.length > 0) {\n wrappedPath\n .find(parent => parent.isStatement() || parent.isDeclaration())\n .insertAfter(pureStaticNodes);\n }\n if (classBindingNode != null && pathIsClassDeclaration) {\n wrappedPath.insertAfter(classBindingNode);\n }\n },\n\n ExportDefaultDeclaration(path, { file }) {\n if (!process.env.BABEL_8_BREAKING) {\n if (file.get(versionKey) !== PACKAGE_JSON.version) return;\n\n const decl = path.get(\"declaration\");\n\n if (decl.isClassDeclaration() && hasDecorators(decl.node)) {\n if (decl.node.id) {\n // export default class Foo {}\n // -->\n // class Foo {} export { Foo as default }\n splitExportDeclaration(path);\n } else {\n // @ts-expect-error Anonymous class declarations can be\n // transformed as if they were expressions\n decl.node.type = \"ClassExpression\";\n }\n }\n }\n },\n },\n };\n}\n"],"mappings":"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"} \ No newline at end of file
+{"version":3,"names":["_core","require","_helperFunctionName","_helperSplitExportDeclaration","_semver","_fields","_decorators","_misc","_features","_typescript","versionKey","createClassFeaturePlugin","name","feature","loose","manipulateOptions","api","inherits","_api","assumption","setPublicClassFields","privateFieldsAsSymbols","privateFieldsAsProperties","constantSuper","noDocumentAll","Error","privateFieldsAsSymbolsOrProperties","explicit","undefined","push","length","console","warn","join","pre","file","enableFeature","get","set","semver","lt","visitor","Class","path","_ref","shouldTransform","pathIsClassDeclaration","isClassDeclaration","assertFieldTransformed","isLoose","constructor","isDecorated","hasDecorators","node","props","elements","computedPaths","privateNames","Set","body","isClassProperty","isClassMethod","computed","isPrivate","key","id","getName","setName","isClassPrivateMethod","kind","has","buildCodeFrameError","add","isProperty","isStaticBlock","innerBinding","ref","nameFunction","scope","generateUidIdentifier","classRefForDefine","t","cloneNode","privateNamesMap","buildPrivateNamesMap","privateNamesNodes","buildPrivateNamesNodes","transformPrivateNamesUsage","keysNodes","staticNodes","instanceNodes","lastInstanceNodeReturnsThis","pureStaticNodes","classBindingNode","wrapClass","buildDecoratedClass","extractComputedKeys","buildFieldsInitNodes","superClass","injectInitialization","referenceVisitor","state","prop","static","traverse","wrappedPath","insertBefore","insertAfter","find","parent","isStatement","isDeclaration","ExportDefaultDeclaration","decl","splitExportDeclaration","type"],"sources":["../src/index.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { PluginAPI, PluginObject } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\nimport nameFunction from \"@babel/helper-function-name\";\nimport splitExportDeclaration from \"@babel/helper-split-export-declaration\";\n\nimport semver from \"semver\";\n\nimport {\n buildPrivateNamesNodes,\n buildPrivateNamesMap,\n transformPrivateNamesUsage,\n buildFieldsInitNodes,\n buildCheckInRHS,\n} from \"./fields.ts\";\nimport type { PropPath } from \"./fields.ts\";\nimport { buildDecoratedClass, hasDecorators } from \"./decorators.ts\";\nimport { injectInitialization, extractComputedKeys } from \"./misc.ts\";\nimport {\n enableFeature,\n FEATURES,\n isLoose,\n shouldTransform,\n} from \"./features.ts\";\nimport { assertFieldTransformed } from \"./typescript.ts\";\n\nexport { FEATURES, enableFeature, injectInitialization, buildCheckInRHS };\n\nconst versionKey = \"@babel/plugin-class-features/version\";\n\ninterface Options {\n name: string;\n feature: number;\n loose?: boolean;\n inherits?: PluginObject[\"inherits\"];\n manipulateOptions?: PluginObject[\"manipulateOptions\"];\n api?: PluginAPI;\n}\n\nexport function createClassFeaturePlugin({\n name,\n feature,\n loose,\n manipulateOptions,\n api,\n inherits,\n}: Options): PluginObject {\n if (!process.env.BABEL_8_BREAKING) {\n api ??= { assumption: () => void 0 as any } as any;\n }\n const setPublicClassFields = api.assumption(\"setPublicClassFields\");\n const privateFieldsAsSymbols = api.assumption(\"privateFieldsAsSymbols\");\n const privateFieldsAsProperties = api.assumption(\"privateFieldsAsProperties\");\n const constantSuper = api.assumption(\"constantSuper\");\n const noDocumentAll = api.assumption(\"noDocumentAll\");\n\n if (privateFieldsAsProperties && privateFieldsAsSymbols) {\n throw new Error(\n `Cannot enable both the \"privateFieldsAsProperties\" and ` +\n `\"privateFieldsAsSymbols\" assumptions as the same time.`,\n );\n }\n const privateFieldsAsSymbolsOrProperties =\n privateFieldsAsProperties || privateFieldsAsSymbols;\n\n if (loose === true) {\n type AssumptionName = Parameters<PluginAPI[\"assumption\"]>[0];\n const explicit: `\"${AssumptionName}\"`[] = [];\n\n if (setPublicClassFields !== undefined) {\n explicit.push(`\"setPublicClassFields\"`);\n }\n if (privateFieldsAsProperties !== undefined) {\n explicit.push(`\"privateFieldsAsProperties\"`);\n }\n if (privateFieldsAsSymbols !== undefined) {\n explicit.push(`\"privateFieldsAsSymbols\"`);\n }\n if (explicit.length !== 0) {\n console.warn(\n `[${name}]: You are using the \"loose: true\" option and you are` +\n ` explicitly setting a value for the ${explicit.join(\" and \")}` +\n ` assumption${explicit.length > 1 ? \"s\" : \"\"}. The \"loose\" option` +\n ` can cause incompatibilities with the other class features` +\n ` plugins, so it's recommended that you replace it with the` +\n ` following top-level option:\\n` +\n `\\t\"assumptions\": {\\n` +\n `\\t\\t\"setPublicClassFields\": true,\\n` +\n `\\t\\t\"privateFieldsAsSymbols\": true\\n` +\n `\\t}`,\n );\n }\n }\n\n return {\n name,\n manipulateOptions,\n inherits,\n\n pre(file) {\n enableFeature(file, feature, loose);\n\n if (!process.env.BABEL_8_BREAKING) {\n // Until 7.21.4, we used to encode the version as a number.\n // If file.get(versionKey) is a number, it has thus been\n // set by an older version of this plugin.\n if (typeof file.get(versionKey) === \"number\") {\n file.set(versionKey, PACKAGE_JSON.version);\n return;\n }\n }\n if (\n !file.get(versionKey) ||\n semver.lt(file.get(versionKey), PACKAGE_JSON.version)\n ) {\n file.set(versionKey, PACKAGE_JSON.version);\n }\n },\n\n visitor: {\n Class(path, { file }) {\n if (file.get(versionKey) !== PACKAGE_JSON.version) return;\n\n if (!shouldTransform(path, file)) return;\n\n const pathIsClassDeclaration = path.isClassDeclaration();\n\n if (pathIsClassDeclaration) assertFieldTransformed(path);\n\n const loose = isLoose(file, feature);\n\n let constructor: NodePath<t.ClassMethod>;\n const isDecorated = hasDecorators(path.node);\n const props: PropPath[] = [];\n const elements = [];\n const computedPaths: NodePath<t.ClassProperty | t.ClassMethod>[] = [];\n const privateNames = new Set<string>();\n const body = path.get(\"body\");\n\n for (const path of body.get(\"body\")) {\n if (\n // check path.node.computed is enough, but ts will complain\n (path.isClassProperty() || path.isClassMethod()) &&\n path.node.computed\n ) {\n computedPaths.push(path);\n }\n\n if (path.isPrivate()) {\n const { name } = path.node.key.id;\n const getName = `get ${name}`;\n const setName = `set ${name}`;\n\n if (path.isClassPrivateMethod()) {\n if (path.node.kind === \"get\") {\n if (\n privateNames.has(getName) ||\n (privateNames.has(name) && !privateNames.has(setName))\n ) {\n throw path.buildCodeFrameError(\"Duplicate private field\");\n }\n privateNames.add(getName).add(name);\n } else if (path.node.kind === \"set\") {\n if (\n privateNames.has(setName) ||\n (privateNames.has(name) && !privateNames.has(getName))\n ) {\n throw path.buildCodeFrameError(\"Duplicate private field\");\n }\n privateNames.add(setName).add(name);\n }\n } else {\n if (\n (privateNames.has(name) &&\n !privateNames.has(getName) &&\n !privateNames.has(setName)) ||\n (privateNames.has(name) &&\n (privateNames.has(getName) || privateNames.has(setName)))\n ) {\n throw path.buildCodeFrameError(\"Duplicate private field\");\n }\n\n privateNames.add(name);\n }\n }\n\n if (path.isClassMethod({ kind: \"constructor\" })) {\n constructor = path;\n } else {\n elements.push(path);\n if (\n path.isProperty() ||\n path.isPrivate() ||\n path.isStaticBlock?.()\n ) {\n props.push(path as PropPath);\n }\n }\n }\n\n if (process.env.BABEL_8_BREAKING) {\n if (!props.length) return;\n } else {\n if (!props.length && !isDecorated) return;\n }\n\n const innerBinding = path.node.id;\n let ref: t.Identifier | null;\n if (!innerBinding || !pathIsClassDeclaration) {\n nameFunction(path);\n ref = path.scope.generateUidIdentifier(\"class\");\n }\n const classRefForDefine = ref ?? t.cloneNode(innerBinding);\n\n // NODE: These three functions don't support decorators yet,\n // but verifyUsedFeatures throws if there are both\n // decorators and private fields.\n const privateNamesMap = buildPrivateNamesMap(props);\n const privateNamesNodes = buildPrivateNamesNodes(\n privateNamesMap,\n privateFieldsAsProperties ?? loose,\n privateFieldsAsSymbols ?? false,\n file,\n );\n\n transformPrivateNamesUsage(\n classRefForDefine,\n path,\n privateNamesMap,\n {\n privateFieldsAsProperties:\n privateFieldsAsSymbolsOrProperties ?? loose,\n noDocumentAll,\n innerBinding,\n },\n file,\n );\n\n let keysNodes: t.Statement[],\n staticNodes: t.Statement[],\n instanceNodes: t.ExpressionStatement[],\n lastInstanceNodeReturnsThis: boolean,\n pureStaticNodes: t.FunctionDeclaration[],\n classBindingNode: t.Statement | null,\n wrapClass: (path: NodePath<t.Class>) => NodePath;\n\n if (!process.env.BABEL_8_BREAKING) {\n if (isDecorated) {\n staticNodes = pureStaticNodes = keysNodes = [];\n ({ instanceNodes, wrapClass } = buildDecoratedClass(\n classRefForDefine,\n path,\n elements,\n file,\n ));\n } else {\n keysNodes = extractComputedKeys(path, computedPaths, file);\n ({\n staticNodes,\n pureStaticNodes,\n instanceNodes,\n lastInstanceNodeReturnsThis,\n classBindingNode,\n wrapClass,\n } = buildFieldsInitNodes(\n ref,\n path.node.superClass,\n props,\n privateNamesMap,\n file,\n setPublicClassFields ?? loose,\n privateFieldsAsSymbolsOrProperties ?? loose,\n constantSuper ?? loose,\n innerBinding,\n ));\n }\n } else {\n keysNodes = extractComputedKeys(path, computedPaths, file);\n ({\n staticNodes,\n pureStaticNodes,\n instanceNodes,\n lastInstanceNodeReturnsThis,\n classBindingNode,\n wrapClass,\n } = buildFieldsInitNodes(\n ref,\n path.node.superClass,\n props,\n privateNamesMap,\n file,\n setPublicClassFields ?? loose,\n privateFieldsAsSymbolsOrProperties ?? loose,\n constantSuper ?? loose,\n innerBinding,\n ));\n }\n\n if (instanceNodes.length > 0) {\n injectInitialization(\n path,\n constructor,\n instanceNodes,\n (referenceVisitor, state) => {\n if (!process.env.BABEL_8_BREAKING) {\n if (isDecorated) return;\n }\n for (const prop of props) {\n // @ts-expect-error: TS doesn't infer that prop.node is not a StaticBlock\n if (t.isStaticBlock?.(prop.node) || prop.node.static) continue;\n prop.traverse(referenceVisitor, state);\n }\n },\n lastInstanceNodeReturnsThis,\n );\n }\n\n // rename to make ts happy\n const wrappedPath = wrapClass(path);\n wrappedPath.insertBefore([...privateNamesNodes, ...keysNodes]);\n if (staticNodes.length > 0) {\n wrappedPath.insertAfter(staticNodes);\n }\n if (pureStaticNodes.length > 0) {\n wrappedPath\n .find(parent => parent.isStatement() || parent.isDeclaration())\n .insertAfter(pureStaticNodes);\n }\n if (classBindingNode != null && pathIsClassDeclaration) {\n wrappedPath.insertAfter(classBindingNode);\n }\n },\n\n ExportDefaultDeclaration(path, { file }) {\n if (!process.env.BABEL_8_BREAKING) {\n if (file.get(versionKey) !== PACKAGE_JSON.version) return;\n\n const decl = path.get(\"declaration\");\n\n if (decl.isClassDeclaration() && hasDecorators(decl.node)) {\n if (decl.node.id) {\n // export default class Foo {}\n // -->\n // class Foo {} export { Foo as default }\n splitExportDeclaration(path);\n } else {\n // @ts-expect-error Anonymous class declarations can be\n // transformed as if they were expressions\n decl.node.type = \"ClassExpression\";\n }\n }\n }\n },\n },\n };\n}\n"],"mappings":"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"} \ No newline at end of file
diff --git a/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js b/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js
index 8a4f662f..27b5a844 100644
--- a/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js
+++ b/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js
@@ -44,7 +44,7 @@ function handleClassTDZ(path, state) {
const classFieldDefinitionEvaluationTDZVisitor = {
ReferencedIdentifier: handleClassTDZ
};
-function injectInitialization(path, constructor, nodes, renamer) {
+function injectInitialization(path, constructor, nodes, renamer, lastReturnsThis) {
if (!nodes.length) return;
const isDerived = !!path.node.superClass;
if (!constructor) {
@@ -66,10 +66,16 @@ function injectInitialization(path, constructor, nodes, renamer) {
let isFirst = true;
for (const bareSuper of bareSupers) {
if (isFirst) {
- bareSuper.insertAfter(nodes);
isFirst = false;
} else {
- bareSuper.insertAfter(nodes.map(n => _core.types.cloneNode(n)));
+ nodes = nodes.map(n => _core.types.cloneNode(n));
+ }
+ if (!bareSuper.parentPath.isExpressionStatement()) {
+ const allNodes = [bareSuper.node, ...nodes.map(n => _core.types.toExpression(n))];
+ if (!lastReturnsThis) allNodes.push(_core.types.thisExpression());
+ bareSuper.replaceWith(_core.types.sequenceExpression(allNodes));
+ } else {
+ bareSuper.insertAfter(nodes);
}
}
} else {
@@ -91,13 +97,25 @@ function extractComputedKeys(path, computedPaths, file) {
}
const computedNode = computedPath.node;
if (!computedKey.isConstantExpression()) {
- const ident = path.scope.generateUidIdentifierBasedOnNode(computedNode.key);
- path.scope.push({
- id: ident,
- kind: "let"
- });
- declarations.push(_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(ident), computedNode.key)));
- computedNode.key = _core.types.cloneNode(ident);
+ const scope = path.scope;
+ const isUidReference = _core.types.isIdentifier(computedKey.node) && scope.hasUid(computedKey.node.name);
+ const isMemoiseAssignment = computedKey.isAssignmentExpression({
+ operator: "="
+ }) && _core.types.isIdentifier(computedKey.node.left) && scope.hasUid(computedKey.node.left.name);
+ if (isUidReference) {
+ continue;
+ } else if (isMemoiseAssignment) {
+ declarations.push(_core.types.expressionStatement(_core.types.cloneNode(computedNode.key)));
+ computedNode.key = _core.types.cloneNode(computedNode.key.left);
+ } else {
+ const ident = path.scope.generateUidIdentifierBasedOnNode(computedNode.key);
+ scope.push({
+ id: ident,
+ kind: "let"
+ });
+ declarations.push(_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(ident), computedNode.key)));
+ computedNode.key = _core.types.cloneNode(ident);
+ }
}
}
return declarations;
diff --git a/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map b/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map
index 86ee193b..6f89dbdd 100644
--- a/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map
+++ b/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map
@@ -1 +1 @@
-{"version":3,"names":["_core","require","_helperEnvironmentVisitor","findBareSupers","traverse","visitors","merge","Super","path","node","parentPath","isCallExpression","callee","push","environmentVisitor","referenceVisitor","TSTypeAnnotation|TypeAnnotation","skip","ReferencedIdentifier","scope","hasOwnBinding","name","rename","handleClassTDZ","state","classBinding","getBinding","classNameTDZError","file","addHelper","throwNode","t","callExpression","stringLiteral","replaceWith","sequenceExpression","classFieldDefinitionEvaluationTDZVisitor","injectInitialization","constructor","nodes","renamer","length","isDerived","superClass","newConstructor","classMethod","identifier","blockStatement","params","restElement","body","template","statement","ast","get","unshiftContainer","bareSupers","isFirst","bareSuper","insertAfter","map","n","cloneNode","extractComputedKeys","computedPaths","declarations","id","computedPath","computedKey","isReferencedIdentifier","computedNode","isConstantExpression","ident","generateUidIdentifierBasedOnNode","key","kind","expressionStatement","assignmentExpression"],"sources":["../src/misc.ts"],"sourcesContent":["import { template, traverse, types as t } from \"@babel/core\";\nimport type { File } from \"@babel/core\";\nimport type { NodePath, Scope, Visitor, Binding } from \"@babel/traverse\";\nimport environmentVisitor from \"@babel/helper-environment-visitor\";\n\nconst findBareSupers = traverse.visitors.merge<NodePath<t.CallExpression>[]>([\n {\n Super(path) {\n const { node, parentPath } = path;\n if (parentPath.isCallExpression({ callee: node })) {\n this.push(parentPath);\n }\n },\n },\n environmentVisitor,\n]);\n\nconst referenceVisitor: Visitor<{ scope: Scope }> = {\n \"TSTypeAnnotation|TypeAnnotation\"(\n path: NodePath<t.TSTypeAnnotation | t.TypeAnnotation>,\n ) {\n path.skip();\n },\n\n ReferencedIdentifier(path: NodePath<t.Identifier>, { scope }) {\n if (scope.hasOwnBinding(path.node.name)) {\n scope.rename(path.node.name);\n path.skip();\n }\n },\n};\n\ntype HandleClassTDZState = {\n classBinding: Binding;\n file: File;\n};\n\nfunction handleClassTDZ(\n path: NodePath<t.Identifier>,\n state: HandleClassTDZState,\n) {\n if (\n state.classBinding &&\n state.classBinding === path.scope.getBinding(path.node.name)\n ) {\n const classNameTDZError = state.file.addHelper(\"classNameTDZError\");\n const throwNode = t.callExpression(classNameTDZError, [\n t.stringLiteral(path.node.name),\n ]);\n\n path.replaceWith(t.sequenceExpression([throwNode, path.node]));\n path.skip();\n }\n}\n\nconst classFieldDefinitionEvaluationTDZVisitor: Visitor<HandleClassTDZState> = {\n ReferencedIdentifier: handleClassTDZ,\n};\n\ninterface RenamerState {\n scope: Scope;\n}\n\nexport function injectInitialization(\n path: NodePath<t.Class>,\n constructor: NodePath<t.ClassMethod> | undefined,\n nodes: t.Statement[],\n renamer?: (visitor: Visitor<RenamerState>, state: RenamerState) => void,\n) {\n if (!nodes.length) return;\n\n const isDerived = !!path.node.superClass;\n\n if (!constructor) {\n const newConstructor = t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [],\n t.blockStatement([]),\n );\n\n if (isDerived) {\n newConstructor.params = [t.restElement(t.identifier(\"args\"))];\n newConstructor.body.body.push(template.statement.ast`super(...args)`);\n }\n\n [constructor] = path\n .get(\"body\")\n .unshiftContainer(\"body\", newConstructor) as NodePath<t.ClassMethod>[];\n }\n\n if (renamer) {\n renamer(referenceVisitor, { scope: constructor.scope });\n }\n\n if (isDerived) {\n const bareSupers: NodePath<t.CallExpression>[] = [];\n constructor.traverse(findBareSupers, bareSupers);\n let isFirst = true;\n for (const bareSuper of bareSupers) {\n if (isFirst) {\n bareSuper.insertAfter(nodes);\n isFirst = false;\n } else {\n bareSuper.insertAfter(nodes.map(n => t.cloneNode(n)));\n }\n }\n } else {\n constructor.get(\"body\").unshiftContainer(\"body\", nodes);\n }\n}\n\nexport function extractComputedKeys(\n path: NodePath<t.Class>,\n computedPaths: NodePath<t.ClassProperty | t.ClassMethod>[],\n file: File,\n) {\n const declarations: t.ExpressionStatement[] = [];\n const state = {\n classBinding: path.node.id && path.scope.getBinding(path.node.id.name),\n file,\n };\n for (const computedPath of computedPaths) {\n const computedKey = computedPath.get(\"key\");\n if (computedKey.isReferencedIdentifier()) {\n handleClassTDZ(computedKey, state);\n } else {\n computedKey.traverse(classFieldDefinitionEvaluationTDZVisitor, state);\n }\n\n const computedNode = computedPath.node;\n // Make sure computed property names are only evaluated once (upon class definition)\n // and in the right order in combination with static properties\n if (!computedKey.isConstantExpression()) {\n const ident = path.scope.generateUidIdentifierBasedOnNode(\n computedNode.key,\n );\n // Declaring in the same block scope\n // Ref: https://github.com/babel/babel/pull/10029/files#diff-fbbdd83e7a9c998721c1484529c2ce92\n path.scope.push({\n id: ident,\n kind: \"let\",\n });\n declarations.push(\n t.expressionStatement(\n t.assignmentExpression(\"=\", t.cloneNode(ident), computedNode.key),\n ),\n );\n computedNode.key = t.cloneNode(ident);\n }\n }\n\n return declarations;\n}\n"],"mappings":"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"} \ No newline at end of file
+{"version":3,"names":["_core","require","_helperEnvironmentVisitor","findBareSupers","traverse","visitors","merge","Super","path","node","parentPath","isCallExpression","callee","push","environmentVisitor","referenceVisitor","TSTypeAnnotation|TypeAnnotation","skip","ReferencedIdentifier","scope","hasOwnBinding","name","rename","handleClassTDZ","state","classBinding","getBinding","classNameTDZError","file","addHelper","throwNode","t","callExpression","stringLiteral","replaceWith","sequenceExpression","classFieldDefinitionEvaluationTDZVisitor","injectInitialization","constructor","nodes","renamer","lastReturnsThis","length","isDerived","superClass","newConstructor","classMethod","identifier","blockStatement","params","restElement","body","template","statement","ast","get","unshiftContainer","bareSupers","isFirst","bareSuper","map","n","cloneNode","isExpressionStatement","allNodes","toExpression","thisExpression","insertAfter","extractComputedKeys","computedPaths","declarations","id","computedPath","computedKey","isReferencedIdentifier","computedNode","isConstantExpression","isUidReference","isIdentifier","hasUid","isMemoiseAssignment","isAssignmentExpression","operator","left","expressionStatement","key","ident","generateUidIdentifierBasedOnNode","kind","assignmentExpression"],"sources":["../src/misc.ts"],"sourcesContent":["import { template, traverse, types as t } from \"@babel/core\";\nimport type { File } from \"@babel/core\";\nimport type { NodePath, Scope, Visitor, Binding } from \"@babel/traverse\";\nimport environmentVisitor from \"@babel/helper-environment-visitor\";\n\nconst findBareSupers = traverse.visitors.merge<NodePath<t.CallExpression>[]>([\n {\n Super(path) {\n const { node, parentPath } = path;\n if (parentPath.isCallExpression({ callee: node })) {\n this.push(parentPath);\n }\n },\n },\n environmentVisitor,\n]);\n\nconst referenceVisitor: Visitor<{ scope: Scope }> = {\n \"TSTypeAnnotation|TypeAnnotation\"(\n path: NodePath<t.TSTypeAnnotation | t.TypeAnnotation>,\n ) {\n path.skip();\n },\n\n ReferencedIdentifier(path: NodePath<t.Identifier>, { scope }) {\n if (scope.hasOwnBinding(path.node.name)) {\n scope.rename(path.node.name);\n path.skip();\n }\n },\n};\n\ntype HandleClassTDZState = {\n classBinding: Binding;\n file: File;\n};\n\nfunction handleClassTDZ(\n path: NodePath<t.Identifier>,\n state: HandleClassTDZState,\n) {\n if (\n state.classBinding &&\n state.classBinding === path.scope.getBinding(path.node.name)\n ) {\n const classNameTDZError = state.file.addHelper(\"classNameTDZError\");\n const throwNode = t.callExpression(classNameTDZError, [\n t.stringLiteral(path.node.name),\n ]);\n\n path.replaceWith(t.sequenceExpression([throwNode, path.node]));\n path.skip();\n }\n}\n\nconst classFieldDefinitionEvaluationTDZVisitor: Visitor<HandleClassTDZState> = {\n ReferencedIdentifier: handleClassTDZ,\n};\n\ninterface RenamerState {\n scope: Scope;\n}\n\nexport function injectInitialization(\n path: NodePath<t.Class>,\n constructor: NodePath<t.ClassMethod> | undefined,\n nodes: t.ExpressionStatement[],\n renamer?: (visitor: Visitor<RenamerState>, state: RenamerState) => void,\n lastReturnsThis?: boolean,\n) {\n if (!nodes.length) return;\n\n const isDerived = !!path.node.superClass;\n\n if (!constructor) {\n const newConstructor = t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [],\n t.blockStatement([]),\n );\n\n if (isDerived) {\n newConstructor.params = [t.restElement(t.identifier(\"args\"))];\n newConstructor.body.body.push(template.statement.ast`super(...args)`);\n }\n\n [constructor] = path\n .get(\"body\")\n .unshiftContainer(\"body\", newConstructor) as NodePath<t.ClassMethod>[];\n }\n\n if (renamer) {\n renamer(referenceVisitor, { scope: constructor.scope });\n }\n\n if (isDerived) {\n const bareSupers: NodePath<t.CallExpression>[] = [];\n constructor.traverse(findBareSupers, bareSupers);\n let isFirst = true;\n for (const bareSuper of bareSupers) {\n if (isFirst) {\n isFirst = false;\n } else {\n nodes = nodes.map(n => t.cloneNode(n));\n }\n if (!bareSuper.parentPath.isExpressionStatement()) {\n const allNodes: t.Expression[] = [\n bareSuper.node,\n ...nodes.map(n => t.toExpression(n)),\n ];\n if (!lastReturnsThis) allNodes.push(t.thisExpression());\n bareSuper.replaceWith(t.sequenceExpression(allNodes));\n } else {\n bareSuper.insertAfter(nodes);\n }\n }\n } else {\n constructor.get(\"body\").unshiftContainer(\"body\", nodes);\n }\n}\n\nexport function extractComputedKeys(\n path: NodePath<t.Class>,\n computedPaths: NodePath<t.ClassProperty | t.ClassMethod>[],\n file: File,\n) {\n const declarations: t.ExpressionStatement[] = [];\n const state = {\n classBinding: path.node.id && path.scope.getBinding(path.node.id.name),\n file,\n };\n for (const computedPath of computedPaths) {\n const computedKey = computedPath.get(\"key\");\n if (computedKey.isReferencedIdentifier()) {\n handleClassTDZ(computedKey, state);\n } else {\n computedKey.traverse(classFieldDefinitionEvaluationTDZVisitor, state);\n }\n\n const computedNode = computedPath.node;\n // Make sure computed property names are only evaluated once (upon class definition)\n // and in the right order in combination with static properties\n if (!computedKey.isConstantExpression()) {\n const scope = path.scope;\n const isUidReference =\n t.isIdentifier(computedKey.node) && scope.hasUid(computedKey.node.name);\n const isMemoiseAssignment =\n computedKey.isAssignmentExpression({ operator: \"=\" }) &&\n t.isIdentifier(computedKey.node.left) &&\n scope.hasUid(computedKey.node.left.name);\n if (isUidReference) {\n continue;\n } else if (isMemoiseAssignment) {\n declarations.push(t.expressionStatement(t.cloneNode(computedNode.key)));\n computedNode.key = t.cloneNode(\n (computedNode.key as t.AssignmentExpression).left as t.Identifier,\n );\n } else {\n const ident = path.scope.generateUidIdentifierBasedOnNode(\n computedNode.key,\n );\n // Declaring in the same block scope\n // Ref: https://github.com/babel/babel/pull/10029/files#diff-fbbdd83e7a9c998721c1484529c2ce92\n scope.push({\n id: ident,\n kind: \"let\",\n });\n declarations.push(\n t.expressionStatement(\n t.assignmentExpression(\"=\", t.cloneNode(ident), computedNode.key),\n ),\n );\n computedNode.key = t.cloneNode(ident);\n }\n }\n }\n\n return declarations;\n}\n"],"mappings":"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"} \ No newline at end of file