Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

@babel/plugin-transform-explicit-resource-management

Package Overview
Dependencies
Maintainers
4
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@babel/plugin-transform-explicit-resource-management - npm Package Compare versions

Comparing version
8.0.0-rc.1
to
8.0.0-rc.2
+1
-2
lib/index.js

@@ -12,3 +12,3 @@ import { declare } from '@babel/helper-plugin-utils';

var index = declare(api => {
api.assertVersion("^7.23.9 || ^8.0.0 || 8.0.0-rc.1");
api.assertVersion("^7.23.9 || ^8.0.0 || 8.0.0-rc.2");
const TOP_LEVEL_USING = new Map();

@@ -83,3 +83,2 @@ function isUsingDeclaration(node) {

name: "transform-explicit-resource-management",
manipulateOptions: (_, p) => p.plugins.push("explicitResourceManagement"),
visitor: traverse.visitors.merge([transformUsingDeclarationsVisitor, {

@@ -86,0 +85,0 @@ Program(path) {

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { unshiftForXStatementBody } from \"@babel/plugin-transform-destructuring\";\nimport { types as t, template, traverse } from \"@babel/core\";\nimport type { NodePath, Visitor, PluginPass } from \"@babel/core\";\n\nconst enum USING_KIND {\n NORMAL,\n AWAIT,\n}\n\n// https://tc39.es/ecma262/#sec-isanonymousfunctiondefinition\nfunction isAnonymousFunctionDefinition(\n node: t.Node,\n): node is\n | t.ClassExpression\n | t.ArrowFunctionExpression\n | t.FunctionExpression {\n return (\n t.isArrowFunctionExpression(node) ||\n ((t.isFunctionExpression(node) || t.isClassExpression(node)) && !node.id)\n );\n}\n\nfunction emitSetFunctionNameCall(\n state: PluginPass,\n expression: t.Expression,\n name: string,\n) {\n return t.callExpression(state.addHelper(\"setFunctionName\"), [\n expression,\n t.stringLiteral(name),\n ]);\n}\n\nexport default declare(api => {\n // The first Babel 7 version with usingCtx helper support.\n api.assertVersion(REQUIRED_VERSION(\"^7.23.9 || ^8.0.0\"));\n\n const TOP_LEVEL_USING = new Map<t.Node, USING_KIND>();\n\n function isUsingDeclaration(node: t.Node): node is t.VariableDeclaration {\n if (!t.isVariableDeclaration(node)) return false;\n return (\n node.kind === \"using\" ||\n node.kind === \"await using\" ||\n TOP_LEVEL_USING.has(node)\n );\n }\n\n const transformUsingDeclarationsVisitor: Visitor<PluginPass> = {\n ForOfStatement(path: NodePath<t.ForOfStatement>) {\n const { left } = path.node;\n if (!isUsingDeclaration(left)) return;\n\n const { id } = left.declarations[0];\n const tmpId = path.scope.generateUidIdentifierBasedOnNode(id);\n left.declarations[0].id = tmpId;\n left.kind = \"const\";\n\n path.ensureBlock();\n unshiftForXStatementBody(path, [\n t.variableDeclaration(\"using\", [\n t.variableDeclarator(id, t.cloneNode(tmpId)),\n ]),\n ]);\n },\n \"BlockStatement|StaticBlock\"(\n path: NodePath<t.BlockStatement | t.StaticBlock>,\n state,\n ) {\n let ctx: t.Identifier | null = null;\n let needsAwait = false;\n const scope = path.scope;\n\n for (const node of path.node.body) {\n if (!isUsingDeclaration(node)) continue;\n ctx ??= scope.generateUidIdentifier(\"usingCtx\");\n const isAwaitUsing =\n node.kind === \"await using\" ||\n TOP_LEVEL_USING.get(node) === USING_KIND.AWAIT;\n needsAwait ||= isAwaitUsing;\n\n if (!TOP_LEVEL_USING.delete(node)) {\n node.kind = \"const\";\n }\n for (const decl of node.declarations) {\n const currentInit = decl.init;\n decl.init = t.callExpression(\n t.memberExpression(\n t.cloneNode(ctx),\n isAwaitUsing ? t.identifier(\"a\") : t.identifier(\"u\"),\n ),\n [\n isAnonymousFunctionDefinition(currentInit) &&\n t.isIdentifier(decl.id)\n ? emitSetFunctionNameCall(state, currentInit, decl.id.name)\n : currentInit,\n ],\n );\n }\n }\n if (!ctx) return;\n\n const disposeCall = t.callExpression(\n t.memberExpression(t.cloneNode(ctx), t.identifier(\"d\")),\n [],\n );\n\n const replacement = template.statement.ast`\n try {\n var ${t.cloneNode(ctx)} = ${state.addHelper(\"usingCtx\")}();\n ${path.node.body}\n } catch (_) {\n ${t.cloneNode(ctx)}.e = _;\n } finally {\n ${needsAwait ? t.awaitExpression(disposeCall) : disposeCall}\n }\n ` as t.TryStatement;\n\n t.inherits(replacement, path.node);\n\n const { parentPath } = path;\n if (\n parentPath.isFunction() ||\n parentPath.isTryStatement() ||\n parentPath.isCatchClause()\n ) {\n path.replaceWith(t.blockStatement([replacement]));\n } else if (path.isStaticBlock()) {\n path.node.body = [replacement];\n } else {\n path.replaceWith(replacement);\n }\n },\n };\n\n const transformUsingDeclarationsVisitorSkipFn: Visitor<PluginPass> =\n traverse.visitors.merge([\n transformUsingDeclarationsVisitor,\n {\n Function(path) {\n path.skip();\n },\n },\n ]);\n\n return {\n name: \"transform-explicit-resource-management\",\n manipulateOptions: (_, p) => p.plugins.push(\"explicitResourceManagement\"),\n\n visitor: traverse.visitors.merge([\n transformUsingDeclarationsVisitor,\n {\n // To transform top-level using declarations, we must wrap the\n // module body in a block after hoisting all the exports and imports.\n // This might cause some variables to be `undefined` rather than TDZ.\n Program(path) {\n TOP_LEVEL_USING.clear();\n\n if (path.node.sourceType !== \"module\") return;\n if (!path.node.body.some(isUsingDeclaration)) return;\n\n const innerBlockBody = [];\n for (const stmt of path.get(\"body\")) {\n if (stmt.isFunctionDeclaration() || stmt.isImportDeclaration()) {\n continue;\n }\n\n let node: t.Statement | t.Declaration = stmt.node;\n let shouldRemove = true;\n\n if (stmt.isExportDefaultDeclaration()) {\n let { declaration } = stmt.node;\n let varId;\n if (t.isClassDeclaration(declaration)) {\n varId = declaration.id;\n // Move the class id to the var binding such that the scope binding\n // info is correct. Then we clone one to ensure inner class reference\n // will stay same if the outer binding is mutated.\n declaration.id = t.cloneNode(varId);\n declaration = t.toExpression(declaration);\n } else if (!t.isExpression(declaration)) {\n continue;\n }\n\n varId ??= path.scope.generateUidIdentifier(\"_default\");\n innerBlockBody.push(\n t.variableDeclaration(\"var\", [\n t.variableDeclarator(varId, declaration),\n ]),\n );\n stmt.replaceWith(\n t.exportNamedDeclaration(null, [\n t.exportSpecifier(\n t.cloneNode(varId),\n t.identifier(\"default\"),\n ),\n ]),\n );\n continue;\n }\n\n if (stmt.isExportNamedDeclaration()) {\n node = stmt.node.declaration;\n if (!node || t.isFunction(node)) continue;\n\n stmt.replaceWith(\n t.exportNamedDeclaration(\n null,\n Object.keys(t.getOuterBindingIdentifiers(node, false)).map(\n id => t.exportSpecifier(t.identifier(id), t.identifier(id)),\n ),\n ),\n );\n shouldRemove = false;\n } else if (stmt.isExportDeclaration()) {\n continue;\n }\n\n if (t.isClassDeclaration(node)) {\n const { id } = node;\n node.id = t.cloneNode(id);\n innerBlockBody.push(\n t.variableDeclaration(\"var\", [\n t.variableDeclarator(id, t.toExpression(node)),\n ]),\n );\n } else if (t.isVariableDeclaration(node)) {\n if (node.kind === \"using\") {\n TOP_LEVEL_USING.set(stmt.node, USING_KIND.NORMAL);\n } else if (node.kind === \"await using\") {\n TOP_LEVEL_USING.set(stmt.node, USING_KIND.AWAIT);\n }\n node.kind = \"var\";\n innerBlockBody.push(node);\n } else {\n innerBlockBody.push(stmt.node);\n }\n\n if (shouldRemove) stmt.remove();\n }\n\n path.pushContainer(\"body\", t.blockStatement(innerBlockBody));\n },\n // We must transform `await using` in async functions before that\n // async-to-generator will transform `await` expressions into `yield`\n Function(path, state) {\n if (path.node.async) {\n path.traverse(transformUsingDeclarationsVisitorSkipFn, state);\n }\n },\n },\n ]),\n };\n});\n"],"names":["isAnonymousFunctionDefinition","node","t","isArrowFunctionExpression","isFunctionExpression","isClassExpression","id","emitSetFunctionNameCall","state","expression","name","callExpression","addHelper","stringLiteral","declare","api","assertVersion","TOP_LEVEL_USING","Map","isUsingDeclaration","isVariableDeclaration","kind","has","transformUsingDeclarationsVisitor","ForOfStatement","path","left","declarations","tmpId","scope","generateUidIdentifierBasedOnNode","ensureBlock","unshiftForXStatementBody","variableDeclaration","variableDeclarator","cloneNode","BlockStatement|StaticBlock","ctx","needsAwait","body","generateUidIdentifier","isAwaitUsing","get","delete","decl","currentInit","init","memberExpression","identifier","isIdentifier","disposeCall","replacement","template","statement","ast","awaitExpression","inherits","parentPath","isFunction","isTryStatement","isCatchClause","replaceWith","blockStatement","isStaticBlock","transformUsingDeclarationsVisitorSkipFn","traverse","visitors","merge","Function","skip","manipulateOptions","_","p","plugins","push","visitor","Program","clear","sourceType","some","innerBlockBody","stmt","isFunctionDeclaration","isImportDeclaration","shouldRemove","isExportDefaultDeclaration","declaration","varId","isClassDeclaration","toExpression","isExpression","exportNamedDeclaration","exportSpecifier","isExportNamedDeclaration","Object","keys","getOuterBindingIdentifiers","map","isExportDeclaration","set","remove","pushContainer","async"],"mappings":";;;;AAWA,SAASA,6BAA6BA,CACpCC,IAAY,EAIW;EACvB,OACEC,KAAC,CAACC,yBAAyB,CAACF,IAAI,CAAC,IAChC,CAACC,KAAC,CAACE,oBAAoB,CAACH,IAAI,CAAC,IAAIC,KAAC,CAACG,iBAAiB,CAACJ,IAAI,CAAC,KAAK,CAACA,IAAI,CAACK,EAAG,CAAA;AAE7E,CAAA;AAEA,SAASC,uBAAuBA,CAC9BC,KAAiB,EACjBC,UAAwB,EACxBC,IAAY,EACZ;EACA,OAAOR,KAAC,CAACS,cAAc,CAACH,KAAK,CAACI,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAC1DH,UAAU,EACVP,KAAC,CAACW,aAAa,CAACH,IAAI,CAAC,CACtB,CAAC,CAAA;AACJ,CAAA;AAEA,YAAeI,OAAO,CAACC,GAAG,IAAI;EAE5BA,GAAG,CAACC,aAAa,CAAA,iCAAsC,CAAC,CAAA;AAExD,EAAA,MAAMC,eAAe,GAAG,IAAIC,GAAG,EAAsB,CAAA;EAErD,SAASC,kBAAkBA,CAAClB,IAAY,EAAiC;IACvE,IAAI,CAACC,KAAC,CAACkB,qBAAqB,CAACnB,IAAI,CAAC,EAAE,OAAO,KAAK,CAAA;AAChD,IAAA,OACEA,IAAI,CAACoB,IAAI,KAAK,OAAO,IACrBpB,IAAI,CAACoB,IAAI,KAAK,aAAa,IAC3BJ,eAAe,CAACK,GAAG,CAACrB,IAAI,CAAC,CAAA;AAE7B,GAAA;AAEA,EAAA,MAAMsB,iCAAsD,GAAG;IAC7DC,cAAcA,CAACC,IAAgC,EAAE;MAC/C,MAAM;AAAEC,QAAAA,IAAAA;OAAM,GAAGD,IAAI,CAACxB,IAAI,CAAA;AAC1B,MAAA,IAAI,CAACkB,kBAAkB,CAACO,IAAI,CAAC,EAAE,OAAA;MAE/B,MAAM;AAAEpB,QAAAA,EAAAA;AAAG,OAAC,GAAGoB,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,CAAA;MACnC,MAAMC,KAAK,GAAGH,IAAI,CAACI,KAAK,CAACC,gCAAgC,CAACxB,EAAE,CAAC,CAAA;MAC7DoB,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,CAACrB,EAAE,GAAGsB,KAAK,CAAA;MAC/BF,IAAI,CAACL,IAAI,GAAG,OAAO,CAAA;MAEnBI,IAAI,CAACM,WAAW,EAAE,CAAA;MAClBC,wBAAwB,CAACP,IAAI,EAAE,CAC7BvB,KAAC,CAAC+B,mBAAmB,CAAC,OAAO,EAAE,CAC7B/B,KAAC,CAACgC,kBAAkB,CAAC5B,EAAE,EAAEJ,KAAC,CAACiC,SAAS,CAACP,KAAK,CAAC,CAAC,CAC7C,CAAC,CACH,CAAC,CAAA;KACH;AACD,IAAA,4BAA4BQ,CAC1BX,IAAgD,EAChDjB,KAAK,EACL;MACA,IAAI6B,GAAwB,GAAG,IAAI,CAAA;MACnC,IAAIC,UAAU,GAAG,KAAK,CAAA;AACtB,MAAA,MAAMT,KAAK,GAAGJ,IAAI,CAACI,KAAK,CAAA;MAExB,KAAK,MAAM5B,IAAI,IAAIwB,IAAI,CAACxB,IAAI,CAACsC,IAAI,EAAE;AACjC,QAAA,IAAI,CAACpB,kBAAkB,CAAClB,IAAI,CAAC,EAAE,SAAA;AAC/BoC,QAAAA,GAAG,KAAKR,KAAK,CAACW,qBAAqB,CAAC,UAAU,CAAC,CAAA;AAC/C,QAAA,MAAMC,YAAY,GAChBxC,IAAI,CAACoB,IAAI,KAAK,aAAa,IAC3BJ,eAAe,CAACyB,GAAG,CAACzC,IAAI,CAAC,KAAqB,CAAA,CAAA;AAChDqC,QAAAA,UAAU,KAAKG,YAAY,CAAA;AAE3B,QAAA,IAAI,CAACxB,eAAe,CAAC0B,MAAM,CAAC1C,IAAI,CAAC,EAAE;UACjCA,IAAI,CAACoB,IAAI,GAAG,OAAO,CAAA;AACrB,SAAA;AACA,QAAA,KAAK,MAAMuB,IAAI,IAAI3C,IAAI,CAAC0B,YAAY,EAAE;AACpC,UAAA,MAAMkB,WAAW,GAAGD,IAAI,CAACE,IAAI,CAAA;AAC7BF,UAAAA,IAAI,CAACE,IAAI,GAAG5C,KAAC,CAACS,cAAc,CAC1BT,KAAC,CAAC6C,gBAAgB,CAChB7C,KAAC,CAACiC,SAAS,CAACE,GAAG,CAAC,EAChBI,YAAY,GAAGvC,KAAC,CAAC8C,UAAU,CAAC,GAAG,CAAC,GAAG9C,KAAC,CAAC8C,UAAU,CAAC,GAAG,CACrD,CAAC,EACD,CACEhD,6BAA6B,CAAC6C,WAAW,CAAC,IAC1C3C,KAAC,CAAC+C,YAAY,CAACL,IAAI,CAACtC,EAAE,CAAC,GACnBC,uBAAuB,CAACC,KAAK,EAAEqC,WAAW,EAAED,IAAI,CAACtC,EAAE,CAACI,IAAI,CAAC,GACzDmC,WAAW,CAEnB,CAAC,CAAA;AACH,SAAA;AACF,OAAA;MACA,IAAI,CAACR,GAAG,EAAE,OAAA;MAEV,MAAMa,WAAW,GAAGhD,KAAC,CAACS,cAAc,CAClCT,KAAC,CAAC6C,gBAAgB,CAAC7C,KAAC,CAACiC,SAAS,CAACE,GAAG,CAAC,EAAEnC,KAAC,CAAC8C,UAAU,CAAC,GAAG,CAAC,CAAC,EACvD,EACF,CAAC,CAAA;AAED,MAAA,MAAMG,WAAW,GAAGC,QAAQ,CAACC,SAAS,CAACC,GAAG,CAAA;AAChD;AACA,cAAA,EAAgBpD,KAAC,CAACiC,SAAS,CAACE,GAAG,CAAC,CAAM7B,GAAAA,EAAAA,KAAK,CAACI,SAAS,CAAC,UAAU,CAAC,CAAA;AACjE,UAAA,EAAYa,IAAI,CAACxB,IAAI,CAACsC,IAAI,CAAA;AAC1B;AACA,UAAA,EAAYrC,KAAC,CAACiC,SAAS,CAACE,GAAG,CAAC,CAAA;AAC5B;AACA,UAAYC,EAAAA,UAAU,GAAGpC,KAAC,CAACqD,eAAe,CAACL,WAAW,CAAC,GAAGA,WAAW,CAAA;AACrE;AACA,MAAyB,CAAA,CAAA;MAEnBhD,KAAC,CAACsD,QAAQ,CAACL,WAAW,EAAE1B,IAAI,CAACxB,IAAI,CAAC,CAAA;MAElC,MAAM;AAAEwD,QAAAA,UAAAA;AAAW,OAAC,GAAGhC,IAAI,CAAA;AAC3B,MAAA,IACEgC,UAAU,CAACC,UAAU,EAAE,IACvBD,UAAU,CAACE,cAAc,EAAE,IAC3BF,UAAU,CAACG,aAAa,EAAE,EAC1B;QACAnC,IAAI,CAACoC,WAAW,CAAC3D,KAAC,CAAC4D,cAAc,CAAC,CAACX,WAAW,CAAC,CAAC,CAAC,CAAA;AACnD,OAAC,MAAM,IAAI1B,IAAI,CAACsC,aAAa,EAAE,EAAE;AAC/BtC,QAAAA,IAAI,CAACxB,IAAI,CAACsC,IAAI,GAAG,CAACY,WAAW,CAAC,CAAA;AAChC,OAAC,MAAM;AACL1B,QAAAA,IAAI,CAACoC,WAAW,CAACV,WAAW,CAAC,CAAA;AAC/B,OAAA;AACF,KAAA;GACD,CAAA;EAED,MAAMa,uCAA4D,GAChEC,QAAQ,CAACC,QAAQ,CAACC,KAAK,CAAC,CACtB5C,iCAAiC,EACjC;IACE6C,QAAQA,CAAC3C,IAAI,EAAE;MACbA,IAAI,CAAC4C,IAAI,EAAE,CAAA;AACb,KAAA;AACF,GAAC,CACF,CAAC,CAAA;EAEJ,OAAO;AACL3D,IAAAA,IAAI,EAAE,wCAAwC;AAC9C4D,IAAAA,iBAAiB,EAAEA,CAACC,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAACC,OAAO,CAACC,IAAI,CAAC,4BAA4B,CAAC;IAEzEC,OAAO,EAAEV,QAAQ,CAACC,QAAQ,CAACC,KAAK,CAAC,CAC/B5C,iCAAiC,EACjC;MAIEqD,OAAOA,CAACnD,IAAI,EAAE;QACZR,eAAe,CAAC4D,KAAK,EAAE,CAAA;AAEvB,QAAA,IAAIpD,IAAI,CAACxB,IAAI,CAAC6E,UAAU,KAAK,QAAQ,EAAE,OAAA;QACvC,IAAI,CAACrD,IAAI,CAACxB,IAAI,CAACsC,IAAI,CAACwC,IAAI,CAAC5D,kBAAkB,CAAC,EAAE,OAAA;QAE9C,MAAM6D,cAAc,GAAG,EAAE,CAAA;QACzB,KAAK,MAAMC,IAAI,IAAIxD,IAAI,CAACiB,GAAG,CAAC,MAAM,CAAC,EAAE;UACnC,IAAIuC,IAAI,CAACC,qBAAqB,EAAE,IAAID,IAAI,CAACE,mBAAmB,EAAE,EAAE;AAC9D,YAAA,SAAA;AACF,WAAA;AAEA,UAAA,IAAIlF,IAAiC,GAAGgF,IAAI,CAAChF,IAAI,CAAA;UACjD,IAAImF,YAAY,GAAG,IAAI,CAAA;AAEvB,UAAA,IAAIH,IAAI,CAACI,0BAA0B,EAAE,EAAE;YACrC,IAAI;AAAEC,cAAAA,WAAAA;aAAa,GAAGL,IAAI,CAAChF,IAAI,CAAA;AAC/B,YAAA,IAAIsF,KAAK,CAAA;AACT,YAAA,IAAIrF,KAAC,CAACsF,kBAAkB,CAACF,WAAW,CAAC,EAAE;cACrCC,KAAK,GAAGD,WAAW,CAAChF,EAAE,CAAA;cAItBgF,WAAW,CAAChF,EAAE,GAAGJ,KAAC,CAACiC,SAAS,CAACoD,KAAK,CAAC,CAAA;AACnCD,cAAAA,WAAW,GAAGpF,KAAC,CAACuF,YAAY,CAACH,WAAW,CAAC,CAAA;aAC1C,MAAM,IAAI,CAACpF,KAAC,CAACwF,YAAY,CAACJ,WAAW,CAAC,EAAE;AACvC,cAAA,SAAA;AACF,aAAA;YAEAC,KAAK,KAAK9D,IAAI,CAACI,KAAK,CAACW,qBAAqB,CAAC,UAAU,CAAC,CAAA;YACtDwC,cAAc,CAACN,IAAI,CACjBxE,KAAC,CAAC+B,mBAAmB,CAAC,KAAK,EAAE,CAC3B/B,KAAC,CAACgC,kBAAkB,CAACqD,KAAK,EAAED,WAAW,CAAC,CACzC,CACH,CAAC,CAAA;AACDL,YAAAA,IAAI,CAACpB,WAAW,CACd3D,KAAC,CAACyF,sBAAsB,CAAC,IAAI,EAAE,CAC7BzF,KAAC,CAAC0F,eAAe,CACf1F,KAAC,CAACiC,SAAS,CAACoD,KAAK,CAAC,EAClBrF,KAAC,CAAC8C,UAAU,CAAC,SAAS,CACxB,CAAC,CACF,CACH,CAAC,CAAA;AACD,YAAA,SAAA;AACF,WAAA;AAEA,UAAA,IAAIiC,IAAI,CAACY,wBAAwB,EAAE,EAAE;AACnC5F,YAAAA,IAAI,GAAGgF,IAAI,CAAChF,IAAI,CAACqF,WAAW,CAAA;YAC5B,IAAI,CAACrF,IAAI,IAAIC,KAAC,CAACwD,UAAU,CAACzD,IAAI,CAAC,EAAE,SAAA;YAEjCgF,IAAI,CAACpB,WAAW,CACd3D,KAAC,CAACyF,sBAAsB,CACtB,IAAI,EACJG,MAAM,CAACC,IAAI,CAAC7F,KAAC,CAAC8F,0BAA0B,CAAC/F,IAAI,EAAE,KAAK,CAAC,CAAC,CAACgG,GAAG,CACxD3F,EAAE,IAAIJ,KAAC,CAAC0F,eAAe,CAAC1F,KAAC,CAAC8C,UAAU,CAAC1C,EAAE,CAAC,EAAEJ,KAAC,CAAC8C,UAAU,CAAC1C,EAAE,CAAC,CAC5D,CACF,CACF,CAAC,CAAA;AACD8E,YAAAA,YAAY,GAAG,KAAK,CAAA;AACtB,WAAC,MAAM,IAAIH,IAAI,CAACiB,mBAAmB,EAAE,EAAE;AACrC,YAAA,SAAA;AACF,WAAA;AAEA,UAAA,IAAIhG,KAAC,CAACsF,kBAAkB,CAACvF,IAAI,CAAC,EAAE;YAC9B,MAAM;AAAEK,cAAAA,EAAAA;AAAG,aAAC,GAAGL,IAAI,CAAA;YACnBA,IAAI,CAACK,EAAE,GAAGJ,KAAC,CAACiC,SAAS,CAAC7B,EAAE,CAAC,CAAA;YACzB0E,cAAc,CAACN,IAAI,CACjBxE,KAAC,CAAC+B,mBAAmB,CAAC,KAAK,EAAE,CAC3B/B,KAAC,CAACgC,kBAAkB,CAAC5B,EAAE,EAAEJ,KAAC,CAACuF,YAAY,CAACxF,IAAI,CAAC,CAAC,CAC/C,CACH,CAAC,CAAA;WACF,MAAM,IAAIC,KAAC,CAACkB,qBAAqB,CAACnB,IAAI,CAAC,EAAE;AACxC,YAAA,IAAIA,IAAI,CAACoB,IAAI,KAAK,OAAO,EAAE;AACzBJ,cAAAA,eAAe,CAACkF,GAAG,CAAClB,IAAI,CAAChF,IAAI,GAAmB,CAAC,CAAA;AACnD,aAAC,MAAM,IAAIA,IAAI,CAACoB,IAAI,KAAK,aAAa,EAAE;AACtCJ,cAAAA,eAAe,CAACkF,GAAG,CAAClB,IAAI,CAAChF,IAAI,GAAkB,CAAC,CAAA;AAClD,aAAA;YACAA,IAAI,CAACoB,IAAI,GAAG,KAAK,CAAA;AACjB2D,YAAAA,cAAc,CAACN,IAAI,CAACzE,IAAI,CAAC,CAAA;AAC3B,WAAC,MAAM;AACL+E,YAAAA,cAAc,CAACN,IAAI,CAACO,IAAI,CAAChF,IAAI,CAAC,CAAA;AAChC,WAAA;AAEA,UAAA,IAAImF,YAAY,EAAEH,IAAI,CAACmB,MAAM,EAAE,CAAA;AACjC,SAAA;QAEA3E,IAAI,CAAC4E,aAAa,CAAC,MAAM,EAAEnG,KAAC,CAAC4D,cAAc,CAACkB,cAAc,CAAC,CAAC,CAAA;OAC7D;AAGDZ,MAAAA,QAAQA,CAAC3C,IAAI,EAAEjB,KAAK,EAAE;AACpB,QAAA,IAAIiB,IAAI,CAACxB,IAAI,CAACqG,KAAK,EAAE;AACnB7E,UAAAA,IAAI,CAACwC,QAAQ,CAACD,uCAAuC,EAAExD,KAAK,CAAC,CAAA;AAC/D,SAAA;AACF,OAAA;AACF,KAAC,CACF,CAAA;GACF,CAAA;AACH,CAAC,CAAC;;;;"}
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { unshiftForXStatementBody } from \"@babel/plugin-transform-destructuring\";\nimport { types as t, template, traverse } from \"@babel/core\";\nimport type { NodePath, Visitor, PluginPass } from \"@babel/core\";\n\nconst enum USING_KIND {\n NORMAL,\n AWAIT,\n}\n\n// https://tc39.es/ecma262/#sec-isanonymousfunctiondefinition\nfunction isAnonymousFunctionDefinition(\n node: t.Node,\n): node is\n | t.ClassExpression\n | t.ArrowFunctionExpression\n | t.FunctionExpression {\n return (\n t.isArrowFunctionExpression(node) ||\n ((t.isFunctionExpression(node) || t.isClassExpression(node)) && !node.id)\n );\n}\n\nfunction emitSetFunctionNameCall(\n state: PluginPass,\n expression: t.Expression,\n name: string,\n) {\n return t.callExpression(state.addHelper(\"setFunctionName\"), [\n expression,\n t.stringLiteral(name),\n ]);\n}\n\nexport default declare(api => {\n // The first Babel 7 version with usingCtx helper support.\n api.assertVersion(REQUIRED_VERSION(\"^7.23.9 || ^8.0.0\"));\n\n const TOP_LEVEL_USING = new Map<t.Node, USING_KIND>();\n\n function isUsingDeclaration(node: t.Node): node is t.VariableDeclaration {\n if (!t.isVariableDeclaration(node)) return false;\n return (\n node.kind === \"using\" ||\n node.kind === \"await using\" ||\n TOP_LEVEL_USING.has(node)\n );\n }\n\n const transformUsingDeclarationsVisitor: Visitor<PluginPass> = {\n ForOfStatement(path: NodePath<t.ForOfStatement>) {\n const { left } = path.node;\n if (!isUsingDeclaration(left)) return;\n\n const { id } = left.declarations[0];\n const tmpId = path.scope.generateUidIdentifierBasedOnNode(id);\n left.declarations[0].id = tmpId;\n left.kind = \"const\";\n\n path.ensureBlock();\n unshiftForXStatementBody(path, [\n t.variableDeclaration(\"using\", [\n t.variableDeclarator(id, t.cloneNode(tmpId)),\n ]),\n ]);\n },\n \"BlockStatement|StaticBlock\"(\n path: NodePath<t.BlockStatement | t.StaticBlock>,\n state,\n ) {\n let ctx: t.Identifier | null = null;\n let needsAwait = false;\n const scope = path.scope;\n\n for (const node of path.node.body) {\n if (!isUsingDeclaration(node)) continue;\n ctx ??= scope.generateUidIdentifier(\"usingCtx\");\n const isAwaitUsing =\n node.kind === \"await using\" ||\n TOP_LEVEL_USING.get(node) === USING_KIND.AWAIT;\n needsAwait ||= isAwaitUsing;\n\n if (!TOP_LEVEL_USING.delete(node)) {\n node.kind = \"const\";\n }\n for (const decl of node.declarations) {\n const currentInit = decl.init;\n decl.init = t.callExpression(\n t.memberExpression(\n t.cloneNode(ctx),\n isAwaitUsing ? t.identifier(\"a\") : t.identifier(\"u\"),\n ),\n [\n isAnonymousFunctionDefinition(currentInit) &&\n t.isIdentifier(decl.id)\n ? emitSetFunctionNameCall(state, currentInit, decl.id.name)\n : currentInit,\n ],\n );\n }\n }\n if (!ctx) return;\n\n const disposeCall = t.callExpression(\n t.memberExpression(t.cloneNode(ctx), t.identifier(\"d\")),\n [],\n );\n\n const replacement = template.statement.ast`\n try {\n var ${t.cloneNode(ctx)} = ${state.addHelper(\"usingCtx\")}();\n ${path.node.body}\n } catch (_) {\n ${t.cloneNode(ctx)}.e = _;\n } finally {\n ${needsAwait ? t.awaitExpression(disposeCall) : disposeCall}\n }\n ` as t.TryStatement;\n\n t.inherits(replacement, path.node);\n\n const { parentPath } = path;\n if (\n parentPath.isFunction() ||\n parentPath.isTryStatement() ||\n parentPath.isCatchClause()\n ) {\n path.replaceWith(t.blockStatement([replacement]));\n } else if (path.isStaticBlock()) {\n path.node.body = [replacement];\n } else {\n path.replaceWith(replacement);\n }\n },\n };\n\n const transformUsingDeclarationsVisitorSkipFn: Visitor<PluginPass> =\n traverse.visitors.merge([\n transformUsingDeclarationsVisitor,\n {\n Function(path) {\n path.skip();\n },\n },\n ]);\n\n return {\n name: \"transform-explicit-resource-management\",\n\n visitor: traverse.visitors.merge([\n transformUsingDeclarationsVisitor,\n {\n // To transform top-level using declarations, we must wrap the\n // module body in a block after hoisting all the exports and imports.\n // This might cause some variables to be `undefined` rather than TDZ.\n Program(path) {\n TOP_LEVEL_USING.clear();\n\n if (path.node.sourceType !== \"module\") return;\n if (!path.node.body.some(isUsingDeclaration)) return;\n\n const innerBlockBody = [];\n for (const stmt of path.get(\"body\")) {\n if (stmt.isFunctionDeclaration() || stmt.isImportDeclaration()) {\n continue;\n }\n\n let node: t.Statement | t.Declaration = stmt.node;\n let shouldRemove = true;\n\n if (stmt.isExportDefaultDeclaration()) {\n let { declaration } = stmt.node;\n let varId;\n if (t.isClassDeclaration(declaration)) {\n varId = declaration.id;\n // Move the class id to the var binding such that the scope binding\n // info is correct. Then we clone one to ensure inner class reference\n // will stay same if the outer binding is mutated.\n declaration.id = t.cloneNode(varId);\n declaration = t.toExpression(declaration);\n } else if (!t.isExpression(declaration)) {\n continue;\n }\n\n varId ??= path.scope.generateUidIdentifier(\"_default\");\n innerBlockBody.push(\n t.variableDeclaration(\"var\", [\n t.variableDeclarator(varId, declaration),\n ]),\n );\n stmt.replaceWith(\n t.exportNamedDeclaration(null, [\n t.exportSpecifier(\n t.cloneNode(varId),\n t.identifier(\"default\"),\n ),\n ]),\n );\n continue;\n }\n\n if (stmt.isExportNamedDeclaration()) {\n node = stmt.node.declaration;\n if (!node || t.isFunction(node)) continue;\n\n stmt.replaceWith(\n t.exportNamedDeclaration(\n null,\n Object.keys(t.getOuterBindingIdentifiers(node, false)).map(\n id => t.exportSpecifier(t.identifier(id), t.identifier(id)),\n ),\n ),\n );\n shouldRemove = false;\n } else if (stmt.isExportDeclaration()) {\n continue;\n }\n\n if (t.isClassDeclaration(node)) {\n const { id } = node;\n node.id = t.cloneNode(id);\n innerBlockBody.push(\n t.variableDeclaration(\"var\", [\n t.variableDeclarator(id, t.toExpression(node)),\n ]),\n );\n } else if (t.isVariableDeclaration(node)) {\n if (node.kind === \"using\") {\n TOP_LEVEL_USING.set(stmt.node, USING_KIND.NORMAL);\n } else if (node.kind === \"await using\") {\n TOP_LEVEL_USING.set(stmt.node, USING_KIND.AWAIT);\n }\n node.kind = \"var\";\n innerBlockBody.push(node);\n } else {\n innerBlockBody.push(stmt.node);\n }\n\n if (shouldRemove) stmt.remove();\n }\n\n path.pushContainer(\"body\", t.blockStatement(innerBlockBody));\n },\n // We must transform `await using` in async functions before that\n // async-to-generator will transform `await` expressions into `yield`\n Function(path, state) {\n if (path.node.async) {\n path.traverse(transformUsingDeclarationsVisitorSkipFn, state);\n }\n },\n },\n ]),\n };\n});\n"],"names":["isAnonymousFunctionDefinition","node","t","isArrowFunctionExpression","isFunctionExpression","isClassExpression","id","emitSetFunctionNameCall","state","expression","name","callExpression","addHelper","stringLiteral","declare","api","assertVersion","TOP_LEVEL_USING","Map","isUsingDeclaration","isVariableDeclaration","kind","has","transformUsingDeclarationsVisitor","ForOfStatement","path","left","declarations","tmpId","scope","generateUidIdentifierBasedOnNode","ensureBlock","unshiftForXStatementBody","variableDeclaration","variableDeclarator","cloneNode","BlockStatement|StaticBlock","ctx","needsAwait","body","generateUidIdentifier","isAwaitUsing","get","delete","decl","currentInit","init","memberExpression","identifier","isIdentifier","disposeCall","replacement","template","statement","ast","awaitExpression","inherits","parentPath","isFunction","isTryStatement","isCatchClause","replaceWith","blockStatement","isStaticBlock","transformUsingDeclarationsVisitorSkipFn","traverse","visitors","merge","Function","skip","visitor","Program","clear","sourceType","some","innerBlockBody","stmt","isFunctionDeclaration","isImportDeclaration","shouldRemove","isExportDefaultDeclaration","declaration","varId","isClassDeclaration","toExpression","isExpression","push","exportNamedDeclaration","exportSpecifier","isExportNamedDeclaration","Object","keys","getOuterBindingIdentifiers","map","isExportDeclaration","set","remove","pushContainer","async"],"mappings":"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"}
{
"name": "@babel/plugin-transform-explicit-resource-management",
"version": "8.0.0-rc.1",
"version": "8.0.0-rc.2",
"description": "Compile `using` and `await using` declarations to ES2015",

@@ -20,11 +20,11 @@ "repository": {

"dependencies": {
"@babel/helper-plugin-utils": "^8.0.0-rc.1",
"@babel/plugin-transform-destructuring": "^8.0.0-rc.1"
"@babel/helper-plugin-utils": "^8.0.0-rc.2",
"@babel/plugin-transform-destructuring": "^8.0.0-rc.2"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
"@babel/core": "^8.0.0-rc.2"
},
"devDependencies": {
"@babel/core": "^8.0.0-rc.1",
"@babel/helper-plugin-test-runner": "^8.0.0-rc.1"
"@babel/core": "^8.0.0-rc.2",
"@babel/helper-plugin-test-runner": "^8.0.0-rc.2"
},

@@ -31,0 +31,0 @@ "engines": {