@wyw-in-js/transform 0.8.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/babel.js.map +1 -1
- package/esm/cache.js +15 -4
- package/esm/cache.js.map +1 -1
- package/esm/debug/fileReporter.js.map +1 -1
- package/esm/evaluators/index.js.map +1 -1
- package/esm/index.js.map +1 -1
- package/esm/module.js +174 -15
- package/esm/module.js.map +1 -1
- package/esm/options/buildOptions.js +123 -4
- package/esm/options/buildOptions.js.map +1 -1
- package/esm/options/buildOptions.test.js +41 -0
- package/esm/options/buildOptions.test.js.map +1 -0
- package/esm/options/loadBabelOptions.js.map +1 -1
- package/esm/plugins/babel-transform.js.map +1 -1
- package/esm/plugins/collector.js.map +1 -1
- package/esm/plugins/dynamic-import.js +35 -12
- package/esm/plugins/dynamic-import.js.map +1 -1
- package/esm/plugins/preeval.js +4 -0
- package/esm/plugins/preeval.js.map +1 -1
- package/esm/plugins/shaker.js +170 -23
- package/esm/plugins/shaker.js.map +1 -1
- package/esm/shaker.js +6 -3
- package/esm/shaker.js.map +1 -1
- package/esm/transform/BaseEntrypoint.js.map +1 -1
- package/esm/transform/Entrypoint.helpers.js +105 -15
- package/esm/transform/Entrypoint.helpers.js.map +1 -1
- package/esm/transform/Entrypoint.js +13 -2
- package/esm/transform/Entrypoint.js.map +1 -1
- package/esm/transform/Entrypoint.types.js.map +1 -1
- package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
- package/esm/transform/actions/AbortError.js.map +1 -1
- package/esm/transform/actions/BaseAction.js +5 -0
- package/esm/transform/actions/BaseAction.js.map +1 -1
- package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
- package/esm/transform/actions/actionRunner.js.map +1 -1
- package/esm/transform/actions/types.js.map +1 -1
- package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
- package/esm/transform/generators/collect.js.map +1 -1
- package/esm/transform/generators/createStylisPreprocessor.js +118 -2
- package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
- package/esm/transform/generators/evalFile.js.map +1 -1
- package/esm/transform/generators/explodeReexports.js +10 -10
- package/esm/transform/generators/explodeReexports.js.map +1 -1
- package/esm/transform/generators/extract.js.map +1 -1
- package/esm/transform/generators/getExports.js.map +1 -1
- package/esm/transform/generators/index.js.map +1 -1
- package/esm/transform/generators/processEntrypoint.js +5 -8
- package/esm/transform/generators/processEntrypoint.js.map +1 -1
- package/esm/transform/generators/processImports.js.map +1 -1
- package/esm/transform/generators/resolveImports.js +41 -2
- package/esm/transform/generators/resolveImports.js.map +1 -1
- package/esm/transform/generators/transform.js +7 -3
- package/esm/transform/generators/transform.js.map +1 -1
- package/esm/transform/generators/workflow.js.map +1 -1
- package/esm/transform/helpers/loadWywOptions.js +15 -2
- package/esm/transform/helpers/loadWywOptions.js.map +1 -1
- package/esm/transform/helpers/withDefaultServices.js +2 -0
- package/esm/transform/helpers/withDefaultServices.js.map +1 -1
- package/esm/transform/isStaticallyEvaluatableModule.js +153 -0
- package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -0
- package/esm/transform/rootLog.js.map +1 -1
- package/esm/transform/types.js.map +1 -1
- package/esm/transform.js +15 -6
- package/esm/transform.js.map +1 -1
- package/esm/types.js.map +1 -1
- package/esm/utils/EventEmitter.js.map +1 -1
- package/esm/utils/ShakerMetadata.js.map +1 -1
- package/esm/utils/TransformMetadata.js.map +1 -1
- package/esm/utils/addIdentifierToWywPreval.js.map +1 -1
- package/esm/utils/collectExportsAndImports.js +97 -6
- package/esm/utils/collectExportsAndImports.js.map +1 -1
- package/esm/utils/collectTemplateDependencies.js +1 -1
- package/esm/utils/collectTemplateDependencies.js.map +1 -1
- package/esm/utils/createId.js.map +1 -1
- package/esm/utils/dispose-polyfill.js.map +1 -1
- package/esm/utils/findIdentifiers.js.map +1 -1
- package/esm/utils/getConstantStringValue.js +58 -0
- package/esm/utils/getConstantStringValue.js.map +1 -0
- package/esm/utils/getFileIdx.js.map +1 -1
- package/esm/utils/getMemberExpressionPropertyName.js +11 -0
- package/esm/utils/getMemberExpressionPropertyName.js.map +1 -0
- package/esm/utils/getPluginKey.js.map +1 -1
- package/esm/utils/getScope.js.map +1 -1
- package/esm/utils/getSource.js.map +1 -1
- package/esm/utils/getTagProcessor.js +34 -6
- package/esm/utils/getTagProcessor.js.map +1 -1
- package/esm/utils/getVisitorKeys.js.map +1 -1
- package/esm/utils/hasWywPreval.js.map +1 -1
- package/esm/utils/importOverrides.js +47 -0
- package/esm/utils/importOverrides.js.map +1 -0
- package/esm/utils/isExports.js.map +1 -1
- package/esm/utils/isGlobal.js.map +1 -1
- package/esm/utils/isNode.js.map +1 -1
- package/esm/utils/isNodePath.js.map +1 -1
- package/esm/utils/isNotNull.js.map +1 -1
- package/esm/utils/isRemoved.js.map +1 -1
- package/esm/utils/isRequire.js.map +1 -1
- package/esm/utils/isSerializable.js.map +1 -1
- package/esm/utils/isTypedNode.js.map +1 -1
- package/esm/utils/isUnnecessaryReactCall.js.map +1 -1
- package/esm/utils/parseRequest.js +29 -0
- package/esm/utils/parseRequest.js.map +1 -0
- package/esm/utils/peek.js.map +1 -1
- package/esm/utils/removeDangerousCode.js +32 -2
- package/esm/utils/removeDangerousCode.js.map +1 -1
- package/esm/utils/replaceImportMetaEnv.js +44 -0
- package/esm/utils/replaceImportMetaEnv.js.map +1 -0
- package/esm/utils/scopeHelpers.js.map +1 -1
- package/esm/utils/traversalCache.js.map +1 -1
- package/esm/utils/unwrapExpression.js +18 -0
- package/esm/utils/unwrapExpression.js.map +1 -0
- package/esm/utils/unwrapSequence.js.map +1 -1
- package/esm/utils/valueToLiteral.js.map +1 -1
- package/esm/utils/visitors/JSXElementsRemover.js.map +1 -1
- package/esm/vm/createVmContext.js +44 -0
- package/esm/vm/createVmContext.js.map +1 -1
- package/esm/vm/process.js.map +1 -1
- package/lib/babel.js.map +1 -1
- package/lib/cache.js +16 -5
- package/lib/cache.js.map +1 -1
- package/lib/debug/fileReporter.js +1 -1
- package/lib/debug/fileReporter.js.map +1 -1
- package/lib/evaluators/index.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/module.js +177 -16
- package/lib/module.js.map +1 -1
- package/lib/options/buildOptions.js +127 -6
- package/lib/options/buildOptions.js.map +1 -1
- package/lib/options/buildOptions.test.js +44 -0
- package/lib/options/buildOptions.test.js.map +1 -0
- package/lib/options/loadBabelOptions.js.map +1 -1
- package/lib/plugins/babel-transform.js.map +1 -1
- package/lib/plugins/collector.js.map +1 -1
- package/lib/plugins/dynamic-import.js +34 -12
- package/lib/plugins/dynamic-import.js.map +1 -1
- package/lib/plugins/preeval.js +4 -0
- package/lib/plugins/preeval.js.map +1 -1
- package/lib/plugins/shaker.js +172 -22
- package/lib/plugins/shaker.js.map +1 -1
- package/lib/shaker.js +8 -4
- package/lib/shaker.js.map +1 -1
- package/lib/transform/BaseEntrypoint.js.map +1 -1
- package/lib/transform/Entrypoint.helpers.js +106 -15
- package/lib/transform/Entrypoint.helpers.js.map +1 -1
- package/lib/transform/Entrypoint.js +13 -2
- package/lib/transform/Entrypoint.js.map +1 -1
- package/lib/transform/Entrypoint.types.js.map +1 -1
- package/lib/transform/EvaluatedEntrypoint.js.map +1 -1
- package/lib/transform/actions/AbortError.js.map +1 -1
- package/lib/transform/actions/BaseAction.js +5 -0
- package/lib/transform/actions/BaseAction.js.map +1 -1
- package/lib/transform/actions/UnprocessedEntrypointError.js.map +1 -1
- package/lib/transform/actions/actionRunner.js.map +1 -1
- package/lib/transform/actions/types.js.map +1 -1
- package/lib/transform/generators/baseProcessingHandlers.js.map +1 -1
- package/lib/transform/generators/collect.js.map +1 -1
- package/lib/transform/generators/createStylisPreprocessor.js +119 -3
- package/lib/transform/generators/createStylisPreprocessor.js.map +1 -1
- package/lib/transform/generators/evalFile.js +1 -1
- package/lib/transform/generators/evalFile.js.map +1 -1
- package/lib/transform/generators/explodeReexports.js +11 -11
- package/lib/transform/generators/explodeReexports.js.map +1 -1
- package/lib/transform/generators/extract.js.map +1 -1
- package/lib/transform/generators/getExports.js.map +1 -1
- package/lib/transform/generators/index.js.map +1 -1
- package/lib/transform/generators/processEntrypoint.js +5 -8
- package/lib/transform/generators/processEntrypoint.js.map +1 -1
- package/lib/transform/generators/processImports.js.map +1 -1
- package/lib/transform/generators/resolveImports.js +41 -2
- package/lib/transform/generators/resolveImports.js.map +1 -1
- package/lib/transform/generators/transform.js +8 -3
- package/lib/transform/generators/transform.js.map +1 -1
- package/lib/transform/generators/workflow.js.map +1 -1
- package/lib/transform/helpers/loadWywOptions.js +16 -2
- package/lib/transform/helpers/loadWywOptions.js.map +1 -1
- package/lib/transform/helpers/withDefaultServices.js +3 -2
- package/lib/transform/helpers/withDefaultServices.js.map +1 -1
- package/lib/transform/isStaticallyEvaluatableModule.js +159 -0
- package/lib/transform/isStaticallyEvaluatableModule.js.map +1 -0
- package/lib/transform/rootLog.js.map +1 -1
- package/lib/transform/types.js.map +1 -1
- package/lib/transform.js +15 -6
- package/lib/transform.js.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/EventEmitter.js.map +1 -1
- package/lib/utils/ShakerMetadata.js.map +1 -1
- package/lib/utils/TransformMetadata.js.map +1 -1
- package/lib/utils/addIdentifierToWywPreval.js.map +1 -1
- package/lib/utils/collectExportsAndImports.js +97 -6
- package/lib/utils/collectExportsAndImports.js.map +1 -1
- package/lib/utils/collectTemplateDependencies.js +1 -1
- package/lib/utils/collectTemplateDependencies.js.map +1 -1
- package/lib/utils/createId.js.map +1 -1
- package/lib/utils/dispose-polyfill.js.map +1 -1
- package/lib/utils/findIdentifiers.js.map +1 -1
- package/lib/utils/getConstantStringValue.js +66 -0
- package/lib/utils/getConstantStringValue.js.map +1 -0
- package/lib/utils/getFileIdx.js.map +1 -1
- package/lib/utils/getMemberExpressionPropertyName.js +18 -0
- package/lib/utils/getMemberExpressionPropertyName.js.map +1 -0
- package/lib/utils/getPluginKey.js.map +1 -1
- package/lib/utils/getScope.js.map +1 -1
- package/lib/utils/getSource.js +1 -1
- package/lib/utils/getSource.js.map +1 -1
- package/lib/utils/getTagProcessor.js +33 -6
- package/lib/utils/getTagProcessor.js.map +1 -1
- package/lib/utils/getVisitorKeys.js.map +1 -1
- package/lib/utils/hasWywPreval.js.map +1 -1
- package/lib/utils/importOverrides.js +57 -0
- package/lib/utils/importOverrides.js.map +1 -0
- package/lib/utils/isExports.js.map +1 -1
- package/lib/utils/isGlobal.js.map +1 -1
- package/lib/utils/isNode.js.map +1 -1
- package/lib/utils/isNodePath.js.map +1 -1
- package/lib/utils/isNotNull.js.map +1 -1
- package/lib/utils/isRemoved.js.map +1 -1
- package/lib/utils/isRequire.js.map +1 -1
- package/lib/utils/isSerializable.js.map +1 -1
- package/lib/utils/isTypedNode.js.map +1 -1
- package/lib/utils/isUnnecessaryReactCall.js.map +1 -1
- package/lib/utils/parseRequest.js +37 -0
- package/lib/utils/parseRequest.js.map +1 -0
- package/lib/utils/peek.js.map +1 -1
- package/lib/utils/removeDangerousCode.js +32 -2
- package/lib/utils/removeDangerousCode.js.map +1 -1
- package/lib/utils/replaceImportMetaEnv.js +50 -0
- package/lib/utils/replaceImportMetaEnv.js.map +1 -0
- package/lib/utils/scopeHelpers.js.map +1 -1
- package/lib/utils/traversalCache.js.map +1 -1
- package/lib/utils/unwrapExpression.js +25 -0
- package/lib/utils/unwrapExpression.js.map +1 -0
- package/lib/utils/unwrapSequence.js.map +1 -1
- package/lib/utils/valueToLiteral.js.map +1 -1
- package/lib/utils/visitors/JSXElementsRemover.js.map +1 -1
- package/lib/vm/createVmContext.js +45 -2
- package/lib/vm/createVmContext.js.map +1 -1
- package/lib/vm/process.js.map +1 -1
- package/package.json +13 -15
- package/types/cache.d.ts +1 -1
- package/types/cache.js +15 -4
- package/types/evaluators/index.js +1 -1
- package/types/module.d.ts +1 -2
- package/types/module.js +189 -11
- package/types/options/buildOptions.d.ts +0 -1
- package/types/options/buildOptions.js +125 -9
- package/types/options/loadBabelOptions.js +1 -2
- package/types/plugins/babel-transform.js +1 -1
- package/types/plugins/collector.js +3 -3
- package/types/plugins/dynamic-import.js +38 -18
- package/types/plugins/preeval.js +5 -2
- package/types/plugins/shaker.d.ts +4 -1
- package/types/plugins/shaker.js +189 -24
- package/types/shaker.js +9 -3
- package/types/transform/BaseEntrypoint.d.ts +0 -1
- package/types/transform/Entrypoint.helpers.d.ts +0 -1
- package/types/transform/Entrypoint.helpers.js +122 -25
- package/types/transform/Entrypoint.js +14 -2
- package/types/transform/Entrypoint.types.d.ts +0 -1
- package/types/transform/EvaluatedEntrypoint.d.ts +0 -1
- package/types/transform/actions/BaseAction.d.ts +1 -1
- package/types/transform/actions/BaseAction.js +5 -0
- package/types/transform/actions/actionRunner.js +2 -3
- package/types/transform/generators/collect.js +1 -2
- package/types/transform/generators/createStylisPreprocessor.d.ts +0 -1
- package/types/transform/generators/createStylisPreprocessor.js +168 -13
- package/types/transform/generators/evalFile.js +1 -2
- package/types/transform/generators/explodeReexports.js +12 -15
- package/types/transform/generators/extract.js +1 -2
- package/types/transform/generators/getExports.js +2 -3
- package/types/transform/generators/processEntrypoint.js +13 -7
- package/types/transform/generators/processImports.js +1 -2
- package/types/transform/generators/resolveImports.js +41 -5
- package/types/transform/generators/transform.d.ts +1 -1
- package/types/transform/generators/transform.js +16 -6
- package/types/transform/generators/workflow.js +1 -2
- package/types/transform/helpers/loadWywOptions.js +16 -5
- package/types/transform/helpers/withDefaultServices.d.ts +1 -1
- package/types/transform/helpers/withDefaultServices.js +19 -8
- package/types/transform/isStaticallyEvaluatableModule.d.ts +2 -0
- package/types/transform/isStaticallyEvaluatableModule.js +177 -0
- package/types/transform/rootLog.d.ts +0 -1
- package/types/transform/types.d.ts +1 -1
- package/types/transform.js +17 -9
- package/types/types.d.ts +1 -1
- package/types/utils/addIdentifierToWywPreval.js +2 -3
- package/types/utils/collectExportsAndImports.js +102 -20
- package/types/utils/collectTemplateDependencies.js +3 -4
- package/types/utils/findIdentifiers.js +2 -3
- package/types/utils/getConstantStringValue.d.ts +2 -0
- package/types/utils/getConstantStringValue.js +94 -0
- package/types/utils/getFileIdx.js +1 -2
- package/types/utils/getMemberExpressionPropertyName.d.ts +2 -0
- package/types/utils/getMemberExpressionPropertyName.js +46 -0
- package/types/utils/getScope.js +1 -2
- package/types/utils/getTagProcessor.js +35 -9
- package/types/utils/getVisitorKeys.js +1 -2
- package/types/utils/hasWywPreval.js +1 -1
- package/types/utils/importOverrides.d.ts +19 -0
- package/types/utils/importOverrides.js +40 -0
- package/types/utils/isExports.js +1 -2
- package/types/utils/isNodePath.js +1 -2
- package/types/utils/isNotNull.js +1 -2
- package/types/utils/isRemoved.js +1 -2
- package/types/utils/isRequire.js +1 -2
- package/types/utils/isSerializable.js +1 -2
- package/types/utils/isUnnecessaryReactCall.js +1 -2
- package/types/utils/parseRequest.d.ts +7 -0
- package/types/utils/parseRequest.js +29 -0
- package/types/utils/removeDangerousCode.js +37 -2
- package/types/utils/replaceImportMetaEnv.d.ts +3 -0
- package/types/utils/replaceImportMetaEnv.js +39 -0
- package/types/utils/scopeHelpers.js +7 -8
- package/types/utils/traversalCache.d.ts +1 -1
- package/types/utils/unwrapExpression.d.ts +2 -0
- package/types/utils/unwrapExpression.js +57 -0
- package/types/utils/unwrapSequence.js +1 -2
- package/types/utils/valueToLiteral.js +1 -2
- package/types/utils/visitors/JSXElementsRemover.js +1 -2
- package/types/vm/createVmContext.d.ts +0 -1
- package/types/vm/createVmContext.js +68 -9
- package/types/vm/process.d.ts +0 -2
- package/LICENSE +0 -21
- package/esm/options/babel-merge.d.js +0 -2
- package/esm/options/babel-merge.d.js.map +0 -1
- package/lib/options/babel-merge.d.js +0 -2
- package/lib/options/babel-merge.d.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getConstantStringValue.js","names":["t","getMemberExpressionPropertyName","unwrapExpression","getConstantStringValue","node","fromExpression","value","expression","isStringLiteral","isTemplateLiteral","expressions","length","quasi","quasis","cooked","isBinaryExpression","operator","isExpression","left","right","isCallExpression","concatProperty","isMemberExpression","callee","object","base","parts","arg","arguments","part","push","join"],"sources":["../../src/utils/getConstantStringValue.ts"],"sourcesContent":["import type { Expression } from '@babel/types';\nimport * as t from '@babel/types';\n\nimport { getMemberExpressionPropertyName } from './getMemberExpressionPropertyName';\nimport { unwrapExpression } from './unwrapExpression';\n\nexport function getConstantStringValue(node: Expression): string | null {\n const fromExpression = (value: Expression): string | null => {\n const expression = unwrapExpression(value);\n\n if (t.isStringLiteral(expression)) {\n return expression.value;\n }\n\n if (t.isTemplateLiteral(expression)) {\n if (expression.expressions.length !== 0) {\n return null;\n }\n\n const [quasi] = expression.quasis;\n return quasi?.value.cooked ?? null;\n }\n\n if (t.isBinaryExpression(expression) && expression.operator === '+') {\n if (!t.isExpression(expression.left) || !t.isExpression(expression.right))\n return null;\n\n const left = fromExpression(expression.left);\n const right = fromExpression(expression.right);\n if (left === null || right === null) {\n return null;\n }\n\n return left + right;\n }\n\n if (t.isCallExpression(expression)) {\n const concatProperty = t.isMemberExpression(expression.callee)\n ? getMemberExpressionPropertyName(expression.callee)\n : null;\n if (concatProperty !== 'concat') {\n return null;\n }\n\n const { callee } = expression;\n if (!t.isMemberExpression(callee) || !t.isExpression(callee.object)) {\n return null;\n }\n\n const base = fromExpression(callee.object);\n if (base === null) {\n return null;\n }\n\n const parts: string[] = [base];\n for (const arg of expression.arguments) {\n if (!t.isExpression(arg)) {\n return null;\n }\n const part = fromExpression(arg);\n if (part === null) {\n return null;\n }\n parts.push(part);\n }\n\n return parts.join('');\n }\n\n return null;\n };\n\n return fromExpression(node);\n}\n"],"mappings":"AACA,OAAO,KAAKA,CAAC,MAAM,cAAc;AAEjC,SAASC,+BAA+B,QAAQ,mCAAmC;AACnF,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,OAAO,SAASC,sBAAsBA,CAACC,IAAgB,EAAiB;EACtE,MAAMC,cAAc,GAAIC,KAAiB,IAAoB;IAC3D,MAAMC,UAAU,GAAGL,gBAAgB,CAACI,KAAK,CAAC;IAE1C,IAAIN,CAAC,CAACQ,eAAe,CAACD,UAAU,CAAC,EAAE;MACjC,OAAOA,UAAU,CAACD,KAAK;IACzB;IAEA,IAAIN,CAAC,CAACS,iBAAiB,CAACF,UAAU,CAAC,EAAE;MACnC,IAAIA,UAAU,CAACG,WAAW,CAACC,MAAM,KAAK,CAAC,EAAE;QACvC,OAAO,IAAI;MACb;MAEA,MAAM,CAACC,KAAK,CAAC,GAAGL,UAAU,CAACM,MAAM;MACjC,OAAOD,KAAK,EAAEN,KAAK,CAACQ,MAAM,IAAI,IAAI;IACpC;IAEA,IAAId,CAAC,CAACe,kBAAkB,CAACR,UAAU,CAAC,IAAIA,UAAU,CAACS,QAAQ,KAAK,GAAG,EAAE;MACnE,IAAI,CAAChB,CAAC,CAACiB,YAAY,CAACV,UAAU,CAACW,IAAI,CAAC,IAAI,CAAClB,CAAC,CAACiB,YAAY,CAACV,UAAU,CAACY,KAAK,CAAC,EACvE,OAAO,IAAI;MAEb,MAAMD,IAAI,GAAGb,cAAc,CAACE,UAAU,CAACW,IAAI,CAAC;MAC5C,MAAMC,KAAK,GAAGd,cAAc,CAACE,UAAU,CAACY,KAAK,CAAC;MAC9C,IAAID,IAAI,KAAK,IAAI,IAAIC,KAAK,KAAK,IAAI,EAAE;QACnC,OAAO,IAAI;MACb;MAEA,OAAOD,IAAI,GAAGC,KAAK;IACrB;IAEA,IAAInB,CAAC,CAACoB,gBAAgB,CAACb,UAAU,CAAC,EAAE;MAClC,MAAMc,cAAc,GAAGrB,CAAC,CAACsB,kBAAkB,CAACf,UAAU,CAACgB,MAAM,CAAC,GAC1DtB,+BAA+B,CAACM,UAAU,CAACgB,MAAM,CAAC,GAClD,IAAI;MACR,IAAIF,cAAc,KAAK,QAAQ,EAAE;QAC/B,OAAO,IAAI;MACb;MAEA,MAAM;QAAEE;MAAO,CAAC,GAAGhB,UAAU;MAC7B,IAAI,CAACP,CAAC,CAACsB,kBAAkB,CAACC,MAAM,CAAC,IAAI,CAACvB,CAAC,CAACiB,YAAY,CAACM,MAAM,CAACC,MAAM,CAAC,EAAE;QACnE,OAAO,IAAI;MACb;MAEA,MAAMC,IAAI,GAAGpB,cAAc,CAACkB,MAAM,CAACC,MAAM,CAAC;MAC1C,IAAIC,IAAI,KAAK,IAAI,EAAE;QACjB,OAAO,IAAI;MACb;MAEA,MAAMC,KAAe,GAAG,CAACD,IAAI,CAAC;MAC9B,KAAK,MAAME,GAAG,IAAIpB,UAAU,CAACqB,SAAS,EAAE;QACtC,IAAI,CAAC5B,CAAC,CAACiB,YAAY,CAACU,GAAG,CAAC,EAAE;UACxB,OAAO,IAAI;QACb;QACA,MAAME,IAAI,GAAGxB,cAAc,CAACsB,GAAG,CAAC;QAChC,IAAIE,IAAI,KAAK,IAAI,EAAE;UACjB,OAAO,IAAI;QACb;QACAH,KAAK,CAACI,IAAI,CAACD,IAAI,CAAC;MAClB;MAEA,OAAOH,KAAK,CAACK,IAAI,CAAC,EAAE,CAAC;IACvB;IAEA,OAAO,IAAI;EACb,CAAC;EAED,OAAO1B,cAAc,CAACD,IAAI,CAAC;AAC7B","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFileIdx.js","names":["nextIdx","processed","Map","getFileIdx","name","has","set","get","toString","padStart"],"sources":["../../src/utils/getFileIdx.ts"],"sourcesContent":["let nextIdx = 1;\nconst processed = new Map<string, number>();\n\nexport function getFileIdx(name: string): string {\n if (!processed.has(name)) {\n // eslint-disable-next-line no-plusplus\n processed.set(name, nextIdx++);\n }\n\n return processed.get(name)!.toString().padStart(5, '0');\n}\n"],"mappings":"AAAA,IAAIA,OAAO,GAAG,CAAC;AACf,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAiB,CAAC;AAE3C,OAAO,SAASC,UAAUA,CAACC,IAAY,EAAU;EAC/C,IAAI,CAACH,SAAS,CAACI,GAAG,CAACD,IAAI,CAAC,EAAE;IACxB;IACAH,SAAS,CAACK,GAAG,CAACF,IAAI,EAAEJ,OAAO,EAAE,CAAC;EAChC;EAEA,OAAOC,SAAS,CAACM,GAAG,CAACH,IAAI,CAAC,CAAEI,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACzD"}
|
|
1
|
+
{"version":3,"file":"getFileIdx.js","names":["nextIdx","processed","Map","getFileIdx","name","has","set","get","toString","padStart"],"sources":["../../src/utils/getFileIdx.ts"],"sourcesContent":["let nextIdx = 1;\nconst processed = new Map<string, number>();\n\nexport function getFileIdx(name: string): string {\n if (!processed.has(name)) {\n // eslint-disable-next-line no-plusplus\n processed.set(name, nextIdx++);\n }\n\n return processed.get(name)!.toString().padStart(5, '0');\n}\n"],"mappings":"AAAA,IAAIA,OAAO,GAAG,CAAC;AACf,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAiB,CAAC;AAE3C,OAAO,SAASC,UAAUA,CAACC,IAAY,EAAU;EAC/C,IAAI,CAACH,SAAS,CAACI,GAAG,CAACD,IAAI,CAAC,EAAE;IACxB;IACAH,SAAS,CAACK,GAAG,CAACF,IAAI,EAAEJ,OAAO,EAAE,CAAC;EAChC;EAEA,OAAOC,SAAS,CAACM,GAAG,CAACH,IAAI,CAAC,CAAEI,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACzD","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as t from '@babel/types';
|
|
2
|
+
export function getMemberExpressionPropertyName(node) {
|
|
3
|
+
if (!node.computed && t.isIdentifier(node.property)) {
|
|
4
|
+
return node.property.name;
|
|
5
|
+
}
|
|
6
|
+
if (node.computed && t.isStringLiteral(node.property)) {
|
|
7
|
+
return node.property.value;
|
|
8
|
+
}
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=getMemberExpressionPropertyName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMemberExpressionPropertyName.js","names":["t","getMemberExpressionPropertyName","node","computed","isIdentifier","property","name","isStringLiteral","value"],"sources":["../../src/utils/getMemberExpressionPropertyName.ts"],"sourcesContent":["import type { MemberExpression } from '@babel/types';\nimport * as t from '@babel/types';\n\nexport function getMemberExpressionPropertyName(\n node: MemberExpression\n): string | null {\n if (!node.computed && t.isIdentifier(node.property)) {\n return node.property.name;\n }\n\n if (node.computed && t.isStringLiteral(node.property)) {\n return node.property.value;\n }\n\n return null;\n}\n"],"mappings":"AACA,OAAO,KAAKA,CAAC,MAAM,cAAc;AAEjC,OAAO,SAASC,+BAA+BA,CAC7CC,IAAsB,EACP;EACf,IAAI,CAACA,IAAI,CAACC,QAAQ,IAAIH,CAAC,CAACI,YAAY,CAACF,IAAI,CAACG,QAAQ,CAAC,EAAE;IACnD,OAAOH,IAAI,CAACG,QAAQ,CAACC,IAAI;EAC3B;EAEA,IAAIJ,IAAI,CAACC,QAAQ,IAAIH,CAAC,CAACO,eAAe,CAACL,IAAI,CAACG,QAAQ,CAAC,EAAE;IACrD,OAAOH,IAAI,CAACG,QAAQ,CAACG,KAAK;EAC5B;EAEA,OAAO,IAAI;AACb","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPluginKey.js","names":["getPluginKey","plugin","Array","isArray","key"],"sources":["../../src/utils/getPluginKey.ts"],"sourcesContent":["import type { PluginItem } from '@babel/core';\n\nexport const getPluginKey = (plugin: PluginItem): string | null => {\n if (typeof plugin === 'string') {\n return plugin;\n }\n\n if (Array.isArray(plugin)) {\n return getPluginKey(plugin[0]);\n }\n\n if (typeof plugin === 'object' && plugin !== null && 'key' in plugin) {\n return (plugin as { key?: string | null }).key ?? null;\n }\n\n return null;\n};\n"],"mappings":"AAEA,OAAO,MAAMA,YAAY,GAAIC,MAAkB,IAAoB;EACjE,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAOA,MAAM;EACf;EAEA,IAAIC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,EAAE;IACzB,OAAOD,YAAY,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC;EAChC;EAEA,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAIA,MAAM,KAAK,IAAI,IAAI,KAAK,IAAIA,MAAM,EAAE;IACpE,OAAQA,MAAM,CAA6BG,GAAG,IAAI,IAAI;EACxD;EAEA,OAAO,IAAI;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"getPluginKey.js","names":["getPluginKey","plugin","Array","isArray","key"],"sources":["../../src/utils/getPluginKey.ts"],"sourcesContent":["import type { PluginItem } from '@babel/core';\n\nexport const getPluginKey = (plugin: PluginItem): string | null => {\n if (typeof plugin === 'string') {\n return plugin;\n }\n\n if (Array.isArray(plugin)) {\n return getPluginKey(plugin[0]);\n }\n\n if (typeof plugin === 'object' && plugin !== null && 'key' in plugin) {\n return (plugin as { key?: string | null }).key ?? null;\n }\n\n return null;\n};\n"],"mappings":"AAEA,OAAO,MAAMA,YAAY,GAAIC,MAAkB,IAAoB;EACjE,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAOA,MAAM;EACf;EAEA,IAAIC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,EAAE;IACzB,OAAOD,YAAY,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC;EAChC;EAEA,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAIA,MAAM,KAAK,IAAI,IAAI,KAAK,IAAIA,MAAM,EAAE;IACpE,OAAQA,MAAM,CAA6BG,GAAG,IAAI,IAAI;EACxD;EAEA,OAAO,IAAI;AACb,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getScope.js","names":["getScope","path","key","parent","scope","block"],"sources":["../../src/utils/getScope.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\nexport function getScope(path: NodePath) {\n // In some nodes (like FunctionDeclaration) `scope` for `id` returns\n // local function scope instead of a scope where function is declared.\n return path.key === 'id' && path.parent === path.scope.block\n ? path.scope.parent\n : path.scope;\n}\n"],"mappings":"AAEA,OAAO,SAASA,QAAQA,CAACC,IAAc,EAAE;EACvC;EACA;EACA,OAAOA,IAAI,CAACC,GAAG,KAAK,IAAI,IAAID,IAAI,CAACE,MAAM,KAAKF,IAAI,CAACG,KAAK,CAACC,KAAK,GACxDJ,IAAI,CAACG,KAAK,CAACD,MAAM,GACjBF,IAAI,CAACG,KAAK;AAChB"}
|
|
1
|
+
{"version":3,"file":"getScope.js","names":["getScope","path","key","parent","scope","block"],"sources":["../../src/utils/getScope.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\nexport function getScope(path: NodePath) {\n // In some nodes (like FunctionDeclaration) `scope` for `id` returns\n // local function scope instead of a scope where function is declared.\n return path.key === 'id' && path.parent === path.scope.block\n ? path.scope.parent\n : path.scope;\n}\n"],"mappings":"AAEA,OAAO,SAASA,QAAQA,CAACC,IAAc,EAAE;EACvC;EACA;EACA,OAAOA,IAAI,CAACC,GAAG,KAAK,IAAI,IAAID,IAAI,CAACE,MAAM,KAAKF,IAAI,CAACG,KAAK,CAACC,KAAK,GACxDJ,IAAI,CAACG,KAAK,CAACD,MAAM,GACjBF,IAAI,CAACG,KAAK;AAChB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSource.js","names":["generator","getSource","path","force","isIdentifier","node","name","source","undefined","code","extra","parenthesized"],"sources":["../../src/utils/getSource.ts"],"sourcesContent":["import generator from '@babel/generator';\nimport type { NodePath } from '@babel/traverse';\n\nexport const getSource = (path: NodePath, force = false): string => {\n if (path.isIdentifier()) {\n // Fast-lane for identifiers\n return path.node.name;\n }\n\n let source: string | undefined;\n try {\n source = force ? undefined : path.getSource();\n // eslint-disable-next-line no-empty\n } catch {}\n\n source = source || generator(path.node).code;\n\n return path.node.extra?.parenthesized ? `(${source})` : source;\n};\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,kBAAkB;AAGxC,OAAO,MAAMC,SAAS,GAAGA,CAACC,IAAc,EAAEC,KAAK,GAAG,KAAK,KAAa;EAClE,IAAID,IAAI,CAACE,YAAY,CAAC,CAAC,EAAE;IACvB;IACA,OAAOF,IAAI,CAACG,IAAI,CAACC,IAAI;EACvB;EAEA,IAAIC,MAA0B;EAC9B,IAAI;IACFA,MAAM,GAAGJ,KAAK,GAAGK,SAAS,GAAGN,IAAI,CAACD,SAAS,CAAC,CAAC;IAC7C;EACF,CAAC,CAAC,MAAM,CAAC;EAETM,MAAM,GAAGA,MAAM,IAAIP,SAAS,CAACE,IAAI,CAACG,IAAI,CAAC,CAACI,IAAI;EAE5C,OAAOP,IAAI,CAACG,IAAI,CAACK,KAAK,EAAEC,aAAa,
|
|
1
|
+
{"version":3,"file":"getSource.js","names":["generator","getSource","path","force","isIdentifier","node","name","source","undefined","code","extra","parenthesized"],"sources":["../../src/utils/getSource.ts"],"sourcesContent":["import generator from '@babel/generator';\nimport type { NodePath } from '@babel/traverse';\n\nexport const getSource = (path: NodePath, force = false): string => {\n if (path.isIdentifier()) {\n // Fast-lane for identifiers\n return path.node.name;\n }\n\n let source: string | undefined;\n try {\n source = force ? undefined : path.getSource();\n // eslint-disable-next-line no-empty\n } catch {}\n\n source = source || generator(path.node).code;\n\n return path.node.extra?.parenthesized ? `(${source})` : source;\n};\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,kBAAkB;AAGxC,OAAO,MAAMC,SAAS,GAAGA,CAACC,IAAc,EAAEC,KAAK,GAAG,KAAK,KAAa;EAClE,IAAID,IAAI,CAACE,YAAY,CAAC,CAAC,EAAE;IACvB;IACA,OAAOF,IAAI,CAACG,IAAI,CAACC,IAAI;EACvB;EAEA,IAAIC,MAA0B;EAC9B,IAAI;IACFA,MAAM,GAAGJ,KAAK,GAAGK,SAAS,GAAGN,IAAI,CAACD,SAAS,CAAC,CAAC;IAC7C;EACF,CAAC,CAAC,MAAM,CAAC;EAETM,MAAM,GAAGA,MAAM,IAAIP,SAAS,CAACE,IAAI,CAACG,IAAI,CAAC,CAACI,IAAI;EAE5C,OAAOP,IAAI,CAACG,IAAI,CAACK,KAAK,EAAEC,aAAa,GAAG,IAAIJ,MAAM,GAAG,GAAGA,MAAM;AAChE,CAAC","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ import { basename, dirname, join } from 'path';
|
|
|
3
3
|
import { types as t } from '@babel/core';
|
|
4
4
|
import { addDefault, addNamed } from '@babel/helper-module-imports';
|
|
5
5
|
import { BaseProcessor } from '@wyw-in-js/processor-utils';
|
|
6
|
-
import { findPackageJSON } from '@wyw-in-js/shared';
|
|
6
|
+
import { findPackageJSON, syncResolve } from '@wyw-in-js/shared';
|
|
7
7
|
import { collectExportsAndImports, explicitImport } from './collectExportsAndImports';
|
|
8
8
|
import { collectTemplateDependencies, extractExpression } from './collectTemplateDependencies';
|
|
9
9
|
import { getSource } from './getSource';
|
|
@@ -27,6 +27,24 @@ function buildCodeFrameError(path, message) {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
const definedTagsCache = new Map();
|
|
30
|
+
const resolvedTagResolverSourceCache = new Map();
|
|
31
|
+
const getResolvedTagResolverSource = (source, sourceFile) => {
|
|
32
|
+
if (!sourceFile) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
const key = `${sourceFile}\0${source}`;
|
|
36
|
+
if (resolvedTagResolverSourceCache.has(key)) {
|
|
37
|
+
return resolvedTagResolverSourceCache.get(key);
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const resolved = syncResolve(source, sourceFile, []);
|
|
41
|
+
resolvedTagResolverSourceCache.set(key, resolved);
|
|
42
|
+
return resolved;
|
|
43
|
+
} catch {
|
|
44
|
+
resolvedTagResolverSourceCache.set(key, undefined);
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
30
48
|
const getDefinedTagsFromPackage = (pkgName, filename) => {
|
|
31
49
|
if (definedTagsCache.has(pkgName)) {
|
|
32
50
|
return definedTagsCache.get(pkgName);
|
|
@@ -73,8 +91,17 @@ export function getProcessorForImport({
|
|
|
73
91
|
imported,
|
|
74
92
|
source
|
|
75
93
|
}, filename, options) {
|
|
76
|
-
const
|
|
77
|
-
|
|
94
|
+
const {
|
|
95
|
+
tagResolver
|
|
96
|
+
} = options;
|
|
97
|
+
let customFile = null;
|
|
98
|
+
if (tagResolver) {
|
|
99
|
+
const tagResolverMeta = {
|
|
100
|
+
sourceFile: filename,
|
|
101
|
+
resolvedSource: getResolvedTagResolverSource(source, filename)
|
|
102
|
+
};
|
|
103
|
+
customFile = tagResolver(source, imported, tagResolverMeta);
|
|
104
|
+
}
|
|
78
105
|
const processor = customFile ? getProcessorFromFile(customFile) : getProcessorFromPackage(source, imported, filename);
|
|
79
106
|
return [processor, {
|
|
80
107
|
imported,
|
|
@@ -155,8 +182,9 @@ function getBuilderForIdentifier(definedProcessor, path, imports, options) {
|
|
|
155
182
|
}
|
|
156
183
|
const replacer = (replacement, isPure) => {
|
|
157
184
|
mutate(prev, p => {
|
|
158
|
-
|
|
159
|
-
|
|
185
|
+
const next = typeof replacement === 'function' ? replacement(p) : replacement;
|
|
186
|
+
p.replaceWith(next);
|
|
187
|
+
if (isPure && (p.isCallExpression() || p.isNewExpression())) {
|
|
160
188
|
p.addComment('leading', '#__PURE__');
|
|
161
189
|
}
|
|
162
190
|
});
|
|
@@ -234,7 +262,7 @@ function isTagReferenced(path) {
|
|
|
234
262
|
if (id.isIdentifier()) {
|
|
235
263
|
const {
|
|
236
264
|
referencePaths
|
|
237
|
-
} =
|
|
265
|
+
} = id.scope.getBinding(id.node.name) || {
|
|
238
266
|
referencePaths: []
|
|
239
267
|
};
|
|
240
268
|
isReferenced = referencePaths.length !== 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTagProcessor.js","names":["readFileSync","basename","dirname","join","types","t","addDefault","addNamed","BaseProcessor","findPackageJSON","collectExportsAndImports","explicitImport","collectTemplateDependencies","extractExpression","getSource","isNotNull","mutate","getTraversalCache","last","arr","length","zip","arr1","arr2","result","i","push","buildCodeFrameError","path","message","Error","definedTagsCache","Map","getDefinedTagsFromPackage","pkgName","filename","has","get","packageJSONPath","undefined","packageDir","packageJSON","JSON","parse","definedTags","tags","normalizedTags","Object","entries","reduce","acc","key","value","startsWith","require","resolve","paths","set","isValidProcessorClass","module","constructor","getProcessorFromPackage","packageName","tagName","processorPath","Processor","default","getProcessorFromFile","getProcessorForImport","imported","source","options","tagResolver","customFile","processor","getBuilderForIdentifier","definedProcessor","imports","tagSource","tagPath","parentPath","isMemberExpression","property","node","params","prev","current","isSequenceExpression","expressions","isCallExpression","callee","args","cookedArgs","map","arg","buildError","bind","isExpression","type","extracted","evaluate","filter","object","isIdentifier","computed","name","isStringLiteral","isTaggedTemplateExpression","tag","quasis","expressionValues","replacer","replacement","isPure","p","replaceWith","addComment","importHelpers","addDefaultImport","importedSource","nameHint","addNamedImport","astService","Proxy","target","prop","receiver","Reflect","loc","getDisplayName","idx","displayName","parent","findParent","isObjectProperty","isJSXOpeningElement","isVariableDeclarator","toString","keyPath","isJSXIdentifier","id","test","replace","isTagReferenced","isReferenced","referencePaths","scope","getBinding","counters","WeakMap","getNextIndex","state","counter","getDefinedProcessors","cache","defined","forEach","local","createProcessorInstance","fileContext","builder","e","SKIP","applyProcessors","callback","definedProcessors","usages","idName","includes","split","objBinding","identifier","sort","a","b","start","usage","instance"],"sources":["../../src/utils/getTagProcessor.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { basename, dirname, join } from 'path';\n\nimport { types as t } from '@babel/core';\nimport { addDefault, addNamed } from '@babel/helper-module-imports';\nimport type { NodePath } from '@babel/traverse';\nimport type {\n Expression,\n Identifier,\n MemberExpression,\n Program,\n SourceLocation,\n} from '@babel/types';\n\nimport { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport type {\n Param,\n Params,\n IFileContext,\n TagSource,\n} from '@wyw-in-js/processor-utils';\nimport { findPackageJSON } from '@wyw-in-js/shared';\nimport type { ExpressionValue, StrictOptions } from '@wyw-in-js/shared';\n\nimport type { IImport } from './collectExportsAndImports';\nimport {\n collectExportsAndImports,\n explicitImport,\n} from './collectExportsAndImports';\nimport {\n collectTemplateDependencies,\n extractExpression,\n} from './collectTemplateDependencies';\nimport { getSource } from './getSource';\nimport { isNotNull } from './isNotNull';\nimport { mutate } from './scopeHelpers';\nimport { getTraversalCache } from './traversalCache';\n\ntype BuilderArgs = ConstructorParameters<typeof BaseProcessor> extends [\n Params,\n TagSource,\n typeof t,\n SourceLocation | null,\n (replacement: Expression, isPure: boolean) => void,\n ...infer T,\n]\n ? T\n : never;\n\ntype Builder = (...args: BuilderArgs) => BaseProcessor;\n\ntype DefinedProcessor = [ProcessorClass, TagSource];\ntype DefinedProcessors = Map<string, DefinedProcessor>;\n\nexport type ProcessorClass = new (\n ...args: ConstructorParameters<typeof BaseProcessor>\n) => BaseProcessor;\n\nconst last = <T>(arr: T[]): T | undefined => arr[arr.length - 1];\n\nfunction zip<T1, T2>(arr1: T1[], arr2: T2[]) {\n const result: (T1 | T2)[] = [];\n for (let i = 0; i < arr1.length; i++) {\n result.push(arr1[i]);\n if (arr2[i]) result.push(arr2[i]);\n }\n\n return result;\n}\n\nfunction buildCodeFrameError(path: NodePath, message: string): Error {\n try {\n return path.buildCodeFrameError(message);\n } catch {\n return new Error(message);\n }\n}\n\nconst definedTagsCache = new Map<string, Record<string, string> | undefined>();\nconst getDefinedTagsFromPackage = (\n pkgName: string,\n filename: string | null | undefined\n): Record<string, string> | undefined => {\n if (definedTagsCache.has(pkgName)) {\n return definedTagsCache.get(pkgName);\n }\n\n const packageJSONPath = findPackageJSON(pkgName, filename);\n if (!packageJSONPath) {\n return undefined;\n }\n\n const packageDir = dirname(packageJSONPath);\n const packageJSON = JSON.parse(readFileSync(packageJSONPath, 'utf8'));\n const definedTags: Record<string, string> | undefined =\n packageJSON['wyw-in-js']?.tags;\n\n const normalizedTags = definedTags\n ? Object.entries(definedTags).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: value.startsWith('.')\n ? join(packageDir, value)\n : require.resolve(value, { paths: [packageDir] }),\n }),\n {} as Record<string, string>\n )\n : undefined;\n\n definedTagsCache.set(pkgName, normalizedTags);\n\n return normalizedTags;\n};\n\nfunction isValidProcessorClass(module: unknown): module is ProcessorClass {\n return module instanceof BaseProcessor.constructor;\n}\n\nfunction getProcessorFromPackage(\n packageName: string,\n tagName: string,\n filename: string | null | undefined\n): ProcessorClass | null {\n const definedTags = getDefinedTagsFromPackage(packageName, filename);\n const processorPath = definedTags?.[tagName];\n if (!processorPath) {\n return null;\n }\n\n const Processor = require(processorPath).default;\n if (!isValidProcessorClass(Processor)) {\n return null;\n }\n\n return Processor;\n}\n\nfunction getProcessorFromFile(processorPath: string): ProcessorClass | null {\n const Processor = require(processorPath).default;\n if (!isValidProcessorClass(Processor)) {\n return null;\n }\n\n return Processor;\n}\n\nexport function getProcessorForImport(\n { imported, source }: IImport,\n filename: string | null | undefined,\n options: Pick<StrictOptions, 'tagResolver'>\n): [ProcessorClass | null, TagSource] {\n const tagResolver = options.tagResolver ?? (() => null);\n\n const customFile = tagResolver(source, imported);\n const processor = customFile\n ? getProcessorFromFile(customFile)\n : getProcessorFromPackage(source, imported, filename);\n return [processor, { imported, source }];\n}\n\nfunction getBuilderForIdentifier(\n definedProcessor: DefinedProcessor,\n path: NodePath<Identifier>,\n imports: IImport[],\n options: Pick<StrictOptions, 'evaluate'>\n): Builder | null {\n const [Processor, tagSource] = definedProcessor;\n let tagPath: NodePath<Identifier | MemberExpression> = path;\n if (tagPath.parentPath?.isMemberExpression({ property: tagPath.node })) {\n tagPath = tagPath.parentPath;\n }\n\n if (!Processor || !tagSource || !tagPath) {\n return null;\n }\n\n const params: Param[] = [['callee', tagPath.node]];\n let prev: NodePath = tagPath;\n let current: NodePath | null = tagPath.parentPath;\n while (current && current !== path) {\n if (\n current?.isSequenceExpression() &&\n last(current.node.expressions) === prev.node\n ) {\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (current?.isCallExpression({ callee: prev.node })) {\n const args = current.get('arguments');\n const cookedArgs = args\n .map((arg) => {\n const buildError = arg.buildCodeFrameError.bind(arg);\n if (!arg.isExpression()) {\n throw buildError(`Unexpected type of an argument ${arg.type}`);\n }\n const source = getSource(arg);\n const extracted = extractExpression(arg, options.evaluate, imports);\n return {\n ...extracted,\n source,\n buildCodeFrameError: buildError,\n } as ExpressionValue;\n })\n .filter(isNotNull);\n\n params.push(['call', ...cookedArgs]);\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (current?.isMemberExpression({ object: prev.node })) {\n const property = current.get('property');\n if (property.isIdentifier() && !current.node.computed) {\n params.push(['member', property.node.name]);\n } else if (property.isStringLiteral()) {\n params.push(['member', property.node.value]);\n } else {\n throw property.buildCodeFrameError(`Unexpected type of a property`);\n }\n\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (current?.isTaggedTemplateExpression({ tag: prev.node })) {\n const [quasis, expressionValues] = collectTemplateDependencies(\n current,\n options.evaluate\n );\n params.push(['template', zip(quasis, expressionValues)]);\n\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n break;\n }\n\n const replacer = (\n replacement: Expression | ((tagPath: NodePath) => Expression),\n isPure: boolean\n ) => {\n mutate(prev, (p) => {\n p.replaceWith(\n typeof replacement === 'function' ? replacement(p) : replacement\n );\n if (isPure) {\n p.addComment('leading', '#__PURE__');\n }\n });\n };\n\n const importHelpers = {\n addDefaultImport: (importedSource: string, nameHint?: string) =>\n addDefault(path, importedSource, { nameHint }),\n addNamedImport: (\n name: string,\n importedSource: string,\n nameHint: string = name\n ) => addNamed(path, name, importedSource, { nameHint }),\n };\n\n type AstService = typeof t & typeof importHelpers;\n\n const astService = new Proxy<AstService>(t as AstService, {\n get(target, prop, receiver) {\n if (prop in importHelpers) {\n return importHelpers[prop as keyof typeof importHelpers];\n }\n\n return Reflect.get(target, prop, receiver);\n },\n });\n\n return (...args: BuilderArgs) =>\n new Processor(\n params,\n tagSource,\n astService,\n tagPath.node.loc ?? null,\n replacer,\n ...args\n );\n}\n\nfunction getDisplayName(\n path: NodePath<Identifier>,\n idx: number,\n filename?: string | null\n): string {\n let displayName: string | undefined;\n\n const parent = path.findParent(\n (p) =>\n p.isObjectProperty() ||\n p.isJSXOpeningElement() ||\n p.isVariableDeclarator()\n );\n\n if (parent) {\n if (parent.isObjectProperty()) {\n if ('name' in parent.node.key) {\n displayName = parent.node.key.name;\n } else if ('value' in parent.node.key) {\n displayName = parent.node.key.value.toString();\n } else {\n const keyPath = parent.get('key');\n displayName = getSource(keyPath);\n }\n } else if (parent.isJSXOpeningElement()) {\n const name = parent.get('name');\n if (name.isJSXIdentifier()) {\n displayName = name.node.name;\n }\n } else if (parent.isVariableDeclarator()) {\n const id = parent.get('id');\n if (id.isIdentifier()) {\n displayName = id.node.name;\n }\n }\n }\n\n if (!displayName) {\n // Try to derive the path from the filename\n displayName = basename(filename ?? 'unknown');\n\n if (filename && /^index\\.[a-z\\d]+$/.test(displayName)) {\n // If the file name is 'index', better to get name from parent folder\n displayName = basename(dirname(filename));\n }\n\n // Remove the file extension\n displayName = displayName.replace(/\\.[a-z\\d]+$/, '');\n\n if (displayName) {\n displayName += idx;\n } else {\n throw new Error(\n \"Couldn't determine a name for the component. Ensure that it's either:\\n\" +\n '- Assigned to a variable\\n' +\n '- Is an object property\\n' +\n '- Is a prop in a JSX element\\n'\n );\n }\n }\n\n return displayName;\n}\n\nfunction isTagReferenced(path: NodePath): boolean {\n // Check if the variable is referenced anywhere for basic DCE\n // Only works when it's assigned to a variable\n let isReferenced = true;\n\n const parent = path.findParent(\n (p) =>\n p.isObjectProperty() ||\n p.isJSXOpeningElement() ||\n p.isVariableDeclarator()\n );\n\n if (parent) {\n if (parent.isVariableDeclarator()) {\n const id = parent.get('id');\n // FIXME: replace with id.isReferencedIdentifier()\n if (id.isIdentifier()) {\n const { referencePaths } = path.scope.getBinding(id.node.name) || {\n referencePaths: [],\n };\n\n isReferenced = referencePaths.length !== 0;\n }\n }\n }\n\n return isReferenced;\n}\n\nconst counters = new WeakMap<IFileContext, number>();\nconst getNextIndex = (state: IFileContext) => {\n const counter = counters.get(state) ?? 0;\n counters.set(state, counter + 1);\n return counter;\n};\n\nexport function getDefinedProcessors(\n imports: IImport[],\n path: NodePath<Program>,\n filename: string | null | undefined,\n options: Pick<StrictOptions, 'tagResolver'>\n): DefinedProcessors {\n const cache = getTraversalCache<DefinedProcessors, NodePath<Program>>(\n path,\n 'getDefinedProcessors'\n );\n\n if (!cache.has(path)) {\n const defined: DefinedProcessors = new Map();\n\n imports.forEach((i) => {\n const [processor, tagSource] = getProcessorForImport(\n i,\n filename,\n options\n );\n const { local } = i;\n if (!processor) {\n return;\n }\n\n let name: string | null = null;\n if (local.isIdentifier()) {\n name = local.node.name;\n }\n\n if (name === null && local.isMemberExpression()) {\n const property = local.get('property');\n const object = local.get('object');\n if (property.isIdentifier() && object.isIdentifier()) {\n name = `${object.node.name}.${property.node.name}`;\n }\n }\n\n if (name === null) {\n return;\n }\n\n defined.set(name, [processor, tagSource]);\n });\n\n cache.set(path, defined);\n }\n\n return cache.get(path)!;\n}\n\nfunction createProcessorInstance(\n definedProcessor: [ProcessorClass, TagSource],\n imports: IImport[],\n path: NodePath<Identifier>,\n fileContext: IFileContext,\n options: Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'extensions' | 'evaluate' | 'tagResolver'\n >\n): BaseProcessor | null {\n const cache = getTraversalCache<BaseProcessor | null, Identifier>(\n path,\n 'createProcessorInstance'\n );\n\n if (!cache.has(path.node)) {\n try {\n const builder = getBuilderForIdentifier(\n definedProcessor,\n path,\n imports,\n options\n );\n if (builder) {\n // Increment the index of the style we're processing\n // This is used for slug generation to prevent collision\n // Also used for display name if it couldn't be determined\n const idx = getNextIndex(fileContext);\n\n const displayName = getDisplayName(path, idx, fileContext.filename);\n\n const processor = builder(\n displayName,\n isTagReferenced(path),\n idx,\n options,\n fileContext\n );\n\n cache.set(path.node, processor);\n } else {\n cache.set(path.node, null);\n }\n } catch (e) {\n if (e === BaseProcessor.SKIP) {\n cache.set(path.node, null);\n return null;\n }\n\n if (e instanceof Error) {\n throw buildCodeFrameError(path, e.message);\n }\n\n throw e;\n }\n }\n\n return cache.get(path.node) ?? null;\n}\n\nexport function applyProcessors(\n path: NodePath<Program>,\n fileContext: IFileContext,\n options: Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'extensions' | 'evaluate' | 'tagResolver'\n >,\n callback: (processor: BaseProcessor) => void\n) {\n const imports = collectExportsAndImports(path).imports.filter(explicitImport);\n\n const definedProcessors = getDefinedProcessors(\n imports,\n path,\n fileContext.filename,\n options\n );\n\n const usages: {\n identifier: NodePath<Identifier>;\n processor: DefinedProcessor;\n }[] = [];\n\n definedProcessors.forEach((processor, idName) => {\n if (idName.includes('.')) {\n // It's a member expression\n const [object, property] = idName.split('.');\n const objBinding = path.scope.getBinding(object);\n if (!objBinding) {\n return;\n }\n\n objBinding.referencePaths.forEach((p) => {\n const parent = p.parentPath;\n if (!parent?.isMemberExpression()) {\n return;\n }\n\n const identifier = parent.get('property');\n if (identifier.isIdentifier({ name: property })) {\n usages.push({\n identifier,\n processor,\n });\n }\n });\n\n return;\n }\n\n path.scope.getBinding(idName)?.referencePaths.forEach((identifier) => {\n if (identifier.isIdentifier()) {\n usages.push({\n identifier,\n processor,\n });\n }\n });\n });\n\n // The same order, the same slugs\n usages.sort(\n (a, b) => (a.identifier.node.start ?? 0) - (b.identifier.node.start ?? 0)\n );\n\n usages.forEach((usage) => {\n const definedProcessor = usage.processor;\n\n if (!definedProcessor) {\n return;\n }\n\n const instance = createProcessorInstance(\n definedProcessor,\n imports,\n usage.identifier,\n fileContext,\n options\n );\n\n if (instance === null) {\n return;\n }\n\n callback(instance);\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getTagProcessor.js","names":["readFileSync","basename","dirname","join","types","t","addDefault","addNamed","BaseProcessor","findPackageJSON","syncResolve","collectExportsAndImports","explicitImport","collectTemplateDependencies","extractExpression","getSource","isNotNull","mutate","getTraversalCache","last","arr","length","zip","arr1","arr2","result","i","push","buildCodeFrameError","path","message","Error","definedTagsCache","Map","resolvedTagResolverSourceCache","getResolvedTagResolverSource","source","sourceFile","undefined","key","has","get","resolved","set","getDefinedTagsFromPackage","pkgName","filename","packageJSONPath","packageDir","packageJSON","JSON","parse","definedTags","tags","normalizedTags","Object","entries","reduce","acc","value","startsWith","require","resolve","paths","isValidProcessorClass","module","constructor","getProcessorFromPackage","packageName","tagName","processorPath","Processor","default","getProcessorFromFile","getProcessorForImport","imported","options","tagResolver","customFile","tagResolverMeta","resolvedSource","processor","getBuilderForIdentifier","definedProcessor","imports","tagSource","tagPath","parentPath","isMemberExpression","property","node","params","prev","current","isSequenceExpression","expressions","isCallExpression","callee","args","cookedArgs","map","arg","buildError","bind","isExpression","type","extracted","evaluate","filter","object","isIdentifier","computed","name","isStringLiteral","isTaggedTemplateExpression","tag","quasis","expressionValues","replacer","replacement","isPure","p","next","replaceWith","isNewExpression","addComment","importHelpers","addDefaultImport","importedSource","nameHint","addNamedImport","astService","Proxy","target","prop","receiver","Reflect","loc","getDisplayName","idx","displayName","parent","findParent","isObjectProperty","isJSXOpeningElement","isVariableDeclarator","toString","keyPath","isJSXIdentifier","id","test","replace","isTagReferenced","isReferenced","referencePaths","scope","getBinding","counters","WeakMap","getNextIndex","state","counter","getDefinedProcessors","cache","defined","forEach","local","createProcessorInstance","fileContext","builder","e","SKIP","applyProcessors","callback","definedProcessors","usages","idName","includes","split","objBinding","identifier","sort","a","b","start","usage","instance"],"sources":["../../src/utils/getTagProcessor.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { basename, dirname, join } from 'path';\n\nimport { types as t } from '@babel/core';\nimport { addDefault, addNamed } from '@babel/helper-module-imports';\nimport type { NodePath } from '@babel/traverse';\nimport type {\n Expression,\n Identifier,\n MemberExpression,\n Program,\n SourceLocation,\n} from '@babel/types';\n\nimport { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport type {\n Param,\n Params,\n IFileContext,\n TagSource,\n} from '@wyw-in-js/processor-utils';\nimport { findPackageJSON, syncResolve } from '@wyw-in-js/shared';\nimport type {\n ExpressionValue,\n StrictOptions,\n TagResolverMeta,\n} from '@wyw-in-js/shared';\n\nimport type { IImport } from './collectExportsAndImports';\nimport {\n collectExportsAndImports,\n explicitImport,\n} from './collectExportsAndImports';\nimport {\n collectTemplateDependencies,\n extractExpression,\n} from './collectTemplateDependencies';\nimport { getSource } from './getSource';\nimport { isNotNull } from './isNotNull';\nimport { mutate } from './scopeHelpers';\nimport { getTraversalCache } from './traversalCache';\n\ntype BuilderArgs = ConstructorParameters<typeof BaseProcessor> extends [\n Params,\n TagSource,\n typeof t,\n SourceLocation | null,\n (replacement: Expression, isPure: boolean) => void,\n ...infer T,\n]\n ? T\n : never;\n\ntype Builder = (...args: BuilderArgs) => BaseProcessor;\n\ntype DefinedProcessor = [ProcessorClass, TagSource];\ntype DefinedProcessors = Map<string, DefinedProcessor>;\n\nexport type ProcessorClass = new (\n ...args: ConstructorParameters<typeof BaseProcessor>\n) => BaseProcessor;\n\nconst last = <T>(arr: T[]): T | undefined => arr[arr.length - 1];\n\nfunction zip<T1, T2>(arr1: T1[], arr2: T2[]) {\n const result: (T1 | T2)[] = [];\n for (let i = 0; i < arr1.length; i++) {\n result.push(arr1[i]);\n if (arr2[i]) result.push(arr2[i]);\n }\n\n return result;\n}\n\nfunction buildCodeFrameError(path: NodePath, message: string): Error {\n try {\n return path.buildCodeFrameError(message);\n } catch {\n return new Error(message);\n }\n}\n\nconst definedTagsCache = new Map<string, Record<string, string> | undefined>();\nconst resolvedTagResolverSourceCache = new Map<string, string | undefined>();\n\nconst getResolvedTagResolverSource = (\n source: string,\n sourceFile: string | null | undefined\n): string | undefined => {\n if (!sourceFile) {\n return undefined;\n }\n\n const key = `${sourceFile}\\0${source}`;\n if (resolvedTagResolverSourceCache.has(key)) {\n return resolvedTagResolverSourceCache.get(key);\n }\n\n try {\n const resolved = syncResolve(source, sourceFile, []);\n resolvedTagResolverSourceCache.set(key, resolved);\n return resolved;\n } catch {\n resolvedTagResolverSourceCache.set(key, undefined);\n return undefined;\n }\n};\n\nconst getDefinedTagsFromPackage = (\n pkgName: string,\n filename: string | null | undefined\n): Record<string, string> | undefined => {\n if (definedTagsCache.has(pkgName)) {\n return definedTagsCache.get(pkgName);\n }\n\n const packageJSONPath = findPackageJSON(pkgName, filename);\n if (!packageJSONPath) {\n return undefined;\n }\n\n const packageDir = dirname(packageJSONPath);\n const packageJSON = JSON.parse(readFileSync(packageJSONPath, 'utf8'));\n const definedTags: Record<string, string> | undefined =\n packageJSON['wyw-in-js']?.tags;\n\n const normalizedTags = definedTags\n ? Object.entries(definedTags).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: value.startsWith('.')\n ? join(packageDir, value)\n : require.resolve(value, { paths: [packageDir] }),\n }),\n {} as Record<string, string>\n )\n : undefined;\n\n definedTagsCache.set(pkgName, normalizedTags);\n\n return normalizedTags;\n};\n\nfunction isValidProcessorClass(module: unknown): module is ProcessorClass {\n return module instanceof BaseProcessor.constructor;\n}\n\nfunction getProcessorFromPackage(\n packageName: string,\n tagName: string,\n filename: string | null | undefined\n): ProcessorClass | null {\n const definedTags = getDefinedTagsFromPackage(packageName, filename);\n const processorPath = definedTags?.[tagName];\n if (!processorPath) {\n return null;\n }\n\n const Processor = require(processorPath).default;\n if (!isValidProcessorClass(Processor)) {\n return null;\n }\n\n return Processor;\n}\n\nfunction getProcessorFromFile(processorPath: string): ProcessorClass | null {\n const Processor = require(processorPath).default;\n if (!isValidProcessorClass(Processor)) {\n return null;\n }\n\n return Processor;\n}\n\nexport function getProcessorForImport(\n { imported, source }: IImport,\n filename: string | null | undefined,\n options: Pick<StrictOptions, 'tagResolver'>\n): [ProcessorClass | null, TagSource] {\n const { tagResolver } = options;\n\n let customFile: string | null = null;\n if (tagResolver) {\n const tagResolverMeta: TagResolverMeta = {\n sourceFile: filename,\n resolvedSource: getResolvedTagResolverSource(source, filename),\n };\n\n customFile = tagResolver(source, imported, tagResolverMeta);\n }\n const processor = customFile\n ? getProcessorFromFile(customFile)\n : getProcessorFromPackage(source, imported, filename);\n return [processor, { imported, source }];\n}\n\nfunction getBuilderForIdentifier(\n definedProcessor: DefinedProcessor,\n path: NodePath<Identifier>,\n imports: IImport[],\n options: Pick<StrictOptions, 'evaluate'>\n): Builder | null {\n const [Processor, tagSource] = definedProcessor;\n let tagPath: NodePath<Identifier | MemberExpression> = path;\n if (tagPath.parentPath?.isMemberExpression({ property: tagPath.node })) {\n tagPath = tagPath.parentPath;\n }\n\n if (!Processor || !tagSource || !tagPath) {\n return null;\n }\n\n const params: Param[] = [['callee', tagPath.node]];\n let prev: NodePath = tagPath;\n let current: NodePath | null = tagPath.parentPath;\n while (current && current !== path) {\n if (\n current?.isSequenceExpression() &&\n last(current.node.expressions) === prev.node\n ) {\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (current?.isCallExpression({ callee: prev.node })) {\n const args = current.get('arguments');\n const cookedArgs = args\n .map((arg) => {\n const buildError = arg.buildCodeFrameError.bind(arg);\n if (!arg.isExpression()) {\n throw buildError(`Unexpected type of an argument ${arg.type}`);\n }\n const source = getSource(arg);\n const extracted = extractExpression(arg, options.evaluate, imports);\n return {\n ...extracted,\n source,\n buildCodeFrameError: buildError,\n } as ExpressionValue;\n })\n .filter(isNotNull);\n\n params.push(['call', ...cookedArgs]);\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (current?.isMemberExpression({ object: prev.node })) {\n const property = current.get('property');\n if (property.isIdentifier() && !current.node.computed) {\n params.push(['member', property.node.name]);\n } else if (property.isStringLiteral()) {\n params.push(['member', property.node.value]);\n } else {\n throw property.buildCodeFrameError(`Unexpected type of a property`);\n }\n\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (current?.isTaggedTemplateExpression({ tag: prev.node })) {\n const [quasis, expressionValues] = collectTemplateDependencies(\n current,\n options.evaluate\n );\n params.push(['template', zip(quasis, expressionValues)]);\n\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n break;\n }\n\n const replacer = (\n replacement: Expression | ((tagPath: NodePath) => Expression),\n isPure: boolean\n ) => {\n mutate(prev, (p) => {\n const next =\n typeof replacement === 'function' ? replacement(p) : replacement;\n\n p.replaceWith(next);\n\n if (isPure && (p.isCallExpression() || p.isNewExpression())) {\n p.addComment('leading', '#__PURE__');\n }\n });\n };\n\n const importHelpers = {\n addDefaultImport: (importedSource: string, nameHint?: string) =>\n addDefault(path, importedSource, { nameHint }),\n addNamedImport: (\n name: string,\n importedSource: string,\n nameHint: string = name\n ) => addNamed(path, name, importedSource, { nameHint }),\n };\n\n type AstService = typeof t & typeof importHelpers;\n\n const astService = new Proxy<AstService>(t as AstService, {\n get(target, prop, receiver) {\n if (prop in importHelpers) {\n return importHelpers[prop as keyof typeof importHelpers];\n }\n\n return Reflect.get(target, prop, receiver);\n },\n });\n\n return (...args: BuilderArgs) =>\n new Processor(\n params,\n tagSource,\n astService,\n tagPath.node.loc ?? null,\n replacer,\n ...args\n );\n}\n\nfunction getDisplayName(\n path: NodePath<Identifier>,\n idx: number,\n filename?: string | null\n): string {\n let displayName: string | undefined;\n\n const parent = path.findParent(\n (p) =>\n p.isObjectProperty() ||\n p.isJSXOpeningElement() ||\n p.isVariableDeclarator()\n );\n\n if (parent) {\n if (parent.isObjectProperty()) {\n if ('name' in parent.node.key) {\n displayName = parent.node.key.name;\n } else if ('value' in parent.node.key) {\n displayName = parent.node.key.value.toString();\n } else {\n const keyPath = parent.get('key');\n displayName = getSource(keyPath);\n }\n } else if (parent.isJSXOpeningElement()) {\n const name = parent.get('name');\n if (name.isJSXIdentifier()) {\n displayName = name.node.name;\n }\n } else if (parent.isVariableDeclarator()) {\n const id = parent.get('id');\n if (id.isIdentifier()) {\n displayName = id.node.name;\n }\n }\n }\n\n if (!displayName) {\n // Try to derive the path from the filename\n displayName = basename(filename ?? 'unknown');\n\n if (filename && /^index\\.[a-z\\d]+$/.test(displayName)) {\n // If the file name is 'index', better to get name from parent folder\n displayName = basename(dirname(filename));\n }\n\n // Remove the file extension\n displayName = displayName.replace(/\\.[a-z\\d]+$/, '');\n\n if (displayName) {\n displayName += idx;\n } else {\n throw new Error(\n \"Couldn't determine a name for the component. Ensure that it's either:\\n\" +\n '- Assigned to a variable\\n' +\n '- Is an object property\\n' +\n '- Is a prop in a JSX element\\n'\n );\n }\n }\n\n return displayName;\n}\n\nfunction isTagReferenced(path: NodePath): boolean {\n // Check if the variable is referenced anywhere for basic DCE\n // Only works when it's assigned to a variable\n let isReferenced = true;\n\n const parent = path.findParent(\n (p) =>\n p.isObjectProperty() ||\n p.isJSXOpeningElement() ||\n p.isVariableDeclarator()\n );\n\n if (parent) {\n if (parent.isVariableDeclarator()) {\n const id = parent.get('id');\n // FIXME: replace with id.isReferencedIdentifier()\n if (id.isIdentifier()) {\n const { referencePaths } = id.scope.getBinding(id.node.name) || {\n referencePaths: [],\n };\n\n isReferenced = referencePaths.length !== 0;\n }\n }\n }\n\n return isReferenced;\n}\n\nconst counters = new WeakMap<IFileContext, number>();\nconst getNextIndex = (state: IFileContext) => {\n const counter = counters.get(state) ?? 0;\n counters.set(state, counter + 1);\n return counter;\n};\n\nexport function getDefinedProcessors(\n imports: IImport[],\n path: NodePath<Program>,\n filename: string | null | undefined,\n options: Pick<StrictOptions, 'tagResolver'>\n): DefinedProcessors {\n const cache = getTraversalCache<DefinedProcessors, NodePath<Program>>(\n path,\n 'getDefinedProcessors'\n );\n\n if (!cache.has(path)) {\n const defined: DefinedProcessors = new Map();\n\n imports.forEach((i) => {\n const [processor, tagSource] = getProcessorForImport(\n i,\n filename,\n options\n );\n const { local } = i;\n if (!processor) {\n return;\n }\n\n let name: string | null = null;\n if (local.isIdentifier()) {\n name = local.node.name;\n }\n\n if (name === null && local.isMemberExpression()) {\n const property = local.get('property');\n const object = local.get('object');\n if (property.isIdentifier() && object.isIdentifier()) {\n name = `${object.node.name}.${property.node.name}`;\n }\n }\n\n if (name === null) {\n return;\n }\n\n defined.set(name, [processor, tagSource]);\n });\n\n cache.set(path, defined);\n }\n\n return cache.get(path)!;\n}\n\nfunction createProcessorInstance(\n definedProcessor: [ProcessorClass, TagSource],\n imports: IImport[],\n path: NodePath<Identifier>,\n fileContext: IFileContext,\n options: Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'extensions' | 'evaluate' | 'tagResolver'\n >\n): BaseProcessor | null {\n const cache = getTraversalCache<BaseProcessor | null, Identifier>(\n path,\n 'createProcessorInstance'\n );\n\n if (!cache.has(path.node)) {\n try {\n const builder = getBuilderForIdentifier(\n definedProcessor,\n path,\n imports,\n options\n );\n if (builder) {\n // Increment the index of the style we're processing\n // This is used for slug generation to prevent collision\n // Also used for display name if it couldn't be determined\n const idx = getNextIndex(fileContext);\n\n const displayName = getDisplayName(path, idx, fileContext.filename);\n\n const processor = builder(\n displayName,\n isTagReferenced(path),\n idx,\n options,\n fileContext\n );\n\n cache.set(path.node, processor);\n } else {\n cache.set(path.node, null);\n }\n } catch (e) {\n if (e === BaseProcessor.SKIP) {\n cache.set(path.node, null);\n return null;\n }\n\n if (e instanceof Error) {\n throw buildCodeFrameError(path, e.message);\n }\n\n throw e;\n }\n }\n\n return cache.get(path.node) ?? null;\n}\n\nexport function applyProcessors(\n path: NodePath<Program>,\n fileContext: IFileContext,\n options: Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'extensions' | 'evaluate' | 'tagResolver'\n >,\n callback: (processor: BaseProcessor) => void\n) {\n const imports = collectExportsAndImports(path).imports.filter(explicitImport);\n\n const definedProcessors = getDefinedProcessors(\n imports,\n path,\n fileContext.filename,\n options\n );\n\n const usages: {\n identifier: NodePath<Identifier>;\n processor: DefinedProcessor;\n }[] = [];\n\n definedProcessors.forEach((processor, idName) => {\n if (idName.includes('.')) {\n // It's a member expression\n const [object, property] = idName.split('.');\n const objBinding = path.scope.getBinding(object);\n if (!objBinding) {\n return;\n }\n\n objBinding.referencePaths.forEach((p) => {\n const parent = p.parentPath;\n if (!parent?.isMemberExpression()) {\n return;\n }\n\n const identifier = parent.get('property');\n if (identifier.isIdentifier({ name: property })) {\n usages.push({\n identifier,\n processor,\n });\n }\n });\n\n return;\n }\n\n path.scope.getBinding(idName)?.referencePaths.forEach((identifier) => {\n if (identifier.isIdentifier()) {\n usages.push({\n identifier,\n processor,\n });\n }\n });\n });\n\n // The same order, the same slugs\n usages.sort(\n (a, b) => (a.identifier.node.start ?? 0) - (b.identifier.node.start ?? 0)\n );\n\n usages.forEach((usage) => {\n const definedProcessor = usage.processor;\n\n if (!definedProcessor) {\n return;\n }\n\n const instance = createProcessorInstance(\n definedProcessor,\n imports,\n usage.identifier,\n fileContext,\n options\n );\n\n if (instance === null) {\n return;\n }\n\n callback(instance);\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getVisitorKeys.js","names":["types","t","getVisitorKeys","node","VISITOR_KEYS","type"],"sources":["../../src/utils/getVisitorKeys.ts"],"sourcesContent":["import { types as t } from '@babel/core';\nimport type { Node } from '@babel/types';\n\nexport type VisitorKeys<T extends Node> = {\n [K in keyof T]: Exclude<T[K], undefined> extends Node | Node[] | null\n ? K\n : never;\n}[keyof T] &\n string;\n\nexport function getVisitorKeys<TNode extends Node>(\n node: TNode\n): VisitorKeys<TNode>[] {\n return t.VISITOR_KEYS[node.type] as VisitorKeys<TNode>[];\n}\n"],"mappings":"AAAA,SAASA,KAAK,IAAIC,CAAC,QAAQ,aAAa;AAUxC,OAAO,SAASC,cAAcA,CAC5BC,IAAW,EACW;EACtB,OAAOF,CAAC,CAACG,YAAY,CAACD,IAAI,CAACE,IAAI,CAAC;AAClC"}
|
|
1
|
+
{"version":3,"file":"getVisitorKeys.js","names":["types","t","getVisitorKeys","node","VISITOR_KEYS","type"],"sources":["../../src/utils/getVisitorKeys.ts"],"sourcesContent":["import { types as t } from '@babel/core';\nimport type { Node } from '@babel/types';\n\nexport type VisitorKeys<T extends Node> = {\n [K in keyof T]: Exclude<T[K], undefined> extends Node | Node[] | null\n ? K\n : never;\n}[keyof T] &\n string;\n\nexport function getVisitorKeys<TNode extends Node>(\n node: TNode\n): VisitorKeys<TNode>[] {\n return t.VISITOR_KEYS[node.type] as VisitorKeys<TNode>[];\n}\n"],"mappings":"AAAA,SAASA,KAAK,IAAIC,CAAC,QAAQ,aAAa;AAUxC,OAAO,SAASC,cAAcA,CAC5BC,IAAW,EACW;EACtB,OAAOF,CAAC,CAACG,YAAY,CAACD,IAAI,CAACE,IAAI,CAAC;AAClC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasWywPreval.js","names":["hasWywPreval","exports"],"sources":["../../src/utils/hasWywPreval.ts"],"sourcesContent":["import type { Value } from '@wyw-in-js/processor-utils';\n\nexport default function hasWywPreval(exports: unknown): exports is {\n __wywPreval: Record<string, () => Value> | null | undefined;\n} {\n if (!exports || typeof exports !== 'object') {\n return false;\n }\n\n return '__wywPreval' in exports;\n}\n"],"mappings":"AAEA,eAAe,SAASA,YAAYA,CAACC,OAAgB,EAEnD;EACA,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC3C,OAAO,KAAK;EACd;EAEA,OAAO,aAAa,IAAIA,OAAO;AACjC"}
|
|
1
|
+
{"version":3,"file":"hasWywPreval.js","names":["hasWywPreval","exports"],"sources":["../../src/utils/hasWywPreval.ts"],"sourcesContent":["import type { Value } from '@wyw-in-js/processor-utils';\n\nexport default function hasWywPreval(exports: unknown): exports is {\n __wywPreval: Record<string, () => Value> | null | undefined;\n} {\n if (!exports || typeof exports !== 'object') {\n return false;\n }\n\n return '__wywPreval' in exports;\n}\n"],"mappings":"AAEA,eAAe,SAASA,YAAYA,CAACC,OAAgB,EAEnD;EACA,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC3C,OAAO,KAAK;EACd;EAEA,OAAO,aAAa,IAAIA,OAAO;AACjC","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { syncResolve } from '@wyw-in-js/shared';
|
|
3
|
+
export function toCanonicalFileKey(resolved, root) {
|
|
4
|
+
const rootDir = root ? path.resolve(root) : process.cwd();
|
|
5
|
+
const normalizedResolved = path.resolve(resolved);
|
|
6
|
+
let relative = path.relative(rootDir, normalizedResolved);
|
|
7
|
+
if (path.sep !== path.posix.sep) {
|
|
8
|
+
relative = relative.split(path.sep).join(path.posix.sep);
|
|
9
|
+
}
|
|
10
|
+
if (!relative.startsWith('.')) {
|
|
11
|
+
relative = `./${relative}`;
|
|
12
|
+
}
|
|
13
|
+
return relative;
|
|
14
|
+
}
|
|
15
|
+
export function toImportKey({
|
|
16
|
+
source,
|
|
17
|
+
resolved,
|
|
18
|
+
root
|
|
19
|
+
}) {
|
|
20
|
+
const isFileImport = source.startsWith('.') || path.isAbsolute(source);
|
|
21
|
+
if (isFileImport && resolved) {
|
|
22
|
+
return {
|
|
23
|
+
key: toCanonicalFileKey(resolved, root),
|
|
24
|
+
kind: 'file'
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
key: source,
|
|
29
|
+
kind: 'package'
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function resolveMockSpecifier({
|
|
33
|
+
importer,
|
|
34
|
+
mock,
|
|
35
|
+
root,
|
|
36
|
+
stack
|
|
37
|
+
}) {
|
|
38
|
+
const specifier = mock.startsWith('.') && root ? path.resolve(root, mock) : mock;
|
|
39
|
+
return syncResolve(specifier, importer, stack);
|
|
40
|
+
}
|
|
41
|
+
export function applyImportOverrideToOnly(only, override) {
|
|
42
|
+
if (override?.noShake) {
|
|
43
|
+
return ['*'];
|
|
44
|
+
}
|
|
45
|
+
return only;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=importOverrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importOverrides.js","names":["path","syncResolve","toCanonicalFileKey","resolved","root","rootDir","resolve","process","cwd","normalizedResolved","relative","sep","posix","split","join","startsWith","toImportKey","source","isFileImport","isAbsolute","key","kind","resolveMockSpecifier","importer","mock","stack","specifier","applyImportOverrideToOnly","only","override","noShake"],"sources":["../../src/utils/importOverrides.ts"],"sourcesContent":["import path from 'path';\n\nimport { syncResolve, type ImportOverride } from '@wyw-in-js/shared';\n\nexport type ImportKeyKind = 'file' | 'package';\n\nexport type ImportKey = {\n key: string;\n kind: ImportKeyKind;\n};\n\nexport function toCanonicalFileKey(\n resolved: string,\n root: string | undefined\n): string {\n const rootDir = root ? path.resolve(root) : process.cwd();\n const normalizedResolved = path.resolve(resolved);\n let relative = path.relative(rootDir, normalizedResolved);\n\n if (path.sep !== path.posix.sep) {\n relative = relative.split(path.sep).join(path.posix.sep);\n }\n\n if (!relative.startsWith('.')) {\n relative = `./${relative}`;\n }\n\n return relative;\n}\n\nexport function toImportKey({\n source,\n resolved,\n root,\n}: {\n resolved: string | null;\n root: string | undefined;\n source: string;\n}): ImportKey {\n const isFileImport = source.startsWith('.') || path.isAbsolute(source);\n\n if (isFileImport && resolved) {\n return { key: toCanonicalFileKey(resolved, root), kind: 'file' };\n }\n\n return { key: source, kind: 'package' };\n}\n\nexport function resolveMockSpecifier({\n importer,\n mock,\n root,\n stack,\n}: {\n importer: string;\n mock: string;\n root: string | undefined;\n stack: string[];\n}): string {\n const specifier =\n mock.startsWith('.') && root ? path.resolve(root, mock) : mock;\n\n return syncResolve(specifier, importer, stack);\n}\n\nexport function applyImportOverrideToOnly(\n only: string[],\n override: ImportOverride | undefined\n): string[] {\n if (override?.noShake) {\n return ['*'];\n }\n\n return only;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAEvB,SAASC,WAAW,QAA6B,mBAAmB;AASpE,OAAO,SAASC,kBAAkBA,CAChCC,QAAgB,EAChBC,IAAwB,EAChB;EACR,MAAMC,OAAO,GAAGD,IAAI,GAAGJ,IAAI,CAACM,OAAO,CAACF,IAAI,CAAC,GAAGG,OAAO,CAACC,GAAG,CAAC,CAAC;EACzD,MAAMC,kBAAkB,GAAGT,IAAI,CAACM,OAAO,CAACH,QAAQ,CAAC;EACjD,IAAIO,QAAQ,GAAGV,IAAI,CAACU,QAAQ,CAACL,OAAO,EAAEI,kBAAkB,CAAC;EAEzD,IAAIT,IAAI,CAACW,GAAG,KAAKX,IAAI,CAACY,KAAK,CAACD,GAAG,EAAE;IAC/BD,QAAQ,GAAGA,QAAQ,CAACG,KAAK,CAACb,IAAI,CAACW,GAAG,CAAC,CAACG,IAAI,CAACd,IAAI,CAACY,KAAK,CAACD,GAAG,CAAC;EAC1D;EAEA,IAAI,CAACD,QAAQ,CAACK,UAAU,CAAC,GAAG,CAAC,EAAE;IAC7BL,QAAQ,GAAG,KAAKA,QAAQ,EAAE;EAC5B;EAEA,OAAOA,QAAQ;AACjB;AAEA,OAAO,SAASM,WAAWA,CAAC;EAC1BC,MAAM;EACNd,QAAQ;EACRC;AAKF,CAAC,EAAa;EACZ,MAAMc,YAAY,GAAGD,MAAM,CAACF,UAAU,CAAC,GAAG,CAAC,IAAIf,IAAI,CAACmB,UAAU,CAACF,MAAM,CAAC;EAEtE,IAAIC,YAAY,IAAIf,QAAQ,EAAE;IAC5B,OAAO;MAAEiB,GAAG,EAAElB,kBAAkB,CAACC,QAAQ,EAAEC,IAAI,CAAC;MAAEiB,IAAI,EAAE;IAAO,CAAC;EAClE;EAEA,OAAO;IAAED,GAAG,EAAEH,MAAM;IAAEI,IAAI,EAAE;EAAU,CAAC;AACzC;AAEA,OAAO,SAASC,oBAAoBA,CAAC;EACnCC,QAAQ;EACRC,IAAI;EACJpB,IAAI;EACJqB;AAMF,CAAC,EAAU;EACT,MAAMC,SAAS,GACbF,IAAI,CAACT,UAAU,CAAC,GAAG,CAAC,IAAIX,IAAI,GAAGJ,IAAI,CAACM,OAAO,CAACF,IAAI,EAAEoB,IAAI,CAAC,GAAGA,IAAI;EAEhE,OAAOvB,WAAW,CAACyB,SAAS,EAAEH,QAAQ,EAAEE,KAAK,CAAC;AAChD;AAEA,OAAO,SAASE,yBAAyBA,CACvCC,IAAc,EACdC,QAAoC,EAC1B;EACV,IAAIA,QAAQ,EAAEC,OAAO,EAAE;IACrB,OAAO,CAAC,GAAG,CAAC;EACd;EAEA,OAAOF,IAAI;AACb","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isExports.js","names":["isGlobal","isExports","node","isIdentifier","name","isMemberExpression","get"],"sources":["../../src/utils/isExports.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\nimport { isGlobal } from './isGlobal';\n\n/**\n * Checks that specified Identifier is a global `exports` or `module.exports`\n * @param node\n */\nexport function isExports(node: NodePath | null | undefined) {\n if (node?.isIdentifier({ name: 'exports' })) {\n return isGlobal(node, 'exports');\n }\n\n if (\n node?.isMemberExpression() &&\n node.get('object').isIdentifier({ name: 'module' }) &&\n node.get('property').isIdentifier({ name: 'exports' })\n ) {\n return isGlobal(node, 'module');\n }\n\n return false;\n}\n"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,YAAY;;AAErC;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACC,IAAiC,EAAE;EAC3D,IAAIA,IAAI,EAAEC,YAAY,CAAC;IAAEC,IAAI,EAAE;EAAU,CAAC,CAAC,EAAE;IAC3C,OAAOJ,QAAQ,CAACE,IAAI,EAAE,SAAS,CAAC;EAClC;EAEA,IACEA,IAAI,EAAEG,kBAAkB,CAAC,CAAC,IAC1BH,IAAI,CAACI,GAAG,CAAC,QAAQ,CAAC,CAACH,YAAY,CAAC;IAAEC,IAAI,EAAE;EAAS,CAAC,CAAC,IACnDF,IAAI,CAACI,GAAG,CAAC,UAAU,CAAC,CAACH,YAAY,CAAC;IAAEC,IAAI,EAAE;EAAU,CAAC,CAAC,EACtD;IACA,OAAOJ,QAAQ,CAACE,IAAI,EAAE,QAAQ,CAAC;EACjC;EAEA,OAAO,KAAK;AACd"}
|
|
1
|
+
{"version":3,"file":"isExports.js","names":["isGlobal","isExports","node","isIdentifier","name","isMemberExpression","get"],"sources":["../../src/utils/isExports.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\nimport { isGlobal } from './isGlobal';\n\n/**\n * Checks that specified Identifier is a global `exports` or `module.exports`\n * @param node\n */\nexport function isExports(node: NodePath | null | undefined) {\n if (node?.isIdentifier({ name: 'exports' })) {\n return isGlobal(node, 'exports');\n }\n\n if (\n node?.isMemberExpression() &&\n node.get('object').isIdentifier({ name: 'module' }) &&\n node.get('property').isIdentifier({ name: 'exports' })\n ) {\n return isGlobal(node, 'module');\n }\n\n return false;\n}\n"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,YAAY;;AAErC;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACC,IAAiC,EAAE;EAC3D,IAAIA,IAAI,EAAEC,YAAY,CAAC;IAAEC,IAAI,EAAE;EAAU,CAAC,CAAC,EAAE;IAC3C,OAAOJ,QAAQ,CAACE,IAAI,EAAE,SAAS,CAAC;EAClC;EAEA,IACEA,IAAI,EAAEG,kBAAkB,CAAC,CAAC,IAC1BH,IAAI,CAACI,GAAG,CAAC,QAAQ,CAAC,CAACH,YAAY,CAAC;IAAEC,IAAI,EAAE;EAAS,CAAC,CAAC,IACnDF,IAAI,CAACI,GAAG,CAAC,UAAU,CAAC,CAACH,YAAY,CAAC;IAAEC,IAAI,EAAE;EAAU,CAAC,CAAC,EACtD;IACA,OAAOJ,QAAQ,CAACE,IAAI,EAAE,QAAQ,CAAC;EACjC;EAEA,OAAO,KAAK;AACd","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isGlobal.js","names":["getScope","isGlobal","node","name","scope","getBinding","undefined","hasGlobal"],"sources":["../../src/utils/isGlobal.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\nimport { getScope } from './getScope';\n\nexport const isGlobal = (node: NodePath, name: string) => {\n const scope = getScope(node);\n\n return scope.getBinding(name) === undefined && scope.hasGlobal(name);\n};\n"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,YAAY;AAErC,OAAO,MAAMC,QAAQ,GAAGA,CAACC,IAAc,EAAEC,IAAY,KAAK;EACxD,MAAMC,KAAK,GAAGJ,QAAQ,CAACE,IAAI,CAAC;EAE5B,OAAOE,KAAK,CAACC,UAAU,CAACF,IAAI,CAAC,KAAKG,SAAS,IAAIF,KAAK,CAACG,SAAS,CAACJ,IAAI,CAAC;AACtE,CAAC"}
|
|
1
|
+
{"version":3,"file":"isGlobal.js","names":["getScope","isGlobal","node","name","scope","getBinding","undefined","hasGlobal"],"sources":["../../src/utils/isGlobal.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\nimport { getScope } from './getScope';\n\nexport const isGlobal = (node: NodePath, name: string) => {\n const scope = getScope(node);\n\n return scope.getBinding(name) === undefined && scope.hasGlobal(name);\n};\n"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,YAAY;AAErC,OAAO,MAAMC,QAAQ,GAAGA,CAACC,IAAc,EAAEC,IAAY,KAAK;EACxD,MAAMC,KAAK,GAAGJ,QAAQ,CAACE,IAAI,CAAC;EAE5B,OAAOE,KAAK,CAACC,UAAU,CAACF,IAAI,CAAC,KAAKG,SAAS,IAAIF,KAAK,CAACG,SAAS,CAACJ,IAAI,CAAC;AACtE,CAAC","ignoreList":[]}
|
package/esm/utils/isNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isNode.js","names":["isNode","obj","type","undefined"],"sources":["../../src/utils/isNode.ts"],"sourcesContent":["import type { Node } from '@babel/types';\n\nexport const isNode = (obj: unknown): obj is Node =>\n typeof obj === 'object' &&\n obj !== null &&\n (obj as { type: unknown })?.type !== undefined;\n"],"mappings":"AAEA,OAAO,MAAMA,MAAM,GAAIC,GAAY,IACjC,OAAOA,GAAG,KAAK,QAAQ,IACvBA,GAAG,KAAK,IAAI,IACXA,GAAG,EAAwBC,IAAI,KAAKC,SAAS"}
|
|
1
|
+
{"version":3,"file":"isNode.js","names":["isNode","obj","type","undefined"],"sources":["../../src/utils/isNode.ts"],"sourcesContent":["import type { Node } from '@babel/types';\n\nexport const isNode = (obj: unknown): obj is Node =>\n typeof obj === 'object' &&\n obj !== null &&\n (obj as { type: unknown })?.type !== undefined;\n"],"mappings":"AAEA,OAAO,MAAMA,MAAM,GAAIC,GAAY,IACjC,OAAOA,GAAG,KAAK,QAAQ,IACvBA,GAAG,KAAK,IAAI,IACXA,GAAG,EAAwBC,IAAI,KAAKC,SAAS","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isNodePath.js","names":["isNodePath","obj","node","undefined"],"sources":["../../src/utils/isNodePath.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type { Node } from '@babel/types';\n\nexport function isNodePath<T extends Node>(\n obj: NodePath<T> | T\n): obj is NodePath<T> {\n return 'node' in obj && obj?.node !== undefined;\n}\n"],"mappings":"AAGA,OAAO,SAASA,UAAUA,CACxBC,GAAoB,EACA;EACpB,OAAO,MAAM,IAAIA,GAAG,IAAIA,GAAG,EAAEC,IAAI,KAAKC,SAAS;AACjD"}
|
|
1
|
+
{"version":3,"file":"isNodePath.js","names":["isNodePath","obj","node","undefined"],"sources":["../../src/utils/isNodePath.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type { Node } from '@babel/types';\n\nexport function isNodePath<T extends Node>(\n obj: NodePath<T> | T\n): obj is NodePath<T> {\n return 'node' in obj && obj?.node !== undefined;\n}\n"],"mappings":"AAGA,OAAO,SAASA,UAAUA,CACxBC,GAAoB,EACA;EACpB,OAAO,MAAM,IAAIA,GAAG,IAAIA,GAAG,EAAEC,IAAI,KAAKC,SAAS;AACjD","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isNotNull.js","names":["isNotNull","x"],"sources":["../../src/utils/isNotNull.ts"],"sourcesContent":["export function isNotNull<T>(x: T | null): x is T {\n return x !== null;\n}\n"],"mappings":"AAAA,OAAO,SAASA,SAASA,CAAIC,CAAW,EAAU;EAChD,OAAOA,CAAC,KAAK,IAAI;AACnB"}
|
|
1
|
+
{"version":3,"file":"isNotNull.js","names":["isNotNull","x"],"sources":["../../src/utils/isNotNull.ts"],"sourcesContent":["export function isNotNull<T>(x: T | null): x is T {\n return x !== null;\n}\n"],"mappings":"AAAA,OAAO,SAASA,SAASA,CAAIC,CAAW,EAAU;EAChD,OAAOA,CAAC,KAAK,IAAI;AACnB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isRemoved.js","names":["isRemoved","path","removed","currentPath","parent","parentPath","node","listKey","key","found","get","find","p"],"sources":["../../src/utils/isRemoved.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\n/**\n * Checks if a given path has been removed from the AST.\n */\nexport function isRemoved(path: NodePath): boolean {\n // Check if the input path has already been removed\n if (path.removed) {\n return true;\n }\n\n // Check if any of the parent paths have been removed\n let currentPath: NodePath | null = path;\n while (currentPath) {\n const parent: NodePath | null = currentPath.parentPath;\n\n if (parent) {\n // If the parent path has been removed, return true\n if (parent.removed || parent.node === null) {\n return true;\n }\n\n const { listKey, key, node } = currentPath;\n if (listKey) {\n // If the current path is part of a list and the current node\n // is not presented in this list, return true\n const found = parent.get(listKey).find((p) => p.node === node);\n if (!found) {\n return true;\n }\n }\n // If the current path is not part of a list and its node is not the same\n // as the node in the parent object at the same key, return true\n else if ((parent.get(key as string) as NodePath).node !== node) {\n return true;\n }\n }\n\n // Set the current path to its parent path and continue the loop\n currentPath = parent;\n }\n\n // If the function has not returned true by this point, return false\n return false;\n}\n"],"mappings":"AAEA;AACA;AACA;AACA,OAAO,SAASA,SAASA,CAACC,IAAc,EAAW;EACjD;EACA,IAAIA,IAAI,CAACC,OAAO,EAAE;IAChB,OAAO,IAAI;EACb;;EAEA;EACA,IAAIC,WAA4B,GAAGF,IAAI;EACvC,OAAOE,WAAW,EAAE;IAClB,MAAMC,MAAuB,GAAGD,WAAW,CAACE,UAAU;IAEtD,IAAID,MAAM,EAAE;MACV;MACA,IAAIA,MAAM,CAACF,OAAO,IAAIE,MAAM,CAACE,IAAI,KAAK,IAAI,EAAE;QAC1C,OAAO,IAAI;MACb;MAEA,MAAM;QAAEC,OAAO;QAAEC,GAAG;QAAEF;MAAK,CAAC,GAAGH,WAAW;MAC1C,IAAII,OAAO,EAAE;QACX;QACA;QACA,MAAME,KAAK,
|
|
1
|
+
{"version":3,"file":"isRemoved.js","names":["isRemoved","path","removed","currentPath","parent","parentPath","node","listKey","key","found","get","find","p"],"sources":["../../src/utils/isRemoved.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\n/**\n * Checks if a given path has been removed from the AST.\n */\nexport function isRemoved(path: NodePath): boolean {\n // Check if the input path has already been removed\n if (path.removed) {\n return true;\n }\n\n // Check if any of the parent paths have been removed\n let currentPath: NodePath | null = path;\n while (currentPath) {\n const parent: NodePath | null = currentPath.parentPath;\n\n if (parent) {\n // If the parent path has been removed, return true\n if (parent.removed || parent.node === null) {\n return true;\n }\n\n const { listKey, key, node } = currentPath;\n if (listKey) {\n // If the current path is part of a list and the current node\n // is not presented in this list, return true\n const found = (parent.get(listKey) as NodePath[]).find(\n (p) => p.node === node\n );\n if (!found) {\n return true;\n }\n }\n // If the current path is not part of a list and its node is not the same\n // as the node in the parent object at the same key, return true\n else if ((parent.get(key as string) as NodePath).node !== node) {\n return true;\n }\n }\n\n // Set the current path to its parent path and continue the loop\n currentPath = parent;\n }\n\n // If the function has not returned true by this point, return false\n return false;\n}\n"],"mappings":"AAEA;AACA;AACA;AACA,OAAO,SAASA,SAASA,CAACC,IAAc,EAAW;EACjD;EACA,IAAIA,IAAI,CAACC,OAAO,EAAE;IAChB,OAAO,IAAI;EACb;;EAEA;EACA,IAAIC,WAA4B,GAAGF,IAAI;EACvC,OAAOE,WAAW,EAAE;IAClB,MAAMC,MAAuB,GAAGD,WAAW,CAACE,UAAU;IAEtD,IAAID,MAAM,EAAE;MACV;MACA,IAAIA,MAAM,CAACF,OAAO,IAAIE,MAAM,CAACE,IAAI,KAAK,IAAI,EAAE;QAC1C,OAAO,IAAI;MACb;MAEA,MAAM;QAAEC,OAAO;QAAEC,GAAG;QAAEF;MAAK,CAAC,GAAGH,WAAW;MAC1C,IAAII,OAAO,EAAE;QACX;QACA;QACA,MAAME,KAAK,GAAIL,MAAM,CAACM,GAAG,CAACH,OAAO,CAAC,CAAgBI,IAAI,CACnDC,CAAC,IAAKA,CAAC,CAACN,IAAI,KAAKA,IACpB,CAAC;QACD,IAAI,CAACG,KAAK,EAAE;UACV,OAAO,IAAI;QACb;MACF;MACA;MACA;MAAA,KACK,IAAKL,MAAM,CAACM,GAAG,CAACF,GAAa,CAAC,CAAcF,IAAI,KAAKA,IAAI,EAAE;QAC9D,OAAO,IAAI;MACb;IACF;;IAEA;IACAH,WAAW,GAAGC,MAAM;EACtB;;EAEA;EACA,OAAO,KAAK;AACd","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isRequire.js","names":["isGlobal","isRequire","id","isIdentifier","node","name"],"sources":["../../src/utils/isRequire.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\nimport { isGlobal } from './isGlobal';\n\n/**\n * Checks that specified Identifier is a global `require`\n * @param id\n */\nexport function isRequire(id: NodePath | null | undefined) {\n if (!id?.isIdentifier() || id.node.name !== 'require') {\n return false;\n }\n\n return isGlobal(id, 'require');\n}\n"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,YAAY;;AAErC;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACC,EAA+B,EAAE;EACzD,IAAI,CAACA,EAAE,EAAEC,YAAY,CAAC,CAAC,IAAID,EAAE,CAACE,IAAI,CAACC,IAAI,KAAK,SAAS,EAAE;IACrD,OAAO,KAAK;EACd;EAEA,OAAOL,QAAQ,CAACE,EAAE,EAAE,SAAS,CAAC;AAChC"}
|
|
1
|
+
{"version":3,"file":"isRequire.js","names":["isGlobal","isRequire","id","isIdentifier","node","name"],"sources":["../../src/utils/isRequire.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\nimport { isGlobal } from './isGlobal';\n\n/**\n * Checks that specified Identifier is a global `require`\n * @param id\n */\nexport function isRequire(id: NodePath | null | undefined) {\n if (!id?.isIdentifier() || id.node.name !== 'require') {\n return false;\n }\n\n return isGlobal(id, 'require');\n}\n"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,YAAY;;AAErC;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACC,EAA+B,EAAE;EACzD,IAAI,CAACA,EAAE,EAAEC,YAAY,CAAC,CAAC,IAAID,EAAE,CAACE,IAAI,CAACC,IAAI,KAAK,SAAS,EAAE;IACrD,OAAO,KAAK;EACd;EAEA,OAAOL,QAAQ,CAACE,EAAE,EAAE,SAAS,CAAC;AAChC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isSerializable.js","names":["isBoxedPrimitive","isSerializable","o","Array","isArray","every","Object","values"],"sources":["../../src/utils/isSerializable.ts"],"sourcesContent":["import { isBoxedPrimitive } from '@wyw-in-js/shared';\n\nimport type { Serializable } from '../types';\n\nexport function isSerializable(o: unknown): o is Serializable {\n if (Array.isArray(o)) {\n return o.every(isSerializable);\n }\n\n if (o === null) return true;\n\n if (isBoxedPrimitive(o)) return true;\n\n if (typeof o === 'object') {\n return Object.values(o).every(isSerializable);\n }\n\n return (\n typeof o === 'string' || typeof o === 'number' || typeof o === 'boolean'\n );\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,mBAAmB;AAIpD,OAAO,SAASC,cAAcA,CAACC,CAAU,EAAqB;EAC5D,IAAIC,KAAK,CAACC,OAAO,CAACF,CAAC,CAAC,EAAE;IACpB,OAAOA,CAAC,CAACG,KAAK,CAACJ,cAAc,CAAC;EAChC;EAEA,IAAIC,CAAC,KAAK,IAAI,EAAE,OAAO,IAAI;EAE3B,IAAIF,gBAAgB,CAACE,CAAC,CAAC,EAAE,OAAO,IAAI;EAEpC,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;IACzB,OAAOI,MAAM,CAACC,MAAM,CAACL,CAAC,CAAC,CAACG,KAAK,CAACJ,cAAc,CAAC;EAC/C;EAEA,OACE,OAAOC,CAAC,KAAK,QAAQ,IAAI,OAAOA,CAAC,KAAK,QAAQ,IAAI,OAAOA,CAAC,KAAK,SAAS;AAE5E"}
|
|
1
|
+
{"version":3,"file":"isSerializable.js","names":["isBoxedPrimitive","isSerializable","o","Array","isArray","every","Object","values"],"sources":["../../src/utils/isSerializable.ts"],"sourcesContent":["import { isBoxedPrimitive } from '@wyw-in-js/shared';\n\nimport type { Serializable } from '../types';\n\nexport function isSerializable(o: unknown): o is Serializable {\n if (Array.isArray(o)) {\n return o.every(isSerializable);\n }\n\n if (o === null) return true;\n\n if (isBoxedPrimitive(o)) return true;\n\n if (typeof o === 'object') {\n return Object.values(o).every(isSerializable);\n }\n\n return (\n typeof o === 'string' || typeof o === 'number' || typeof o === 'boolean'\n );\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,mBAAmB;AAIpD,OAAO,SAASC,cAAcA,CAACC,CAAU,EAAqB;EAC5D,IAAIC,KAAK,CAACC,OAAO,CAACF,CAAC,CAAC,EAAE;IACpB,OAAOA,CAAC,CAACG,KAAK,CAACJ,cAAc,CAAC;EAChC;EAEA,IAAIC,CAAC,KAAK,IAAI,EAAE,OAAO,IAAI;EAE3B,IAAIF,gBAAgB,CAACE,CAAC,CAAC,EAAE,OAAO,IAAI;EAEpC,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;IACzB,OAAOI,MAAM,CAACC,MAAM,CAACL,CAAC,CAAC,CAACG,KAAK,CAACJ,cAAc,CAAC;EAC/C;EAEA,OACE,OAAOC,CAAC,KAAK,QAAQ,IAAI,OAAOA,CAAC,KAAK,QAAQ,IAAI,OAAOA,CAAC,KAAK,SAAS;AAE5E","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isTypedNode.js","names":["isTypedNode","type","p"],"sources":["../../src/utils/isTypedNode.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type { Node } from '@babel/types';\n\nexport const isTypedNode: <T extends NodePath['type']>(\n type: T\n) => (p: NodePath) => p is NodePath<\n Extract<\n Node,\n {\n type: T;\n }\n >\n> = <T extends NodePath['type']>(type: T) => {\n return (p: NodePath): p is NodePath<Extract<Node, { type: T }>> => {\n return p.type === type;\n };\n};\n"],"mappings":"AAGA,OAAO,MAAMA,WASZ,GAAgCC,IAAO,IAAK;EAC3C,OAAQC,CAAW,IAAgD;IACjE,OAAOA,CAAC,CAACD,IAAI,KAAKA,IAAI;EACxB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"isTypedNode.js","names":["isTypedNode","type","p"],"sources":["../../src/utils/isTypedNode.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type { Node } from '@babel/types';\n\nexport const isTypedNode: <T extends NodePath['type']>(\n type: T\n) => (p: NodePath) => p is NodePath<\n Extract<\n Node,\n {\n type: T;\n }\n >\n> = <T extends NodePath['type']>(type: T) => {\n return (p: NodePath): p is NodePath<Extract<Node, { type: T }>> => {\n return p.type === type;\n };\n};\n"],"mappings":"AAGA,OAAO,MAAMA,WASZ,GAAgCC,IAAO,IAAK;EAC3C,OAAQC,CAAW,IAAgD;IACjE,OAAOA,CAAC,CAACD,IAAI,KAAKA,IAAI;EACxB,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isUnnecessaryReactCall.js","names":["collectExportsAndImports","getScope","getCallee","p","callee","get","isSequenceExpression","expressions","length","isNumericLiteral","value","JSXRuntimeSource","isJSXRuntime","imports","jsxRuntime","find","i","source","jsxRuntimeName","local","isIdentifier","node","name","isMemberExpression","isHookOrCreateElement","test","isClassicReactRuntime","reactImports","filter","imported","bindingPath","getBinding","path","some","isAncestor","object","property","defaultImport","isUnnecessaryReactCall","programPath","findParent","isProgram"],"sources":["../../src/utils/isUnnecessaryReactCall.ts"],"sourcesContent":["import type { NodePath } from '@babel/core';\nimport type { CallExpression, Program } from '@babel/types';\n\nimport type { IImport, ISideEffectImport } from './collectExportsAndImports';\nimport { collectExportsAndImports } from './collectExportsAndImports';\nimport { getScope } from './getScope';\n\nfunction getCallee(p: NodePath<CallExpression>) {\n const callee = p.get('callee');\n if (callee.isSequenceExpression()) {\n const expressions = callee.get('expressions');\n if (\n expressions.length === 2 &&\n expressions[0].isNumericLiteral({ value: 0 })\n ) {\n return expressions[1];\n }\n\n return callee;\n }\n\n return callee;\n}\n\nconst JSXRuntimeSource = 'react/jsx-runtime';\n\nfunction isJSXRuntime(\n p: NodePath<CallExpression>,\n imports: (IImport | ISideEffectImport)[]\n) {\n const jsxRuntime = imports.find((i) => i.source === JSXRuntimeSource);\n const jsxRuntimeName =\n jsxRuntime?.local?.isIdentifier() && jsxRuntime?.local?.node?.name;\n\n if (jsxRuntime) {\n const callee = getCallee(p);\n if (jsxRuntimeName && callee.isIdentifier({ name: jsxRuntimeName })) {\n return true;\n }\n\n if (\n callee.isMemberExpression() &&\n imports.find((i) => i.source === JSXRuntimeSource && i.local === callee)\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isHookOrCreateElement(name: string): boolean {\n return name === 'createElement' || /use[A-Z]/.test(name);\n}\n\nfunction isClassicReactRuntime(\n p: NodePath<CallExpression>,\n imports: (IImport | ISideEffectImport)[]\n) {\n const reactImports = imports.filter(\n (i) =>\n i.source === 'react' &&\n (i.imported === 'default' ||\n (i.imported && isHookOrCreateElement(i.imported)))\n ) as IImport[];\n\n if (reactImports.length === 0) return false;\n const callee = getCallee(p);\n if (callee.isIdentifier() && isHookOrCreateElement(callee.node.name)) {\n const bindingPath = getScope(callee).getBinding(callee.node.name)?.path;\n return reactImports.some((i) => bindingPath?.isAncestor(i.local));\n }\n\n if (callee.isMemberExpression()) {\n if (reactImports.some((i) => i.local === callee)) {\n // It's React.createElement in CJS\n return true;\n }\n\n const object = callee.get('object');\n const property = callee.get('property');\n const defaultImport = reactImports.find((i) => i.imported === 'default');\n if (\n !defaultImport ||\n !defaultImport.local.isIdentifier() ||\n !property.isIdentifier() ||\n !isHookOrCreateElement(property.node.name) ||\n !object.isIdentifier({ name: defaultImport.local.node.name })\n ) {\n return false;\n }\n\n const bindingPath = getScope(object).getBinding(object.node.name)?.path;\n return bindingPath?.isAncestor(defaultImport.local) ?? false;\n }\n\n return false;\n}\n\nexport function isUnnecessaryReactCall(path: NodePath<CallExpression>) {\n const programPath = path.findParent((p) => p.isProgram()) as\n | NodePath<Program>\n | undefined;\n if (!programPath) {\n return false;\n }\n\n const { imports } = collectExportsAndImports(programPath);\n\n return isJSXRuntime(path, imports) || isClassicReactRuntime(path, imports);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"isUnnecessaryReactCall.js","names":["collectExportsAndImports","getScope","getCallee","p","callee","get","isSequenceExpression","expressions","length","isNumericLiteral","value","JSXRuntimeSource","isJSXRuntime","imports","jsxRuntime","find","i","source","jsxRuntimeName","local","isIdentifier","node","name","isMemberExpression","isHookOrCreateElement","test","isClassicReactRuntime","reactImports","filter","imported","bindingPath","getBinding","path","some","isAncestor","object","property","defaultImport","isUnnecessaryReactCall","programPath","findParent","isProgram"],"sources":["../../src/utils/isUnnecessaryReactCall.ts"],"sourcesContent":["import type { NodePath } from '@babel/core';\nimport type { CallExpression, Program } from '@babel/types';\n\nimport type { IImport, ISideEffectImport } from './collectExportsAndImports';\nimport { collectExportsAndImports } from './collectExportsAndImports';\nimport { getScope } from './getScope';\n\nfunction getCallee(p: NodePath<CallExpression>) {\n const callee = p.get('callee');\n if (callee.isSequenceExpression()) {\n const expressions = callee.get('expressions');\n if (\n expressions.length === 2 &&\n expressions[0].isNumericLiteral({ value: 0 })\n ) {\n return expressions[1];\n }\n\n return callee;\n }\n\n return callee;\n}\n\nconst JSXRuntimeSource = 'react/jsx-runtime';\n\nfunction isJSXRuntime(\n p: NodePath<CallExpression>,\n imports: (IImport | ISideEffectImport)[]\n) {\n const jsxRuntime = imports.find((i) => i.source === JSXRuntimeSource);\n const jsxRuntimeName =\n jsxRuntime?.local?.isIdentifier() && jsxRuntime?.local?.node?.name;\n\n if (jsxRuntime) {\n const callee = getCallee(p);\n if (jsxRuntimeName && callee.isIdentifier({ name: jsxRuntimeName })) {\n return true;\n }\n\n if (\n callee.isMemberExpression() &&\n imports.find((i) => i.source === JSXRuntimeSource && i.local === callee)\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isHookOrCreateElement(name: string): boolean {\n return name === 'createElement' || /use[A-Z]/.test(name);\n}\n\nfunction isClassicReactRuntime(\n p: NodePath<CallExpression>,\n imports: (IImport | ISideEffectImport)[]\n) {\n const reactImports = imports.filter(\n (i) =>\n i.source === 'react' &&\n (i.imported === 'default' ||\n (i.imported && isHookOrCreateElement(i.imported)))\n ) as IImport[];\n\n if (reactImports.length === 0) return false;\n const callee = getCallee(p);\n if (callee.isIdentifier() && isHookOrCreateElement(callee.node.name)) {\n const bindingPath = getScope(callee).getBinding(callee.node.name)?.path;\n return reactImports.some((i) => bindingPath?.isAncestor(i.local));\n }\n\n if (callee.isMemberExpression()) {\n if (reactImports.some((i) => i.local === callee)) {\n // It's React.createElement in CJS\n return true;\n }\n\n const object = callee.get('object');\n const property = callee.get('property');\n const defaultImport = reactImports.find((i) => i.imported === 'default');\n if (\n !defaultImport ||\n !defaultImport.local.isIdentifier() ||\n !property.isIdentifier() ||\n !isHookOrCreateElement(property.node.name) ||\n !object.isIdentifier({ name: defaultImport.local.node.name })\n ) {\n return false;\n }\n\n const bindingPath = getScope(object).getBinding(object.node.name)?.path;\n return bindingPath?.isAncestor(defaultImport.local) ?? false;\n }\n\n return false;\n}\n\nexport function isUnnecessaryReactCall(path: NodePath<CallExpression>) {\n const programPath = path.findParent((p) => p.isProgram()) as\n | NodePath<Program>\n | undefined;\n if (!programPath) {\n return false;\n }\n\n const { imports } = collectExportsAndImports(programPath);\n\n return isJSXRuntime(path, imports) || isClassicReactRuntime(path, imports);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const getFirstSuffixIndex = request => {
|
|
2
|
+
const queryIdx = request.indexOf('?');
|
|
3
|
+
const hashIdx = request.indexOf('#');
|
|
4
|
+
if (queryIdx === -1) return hashIdx;
|
|
5
|
+
if (hashIdx === -1) return queryIdx;
|
|
6
|
+
return Math.min(queryIdx, hashIdx);
|
|
7
|
+
};
|
|
8
|
+
export const parseRequest = request => {
|
|
9
|
+
const firstSuffixIndex = getFirstSuffixIndex(request);
|
|
10
|
+
if (firstSuffixIndex === -1) {
|
|
11
|
+
return {
|
|
12
|
+
filename: request,
|
|
13
|
+
hash: '',
|
|
14
|
+
query: ''
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const filename = request.slice(0, firstSuffixIndex);
|
|
18
|
+
const queryIdx = request.indexOf('?');
|
|
19
|
+
const hashIdx = request.indexOf('#');
|
|
20
|
+
const query = queryIdx === -1 ? '' : request.slice(queryIdx + 1, hashIdx !== -1 ? hashIdx : undefined);
|
|
21
|
+
const hash = hashIdx === -1 ? '' : request.slice(hashIdx + 1);
|
|
22
|
+
return {
|
|
23
|
+
filename,
|
|
24
|
+
hash,
|
|
25
|
+
query
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export const stripQueryAndHash = request => parseRequest(request).filename;
|
|
29
|
+
//# sourceMappingURL=parseRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseRequest.js","names":["getFirstSuffixIndex","request","queryIdx","indexOf","hashIdx","Math","min","parseRequest","firstSuffixIndex","filename","hash","query","slice","undefined","stripQueryAndHash"],"sources":["../../src/utils/parseRequest.ts"],"sourcesContent":["export type ParsedRequest = {\n filename: string;\n hash: string;\n query: string;\n};\n\nconst getFirstSuffixIndex = (request: string) => {\n const queryIdx = request.indexOf('?');\n const hashIdx = request.indexOf('#');\n\n if (queryIdx === -1) return hashIdx;\n if (hashIdx === -1) return queryIdx;\n\n return Math.min(queryIdx, hashIdx);\n};\n\nexport const parseRequest = (request: string): ParsedRequest => {\n const firstSuffixIndex = getFirstSuffixIndex(request);\n if (firstSuffixIndex === -1) {\n return { filename: request, hash: '', query: '' };\n }\n\n const filename = request.slice(0, firstSuffixIndex);\n\n const queryIdx = request.indexOf('?');\n const hashIdx = request.indexOf('#');\n\n const query =\n queryIdx === -1\n ? ''\n : request.slice(queryIdx + 1, hashIdx !== -1 ? hashIdx : undefined);\n const hash = hashIdx === -1 ? '' : request.slice(hashIdx + 1);\n\n return { filename, hash, query };\n};\n\nexport const stripQueryAndHash = (request: string) =>\n parseRequest(request).filename;\n"],"mappings":"AAMA,MAAMA,mBAAmB,GAAIC,OAAe,IAAK;EAC/C,MAAMC,QAAQ,GAAGD,OAAO,CAACE,OAAO,CAAC,GAAG,CAAC;EACrC,MAAMC,OAAO,GAAGH,OAAO,CAACE,OAAO,CAAC,GAAG,CAAC;EAEpC,IAAID,QAAQ,KAAK,CAAC,CAAC,EAAE,OAAOE,OAAO;EACnC,IAAIA,OAAO,KAAK,CAAC,CAAC,EAAE,OAAOF,QAAQ;EAEnC,OAAOG,IAAI,CAACC,GAAG,CAACJ,QAAQ,EAAEE,OAAO,CAAC;AACpC,CAAC;AAED,OAAO,MAAMG,YAAY,GAAIN,OAAe,IAAoB;EAC9D,MAAMO,gBAAgB,GAAGR,mBAAmB,CAACC,OAAO,CAAC;EACrD,IAAIO,gBAAgB,KAAK,CAAC,CAAC,EAAE;IAC3B,OAAO;MAAEC,QAAQ,EAAER,OAAO;MAAES,IAAI,EAAE,EAAE;MAAEC,KAAK,EAAE;IAAG,CAAC;EACnD;EAEA,MAAMF,QAAQ,GAAGR,OAAO,CAACW,KAAK,CAAC,CAAC,EAAEJ,gBAAgB,CAAC;EAEnD,MAAMN,QAAQ,GAAGD,OAAO,CAACE,OAAO,CAAC,GAAG,CAAC;EACrC,MAAMC,OAAO,GAAGH,OAAO,CAACE,OAAO,CAAC,GAAG,CAAC;EAEpC,MAAMQ,KAAK,GACTT,QAAQ,KAAK,CAAC,CAAC,GACX,EAAE,GACFD,OAAO,CAACW,KAAK,CAACV,QAAQ,GAAG,CAAC,EAAEE,OAAO,KAAK,CAAC,CAAC,GAAGA,OAAO,GAAGS,SAAS,CAAC;EACvE,MAAMH,IAAI,GAAGN,OAAO,KAAK,CAAC,CAAC,GAAG,EAAE,GAAGH,OAAO,CAACW,KAAK,CAACR,OAAO,GAAG,CAAC,CAAC;EAE7D,OAAO;IAAEK,QAAQ;IAAEC,IAAI;IAAEC;EAAM,CAAC;AAClC,CAAC;AAED,OAAO,MAAMG,iBAAiB,GAAIb,OAAe,IAC/CM,YAAY,CAACN,OAAO,CAAC,CAACQ,QAAQ","ignoreList":[]}
|
package/esm/utils/peek.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peek.js","names":["peek","stack","offset","length"],"sources":["../../src/utils/peek.ts"],"sourcesContent":["export const peek = <T>(stack: T[], offset = 1): T =>\n stack[stack.length - offset];\n"],"mappings":"AAAA,OAAO,MAAMA,IAAI,GAAGA,CAAIC,KAAU,EAAEC,MAAM,GAAG,CAAC,KAC5CD,KAAK,CAACA,KAAK,CAACE,MAAM,GAAGD,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"peek.js","names":["peek","stack","offset","length"],"sources":["../../src/utils/peek.ts"],"sourcesContent":["export const peek = <T>(stack: T[], offset = 1): T =>\n stack[stack.length - offset];\n"],"mappings":"AAAA,OAAO,MAAMA,IAAI,GAAGA,CAAIC,KAAU,EAAEC,MAAM,GAAG,CAAC,KAC5CD,KAAK,CAACA,KAAK,CAACE,MAAM,GAAGD,MAAM,CAAC","ignoreList":[]}
|
|
@@ -24,6 +24,7 @@ const isBrowserGlobal = id => {
|
|
|
24
24
|
const isSSRCheckField = id => {
|
|
25
25
|
return ssrCheckFields.has(id.node.name) && isGlobal(id);
|
|
26
26
|
};
|
|
27
|
+
const promiseCallbackMethods = new Set(['then', 'catch', 'finally']);
|
|
27
28
|
const getPropertyName = path => {
|
|
28
29
|
if (path.isIdentifier()) {
|
|
29
30
|
return path.node.name;
|
|
@@ -33,6 +34,35 @@ const getPropertyName = path => {
|
|
|
33
34
|
}
|
|
34
35
|
return null;
|
|
35
36
|
};
|
|
37
|
+
const isPromiseCallbackArgument = (path, ref) => {
|
|
38
|
+
return path.get('arguments').some(arg => arg === ref || arg.isAncestor(ref));
|
|
39
|
+
};
|
|
40
|
+
const findPromiseCallbackOwner = path => {
|
|
41
|
+
const owner = path.findParent(parent => {
|
|
42
|
+
if (parent.isNewExpression()) {
|
|
43
|
+
const callee = parent.get('callee');
|
|
44
|
+
return callee.isIdentifier({
|
|
45
|
+
name: 'Promise'
|
|
46
|
+
}) && isPromiseCallbackArgument(parent, path);
|
|
47
|
+
}
|
|
48
|
+
if (parent.isCallExpression()) {
|
|
49
|
+
const callee = parent.get('callee');
|
|
50
|
+
if (!callee.isMemberExpression()) return false;
|
|
51
|
+
const propName = getPropertyName(callee.get('property'));
|
|
52
|
+
return propName !== null && promiseCallbackMethods.has(propName) && isPromiseCallbackArgument(parent, path);
|
|
53
|
+
}
|
|
54
|
+
return false;
|
|
55
|
+
});
|
|
56
|
+
return owner;
|
|
57
|
+
};
|
|
58
|
+
const removeForbiddenGlobal = path => {
|
|
59
|
+
const promiseOwner = findPromiseCallbackOwner(path);
|
|
60
|
+
if (promiseOwner) {
|
|
61
|
+
removeWithRelated([promiseOwner]);
|
|
62
|
+
} else {
|
|
63
|
+
removeWithRelated([path]);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
36
66
|
const getImport = path => {
|
|
37
67
|
const programPath = path.findParent(p => p.isProgram());
|
|
38
68
|
if (!programPath) {
|
|
@@ -199,11 +229,11 @@ export const removeDangerousCode = (programPath, options) => {
|
|
|
199
229
|
// window.fetch will be handled by the windowScoped block below
|
|
200
230
|
return;
|
|
201
231
|
}
|
|
202
|
-
|
|
232
|
+
removeForbiddenGlobal(p);
|
|
203
233
|
return;
|
|
204
234
|
}
|
|
205
235
|
if (state.windowScoped.has(p.node.name)) {
|
|
206
|
-
|
|
236
|
+
removeForbiddenGlobal(p);
|
|
207
237
|
} else if (isGlobal(p)) {
|
|
208
238
|
state.globals.push(p);
|
|
209
239
|
}
|