@wyw-in-js/transform 0.1.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/LICENSE +21 -0
- package/esm/babel.js +2 -0
- package/esm/babel.js.map +1 -0
- package/esm/cache.js +80 -0
- package/esm/cache.js.map +1 -0
- package/esm/debug/fileReporter.js +144 -0
- package/esm/debug/fileReporter.js.map +1 -0
- package/esm/evaluators/index.js +14 -0
- package/esm/evaluators/index.js.map +1 -0
- package/esm/index.js +24 -0
- package/esm/index.js.map +1 -0
- package/esm/module.js +316 -0
- package/esm/module.js.map +1 -0
- package/esm/options/babel-merge.d.js +2 -0
- package/esm/options/babel-merge.d.js.map +1 -0
- package/esm/options/buildOptions.js +28 -0
- package/esm/options/buildOptions.js.map +1 -0
- package/esm/options/loadBabelOptions.js +24 -0
- package/esm/options/loadBabelOptions.js.map +1 -0
- package/esm/plugins/babel-transform.js +53 -0
- package/esm/plugins/babel-transform.js.map +1 -0
- package/esm/plugins/collector.js +66 -0
- package/esm/plugins/collector.js.map +1 -0
- package/esm/plugins/dynamic-import.js +28 -0
- package/esm/plugins/dynamic-import.js.map +1 -0
- package/esm/plugins/preeval.js +75 -0
- package/esm/plugins/preeval.js.map +1 -0
- package/esm/plugins/shaker.js +296 -0
- package/esm/plugins/shaker.js.map +1 -0
- package/esm/shaker.js +50 -0
- package/esm/shaker.js.map +1 -0
- package/esm/transform/BaseEntrypoint.js +164 -0
- package/esm/transform/BaseEntrypoint.js.map +1 -0
- package/esm/transform/Entrypoint.helpers.js +168 -0
- package/esm/transform/Entrypoint.helpers.js.map +1 -0
- package/esm/transform/Entrypoint.js +212 -0
- package/esm/transform/Entrypoint.js.map +1 -0
- package/esm/transform/Entrypoint.types.js +2 -0
- package/esm/transform/Entrypoint.types.js.map +1 -0
- package/esm/transform/EvaluatedEntrypoint.js +6 -0
- package/esm/transform/EvaluatedEntrypoint.js.map +1 -0
- package/esm/transform/actions/AbortError.js +8 -0
- package/esm/transform/actions/AbortError.js.map +1 -0
- package/esm/transform/actions/BaseAction.js +134 -0
- package/esm/transform/actions/BaseAction.js.map +1 -0
- package/esm/transform/actions/UnprocessedEntrypointError.js +8 -0
- package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -0
- package/esm/transform/actions/actionRunner.js +73 -0
- package/esm/transform/actions/actionRunner.js.map +1 -0
- package/esm/transform/actions/types.js +2 -0
- package/esm/transform/actions/types.js.map +1 -0
- package/esm/transform/generators/baseProcessingHandlers.js +22 -0
- package/esm/transform/generators/baseProcessingHandlers.js.map +1 -0
- package/esm/transform/generators/collect.js +58 -0
- package/esm/transform/generators/collect.js.map +1 -0
- package/esm/transform/generators/evalFile.js +50 -0
- package/esm/transform/generators/evalFile.js.map +1 -0
- package/esm/transform/generators/explodeReexports.js +63 -0
- package/esm/transform/generators/explodeReexports.js.map +1 -0
- package/esm/transform/generators/extract.js +120 -0
- package/esm/transform/generators/extract.js.map +1 -0
- package/esm/transform/generators/getExports.js +73 -0
- package/esm/transform/generators/getExports.js.map +1 -0
- package/esm/transform/generators/index.js +13 -0
- package/esm/transform/generators/index.js.map +1 -0
- package/esm/transform/generators/processEntrypoint.js +43 -0
- package/esm/transform/generators/processEntrypoint.js.map +1 -0
- package/esm/transform/generators/processImports.js +23 -0
- package/esm/transform/generators/processImports.js.map +1 -0
- package/esm/transform/generators/resolveImports.js +148 -0
- package/esm/transform/generators/resolveImports.js.map +1 -0
- package/esm/transform/generators/transform.js +117 -0
- package/esm/transform/generators/transform.js.map +1 -0
- package/esm/transform/generators/workflow.js +82 -0
- package/esm/transform/generators/workflow.js.map +1 -0
- package/esm/transform/helpers/loadLinariaOptions.js +66 -0
- package/esm/transform/helpers/loadLinariaOptions.js.map +1 -0
- package/esm/transform/helpers/withDefaultServices.js +21 -0
- package/esm/transform/helpers/withDefaultServices.js.map +1 -0
- package/esm/transform/rootLog.js +3 -0
- package/esm/transform/rootLog.js.map +1 -0
- package/esm/transform/types.js +2 -0
- package/esm/transform/types.js.map +1 -0
- package/esm/transform.js +121 -0
- package/esm/transform.js.map +1 -0
- package/esm/types.js +2 -0
- package/esm/types.js.map +1 -0
- package/esm/utils/EventEmitter.js +52 -0
- package/esm/utils/EventEmitter.js.map +1 -0
- package/esm/utils/ShakerMetadata.js +2 -0
- package/esm/utils/ShakerMetadata.js.map +1 -0
- package/esm/utils/TransformMetadata.js +11 -0
- package/esm/utils/TransformMetadata.js.map +1 -0
- package/esm/utils/addIdentifierToLinariaPreval.js +68 -0
- package/esm/utils/addIdentifierToLinariaPreval.js.map +1 -0
- package/esm/utils/collectExportsAndImports.js +974 -0
- package/esm/utils/collectExportsAndImports.js.map +1 -0
- package/esm/utils/collectTemplateDependencies.js +219 -0
- package/esm/utils/collectTemplateDependencies.js.map +1 -0
- package/esm/utils/createId.js +6 -0
- package/esm/utils/createId.js.map +1 -0
- package/esm/utils/dispose-polyfill.js +6 -0
- package/esm/utils/dispose-polyfill.js.map +1 -0
- package/esm/utils/findIdentifiers.js +62 -0
- package/esm/utils/findIdentifiers.js.map +1 -0
- package/esm/utils/findPackageJSON.js +22 -0
- package/esm/utils/findPackageJSON.js.map +1 -0
- package/esm/utils/getFileIdx.js +10 -0
- package/esm/utils/getFileIdx.js.map +1 -0
- package/esm/utils/getPluginKey.js +13 -0
- package/esm/utils/getPluginKey.js.map +1 -0
- package/esm/utils/getScope.js +6 -0
- package/esm/utils/getScope.js.map +1 -0
- package/esm/utils/getSource.js +15 -0
- package/esm/utils/getSource.js.map +1 -0
- package/esm/utils/getTagProcessor.js +304 -0
- package/esm/utils/getTagProcessor.js.map +1 -0
- package/esm/utils/getVisitorKeys.js +5 -0
- package/esm/utils/getVisitorKeys.js.map +1 -0
- package/esm/utils/hasLinariaPreval.js +7 -0
- package/esm/utils/hasLinariaPreval.js.map +1 -0
- package/esm/utils/isExports.js +22 -0
- package/esm/utils/isExports.js.map +1 -0
- package/esm/utils/isGlobal.js +6 -0
- package/esm/utils/isGlobal.js.map +1 -0
- package/esm/utils/isNode.js +2 -0
- package/esm/utils/isNode.js.map +1 -0
- package/esm/utils/isNodePath.js +4 -0
- package/esm/utils/isNodePath.js.map +1 -0
- package/esm/utils/isNotNull.js +4 -0
- package/esm/utils/isNotNull.js.map +1 -0
- package/esm/utils/isRemoved.js +46 -0
- package/esm/utils/isRemoved.js.map +1 -0
- package/esm/utils/isRequire.js +13 -0
- package/esm/utils/isRequire.js.map +1 -0
- package/esm/utils/isSerializable.js +13 -0
- package/esm/utils/isSerializable.js.map +1 -0
- package/esm/utils/isTypedNode.js +6 -0
- package/esm/utils/isTypedNode.js.map +1 -0
- package/esm/utils/isUnnecessaryReactCall.js +72 -0
- package/esm/utils/isUnnecessaryReactCall.js.map +1 -0
- package/esm/utils/peek.js +2 -0
- package/esm/utils/peek.js.map +1 -0
- package/esm/utils/processTemplateExpression.js +11 -0
- package/esm/utils/processTemplateExpression.js.map +1 -0
- package/esm/utils/removeDangerousCode.js +127 -0
- package/esm/utils/removeDangerousCode.js.map +1 -0
- package/esm/utils/scopeHelpers.js +514 -0
- package/esm/utils/scopeHelpers.js.map +1 -0
- package/esm/utils/traversalCache.js +28 -0
- package/esm/utils/traversalCache.js.map +1 -0
- package/esm/utils/unwrapSequence.js +14 -0
- package/esm/utils/unwrapSequence.js.map +1 -0
- package/esm/utils/valueToLiteral.js +59 -0
- package/esm/utils/valueToLiteral.js.map +1 -0
- package/esm/utils/visitors/JSXElementsRemover.js +51 -0
- package/esm/utils/visitors/JSXElementsRemover.js.map +1 -0
- package/esm/vm/createVmContext.js +72 -0
- package/esm/vm/createVmContext.js.map +1 -0
- package/esm/vm/process.js +29 -0
- package/esm/vm/process.js.map +1 -0
- package/lib/babel.js +2 -0
- package/lib/babel.js.map +1 -0
- package/lib/cache.js +87 -0
- package/lib/cache.js.map +1 -0
- package/lib/debug/fileReporter.js +153 -0
- package/lib/debug/fileReporter.js.map +1 -0
- package/lib/evaluators/index.js +20 -0
- package/lib/evaluators/index.js.map +1 -0
- package/lib/index.js +225 -0
- package/lib/index.js.map +1 -0
- package/lib/module.js +327 -0
- package/lib/module.js.map +1 -0
- package/lib/options/babel-merge.d.js +2 -0
- package/lib/options/babel-merge.d.js.map +1 -0
- package/lib/options/buildOptions.js +35 -0
- package/lib/options/buildOptions.js.map +1 -0
- package/lib/options/loadBabelOptions.js +31 -0
- package/lib/options/loadBabelOptions.js.map +1 -0
- package/lib/plugins/babel-transform.js +60 -0
- package/lib/plugins/babel-transform.js.map +1 -0
- package/lib/plugins/collector.js +76 -0
- package/lib/plugins/collector.js.map +1 -0
- package/lib/plugins/dynamic-import.js +34 -0
- package/lib/plugins/dynamic-import.js.map +1 -0
- package/lib/plugins/preeval.js +82 -0
- package/lib/plugins/preeval.js.map +1 -0
- package/lib/plugins/shaker.js +303 -0
- package/lib/plugins/shaker.js.map +1 -0
- package/lib/shaker.js +58 -0
- package/lib/shaker.js.map +1 -0
- package/lib/transform/BaseEntrypoint.js +175 -0
- package/lib/transform/BaseEntrypoint.js.map +1 -0
- package/lib/transform/Entrypoint.helpers.js +182 -0
- package/lib/transform/Entrypoint.helpers.js.map +1 -0
- package/lib/transform/Entrypoint.js +226 -0
- package/lib/transform/Entrypoint.js.map +1 -0
- package/lib/transform/Entrypoint.types.js +2 -0
- package/lib/transform/Entrypoint.types.js.map +1 -0
- package/lib/transform/EvaluatedEntrypoint.js +13 -0
- package/lib/transform/EvaluatedEntrypoint.js.map +1 -0
- package/lib/transform/actions/AbortError.js +16 -0
- package/lib/transform/actions/AbortError.js.map +1 -0
- package/lib/transform/actions/BaseAction.js +144 -0
- package/lib/transform/actions/BaseAction.js.map +1 -0
- package/lib/transform/actions/UnprocessedEntrypointError.js +16 -0
- package/lib/transform/actions/UnprocessedEntrypointError.js.map +1 -0
- package/lib/transform/actions/actionRunner.js +82 -0
- package/lib/transform/actions/actionRunner.js.map +1 -0
- package/lib/transform/actions/types.js +2 -0
- package/lib/transform/actions/types.js.map +1 -0
- package/lib/transform/generators/baseProcessingHandlers.js +27 -0
- package/lib/transform/generators/baseProcessingHandlers.js.map +1 -0
- package/lib/transform/generators/collect.js +66 -0
- package/lib/transform/generators/collect.js.map +1 -0
- package/lib/transform/generators/evalFile.js +57 -0
- package/lib/transform/generators/evalFile.js.map +1 -0
- package/lib/transform/generators/explodeReexports.js +70 -0
- package/lib/transform/generators/explodeReexports.js.map +1 -0
- package/lib/transform/generators/extract.js +128 -0
- package/lib/transform/generators/extract.js.map +1 -0
- package/lib/transform/generators/getExports.js +80 -0
- package/lib/transform/generators/getExports.js.map +1 -0
- package/lib/transform/generators/index.js +19 -0
- package/lib/transform/generators/index.js.map +1 -0
- package/lib/transform/generators/processEntrypoint.js +49 -0
- package/lib/transform/generators/processEntrypoint.js.map +1 -0
- package/lib/transform/generators/processImports.js +29 -0
- package/lib/transform/generators/processImports.js.map +1 -0
- package/lib/transform/generators/resolveImports.js +158 -0
- package/lib/transform/generators/resolveImports.js.map +1 -0
- package/lib/transform/generators/transform.js +130 -0
- package/lib/transform/generators/transform.js.map +1 -0
- package/lib/transform/generators/workflow.js +90 -0
- package/lib/transform/generators/workflow.js.map +1 -0
- package/lib/transform/helpers/loadLinariaOptions.js +73 -0
- package/lib/transform/helpers/loadLinariaOptions.js.map +1 -0
- package/lib/transform/helpers/withDefaultServices.js +30 -0
- package/lib/transform/helpers/withDefaultServices.js.map +1 -0
- package/lib/transform/rootLog.js +9 -0
- package/lib/transform/rootLog.js.map +1 -0
- package/lib/transform/types.js +8 -0
- package/lib/transform/types.js.map +1 -0
- package/lib/transform.js +128 -0
- package/lib/transform.js.map +1 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/utils/EventEmitter.js +61 -0
- package/lib/utils/EventEmitter.js.map +1 -0
- package/lib/utils/ShakerMetadata.js +9 -0
- package/lib/utils/ShakerMetadata.js.map +1 -0
- package/lib/utils/TransformMetadata.js +19 -0
- package/lib/utils/TransformMetadata.js.map +1 -0
- package/lib/utils/addIdentifierToLinariaPreval.js +75 -0
- package/lib/utils/addIdentifierToLinariaPreval.js.map +1 -0
- package/lib/utils/collectExportsAndImports.js +990 -0
- package/lib/utils/collectExportsAndImports.js.map +1 -0
- package/lib/utils/collectTemplateDependencies.js +233 -0
- package/lib/utils/collectTemplateDependencies.js.map +1 -0
- package/lib/utils/createId.js +13 -0
- package/lib/utils/createId.js.map +1 -0
- package/lib/utils/dispose-polyfill.js +9 -0
- package/lib/utils/dispose-polyfill.js.map +1 -0
- package/lib/utils/findIdentifiers.js +73 -0
- package/lib/utils/findIdentifiers.js.map +1 -0
- package/lib/utils/findPackageJSON.js +29 -0
- package/lib/utils/findPackageJSON.js.map +1 -0
- package/lib/utils/getFileIdx.js +16 -0
- package/lib/utils/getFileIdx.js.map +1 -0
- package/lib/utils/getPluginKey.js +21 -0
- package/lib/utils/getPluginKey.js.map +1 -0
- package/lib/utils/getScope.js +12 -0
- package/lib/utils/getScope.js.map +1 -0
- package/lib/utils/getSource.js +24 -0
- package/lib/utils/getSource.js.map +1 -0
- package/lib/utils/getTagProcessor.js +318 -0
- package/lib/utils/getTagProcessor.js.map +1 -0
- package/lib/utils/getVisitorKeys.js +11 -0
- package/lib/utils/getVisitorKeys.js.map +1 -0
- package/lib/utils/hasLinariaPreval.js +13 -0
- package/lib/utils/hasLinariaPreval.js.map +1 -0
- package/lib/utils/isExports.js +27 -0
- package/lib/utils/isExports.js.map +1 -0
- package/lib/utils/isGlobal.js +13 -0
- package/lib/utils/isGlobal.js.map +1 -0
- package/lib/utils/isNode.js +9 -0
- package/lib/utils/isNode.js.map +1 -0
- package/lib/utils/isNodePath.js +10 -0
- package/lib/utils/isNodePath.js.map +1 -0
- package/lib/utils/isNotNull.js +10 -0
- package/lib/utils/isNotNull.js.map +1 -0
- package/lib/utils/isRemoved.js +52 -0
- package/lib/utils/isRemoved.js.map +1 -0
- package/lib/utils/isRequire.js +18 -0
- package/lib/utils/isRequire.js.map +1 -0
- package/lib/utils/isSerializable.js +19 -0
- package/lib/utils/isSerializable.js.map +1 -0
- package/lib/utils/isTypedNode.js +13 -0
- package/lib/utils/isTypedNode.js.map +1 -0
- package/lib/utils/isUnnecessaryReactCall.js +81 -0
- package/lib/utils/isUnnecessaryReactCall.js.map +1 -0
- package/lib/utils/peek.js +9 -0
- package/lib/utils/peek.js.map +1 -0
- package/lib/utils/processTemplateExpression.js +18 -0
- package/lib/utils/processTemplateExpression.js.map +1 -0
- package/lib/utils/removeDangerousCode.js +134 -0
- package/lib/utils/removeDangerousCode.js.map +1 -0
- package/lib/utils/scopeHelpers.js +544 -0
- package/lib/utils/scopeHelpers.js.map +1 -0
- package/lib/utils/traversalCache.js +38 -0
- package/lib/utils/traversalCache.js.map +1 -0
- package/lib/utils/unwrapSequence.js +20 -0
- package/lib/utils/unwrapSequence.js.map +1 -0
- package/lib/utils/valueToLiteral.js +65 -0
- package/lib/utils/valueToLiteral.js.map +1 -0
- package/lib/utils/visitors/JSXElementsRemover.js +57 -0
- package/lib/utils/visitors/JSXElementsRemover.js.map +1 -0
- package/lib/vm/createVmContext.js +80 -0
- package/lib/vm/createVmContext.js.map +1 -0
- package/lib/vm/process.js +38 -0
- package/lib/vm/process.js.map +1 -0
- package/package.json +63 -0
- package/types/babel.d.ts +2 -0
- package/types/babel.js +2 -0
- package/types/cache.d.ts +24 -0
- package/types/cache.js +85 -0
- package/types/debug/fileReporter.d.ts +27 -0
- package/types/debug/fileReporter.js +151 -0
- package/types/evaluators/index.d.ts +10 -0
- package/types/evaluators/index.js +15 -0
- package/types/index.d.ts +30 -0
- package/types/index.js +69 -0
- package/types/module.d.ts +62 -0
- package/types/module.js +318 -0
- package/types/options/buildOptions.d.ts +7 -0
- package/types/options/buildOptions.js +35 -0
- package/types/options/loadBabelOptions.d.ts +3 -0
- package/types/options/loadBabelOptions.js +27 -0
- package/types/plugins/babel-transform.d.ts +4 -0
- package/types/plugins/babel-transform.js +49 -0
- package/types/plugins/collector.d.ts +16 -0
- package/types/plugins/collector.js +67 -0
- package/types/plugins/dynamic-import.d.ts +6 -0
- package/types/plugins/dynamic-import.js +32 -0
- package/types/plugins/preeval.d.ts +16 -0
- package/types/plugins/preeval.js +69 -0
- package/types/plugins/shaker.d.ts +11 -0
- package/types/plugins/shaker.js +299 -0
- package/types/shaker.d.ts +3 -0
- package/types/shaker.js +64 -0
- package/types/transform/BaseEntrypoint.d.ts +23 -0
- package/types/transform/BaseEntrypoint.js +182 -0
- package/types/transform/Entrypoint.d.ts +50 -0
- package/types/transform/Entrypoint.helpers.d.ts +14 -0
- package/types/transform/Entrypoint.helpers.js +169 -0
- package/types/transform/Entrypoint.js +223 -0
- package/types/transform/Entrypoint.types.d.ts +23 -0
- package/types/transform/Entrypoint.types.js +2 -0
- package/types/transform/EvaluatedEntrypoint.d.ts +16 -0
- package/types/transform/EvaluatedEntrypoint.js +9 -0
- package/types/transform/actions/AbortError.d.ts +4 -0
- package/types/transform/actions/AbortError.js +12 -0
- package/types/transform/actions/BaseAction.d.ts +40 -0
- package/types/transform/actions/BaseAction.js +149 -0
- package/types/transform/actions/UnprocessedEntrypointError.d.ts +6 -0
- package/types/transform/actions/UnprocessedEntrypointError.js +13 -0
- package/types/transform/actions/actionRunner.d.ts +4 -0
- package/types/transform/actions/actionRunner.js +86 -0
- package/types/transform/actions/types.d.ts +15 -0
- package/types/transform/actions/types.js +2 -0
- package/types/transform/generators/baseProcessingHandlers.d.ts +17 -0
- package/types/transform/generators/baseProcessingHandlers.js +23 -0
- package/types/transform/generators/collect.d.ts +6 -0
- package/types/transform/generators/collect.js +57 -0
- package/types/transform/generators/evalFile.d.ts +6 -0
- package/types/transform/generators/evalFile.js +56 -0
- package/types/transform/generators/explodeReexports.d.ts +7 -0
- package/types/transform/generators/explodeReexports.js +67 -0
- package/types/transform/generators/extract.d.ts +8 -0
- package/types/transform/generators/extract.js +116 -0
- package/types/transform/generators/getExports.d.ts +8 -0
- package/types/transform/generators/getExports.js +65 -0
- package/types/transform/generators/index.d.ts +15 -0
- package/types/transform/generators/index.js +15 -0
- package/types/transform/generators/processEntrypoint.d.ts +9 -0
- package/types/transform/generators/processEntrypoint.js +88 -0
- package/types/transform/generators/processImports.d.ts +5 -0
- package/types/transform/generators/processImports.js +21 -0
- package/types/transform/generators/resolveImports.d.ts +9 -0
- package/types/transform/generators/resolveImports.js +124 -0
- package/types/transform/generators/transform.d.ts +17 -0
- package/types/transform/generators/transform.js +115 -0
- package/types/transform/generators/workflow.d.ts +7 -0
- package/types/transform/generators/workflow.js +77 -0
- package/types/transform/helpers/loadLinariaOptions.d.ts +6 -0
- package/types/transform/helpers/loadLinariaOptions.js +86 -0
- package/types/transform/helpers/withDefaultServices.d.ts +5 -0
- package/types/transform/helpers/withDefaultServices.js +40 -0
- package/types/transform/rootLog.d.ts +3 -0
- package/types/transform/rootLog.js +5 -0
- package/types/transform/types.d.ts +137 -0
- package/types/transform/types.js +4 -0
- package/types/transform.d.ts +20 -0
- package/types/transform.js +121 -0
- package/types/types.d.ts +72 -0
- package/types/types.js +5 -0
- package/types/utils/EventEmitter.d.ts +58 -0
- package/types/utils/EventEmitter.js +61 -0
- package/types/utils/ShakerMetadata.d.ts +7 -0
- package/types/utils/ShakerMetadata.js +5 -0
- package/types/utils/TransformMetadata.d.ts +13 -0
- package/types/utils/TransformMetadata.js +17 -0
- package/types/utils/addIdentifierToLinariaPreval.d.ts +4 -0
- package/types/utils/addIdentifierToLinariaPreval.js +75 -0
- package/types/utils/collectExportsAndImports.d.ts +31 -0
- package/types/utils/collectExportsAndImports.js +962 -0
- package/types/utils/collectTemplateDependencies.d.ts +17 -0
- package/types/utils/collectTemplateDependencies.js +212 -0
- package/types/utils/createId.d.ts +2 -0
- package/types/utils/createId.js +9 -0
- package/types/utils/dispose-polyfill.d.ts +0 -0
- package/types/utils/dispose-polyfill.js +5 -0
- package/types/utils/findIdentifiers.d.ts +6 -0
- package/types/utils/findIdentifiers.js +68 -0
- package/types/utils/findPackageJSON.d.ts +1 -0
- package/types/utils/findPackageJSON.js +29 -0
- package/types/utils/getFileIdx.d.ts +1 -0
- package/types/utils/getFileIdx.js +13 -0
- package/types/utils/getPluginKey.d.ts +2 -0
- package/types/utils/getPluginKey.js +16 -0
- package/types/utils/getScope.d.ts +2 -0
- package/types/utils/getScope.js +11 -0
- package/types/utils/getSource.d.ts +2 -0
- package/types/utils/getSource.js +22 -0
- package/types/utils/getTagProcessor.d.ts +6 -0
- package/types/utils/getTagProcessor.js +315 -0
- package/types/utils/getVisitorKeys.d.ts +5 -0
- package/types/utils/getVisitorKeys.js +8 -0
- package/types/utils/hasLinariaPreval.d.ts +4 -0
- package/types/utils/hasLinariaPreval.js +9 -0
- package/types/utils/isExports.d.ts +6 -0
- package/types/utils/isExports.js +20 -0
- package/types/utils/isGlobal.d.ts +2 -0
- package/types/utils/isGlobal.js +9 -0
- package/types/utils/isNode.d.ts +2 -0
- package/types/utils/isNode.js +7 -0
- package/types/utils/isNodePath.d.ts +3 -0
- package/types/utils/isNodePath.js +7 -0
- package/types/utils/isNotNull.d.ts +1 -0
- package/types/utils/isNotNull.js +7 -0
- package/types/utils/isRemoved.d.ts +5 -0
- package/types/utils/isRemoved.js +42 -0
- package/types/utils/isRequire.d.ts +6 -0
- package/types/utils/isRequire.js +15 -0
- package/types/utils/isSerializable.d.ts +2 -0
- package/types/utils/isSerializable.js +18 -0
- package/types/utils/isTypedNode.d.ts +5 -0
- package/types/utils/isTypedNode.js +9 -0
- package/types/utils/isUnnecessaryReactCall.d.ts +3 -0
- package/types/utils/isUnnecessaryReactCall.js +76 -0
- package/types/utils/peek.d.ts +1 -0
- package/types/utils/peek.js +5 -0
- package/types/utils/processTemplateExpression.d.ts +5 -0
- package/types/utils/processTemplateExpression.js +17 -0
- package/types/utils/removeDangerousCode.d.ts +3 -0
- package/types/utils/removeDangerousCode.js +144 -0
- package/types/utils/scopeHelpers.d.ts +12 -0
- package/types/utils/scopeHelpers.js +568 -0
- package/types/utils/traversalCache.d.ts +5 -0
- package/types/utils/traversalCache.js +36 -0
- package/types/utils/unwrapSequence.d.ts +8 -0
- package/types/utils/unwrapSequence.js +17 -0
- package/types/utils/valueToLiteral.d.ts +3 -0
- package/types/utils/valueToLiteral.js +64 -0
- package/types/utils/visitors/JSXElementsRemover.d.ts +3 -0
- package/types/utils/visitors/JSXElementsRemover.js +52 -0
- package/types/vm/createVmContext.d.ts +7 -0
- package/types/vm/createVmContext.js +92 -0
- package/types/vm/process.d.ts +25 -0
- package/types/vm/process.js +32 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shaker.js","names":["_shared","require","_collectExportsAndImports","_getFileIdx","_isRemoved","_scopeHelpers","_traversalCache","EXT_REGEX","ALLOWED_EXTENSIONS","shouldKeepSideEffect","importPath","ext","match","includes","getBindingForExport","exportPath","isIdentifier","scope","getBinding","node","name","variableDeclarator","findParent","p","isVariableDeclarator","id","get","isAssignmentExpression","left","isFunctionDeclaration","isClassDeclaration","undefined","withoutRemoved","items","filter","local","isRemoved","rearrangeExports","types","t","root","exportRefs","exports","rearranged","rootScope","forEach","refs","length","declarator","uid","generateUid","declaration","unshiftContainer","variableDeclaration","identifier","registerDeclaration","ref","replaced","replaceWith","isBindingIdentifier","_replaced$parentPath","registerConstantViolation","parentPath","reference","pushed","pushContainer","expressionStatement","assignmentExpression","memberExpression","shakerPlugin","babel","keepSideEffects","ifUnknownExport","onlyExports","shakerLogger","logger","extend","pre","file","filename","opts","log","getFileIdx","join","onlyExportsSet","Set","collected","collectExportsAndImports","path","sideEffectImports","imports","sideEffectImport","Object","values","reexports","hasLinariaPreval","__linariaPreval","hasDefault","default","has","delete","size","deadExports","keys","remove","importedAsSideEffect","isEsModule","add","aliveExports","importNames","map","imported","entries","exported","some","alive","exp","exportToPath","Map","set","notFoundExports","clear","isAllExportsFound","Error","forDeleting","i","source","push","deleted","dereferenced","changed","binding","action","findActionForNode","parent","outerReferences","referencePaths","isAncestor","dereference","applyAction","removeWithRelated","visitor","post","processedImports","addImport","metadata","linariaEvaluator","invalidateTraversalCache"],"sources":["../../src/plugins/shaker.ts"],"sourcesContent":["import type { BabelFile, PluginObj, NodePath } from '@babel/core';\nimport type { Binding } from '@babel/traverse';\nimport type {\n Identifier,\n MemberExpression,\n Program,\n VariableDeclarator,\n} from '@babel/types';\n\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { IMetadata } from '../utils/ShakerMetadata';\nimport type { Exports, IState } from '../utils/collectExportsAndImports';\nimport {\n collectExportsAndImports,\n sideEffectImport,\n} from '../utils/collectExportsAndImports';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { isRemoved } from '../utils/isRemoved';\nimport {\n applyAction,\n dereference,\n findActionForNode,\n reference,\n removeWithRelated,\n} from '../utils/scopeHelpers';\nimport { invalidateTraversalCache } from '../utils/traversalCache';\n\nconst EXT_REGEX = /\\.[0-9a-z]+$/;\nconst ALLOWED_EXTENSIONS = ['.js', '.cjs', '.mjs'];\n\nfunction shouldKeepSideEffect(importPath: string) {\n const [ext] = importPath.match(EXT_REGEX) || [''];\n\n return ext === '' || ALLOWED_EXTENSIONS.includes(ext);\n}\n\nexport interface IShakerOptions {\n ifUnknownExport?: 'error' | 'ignore' | 'reexport-all' | 'skip-shaking';\n keepSideEffects?: boolean;\n onlyExports: string[];\n}\n\ninterface NodeWithName {\n name: string;\n}\n\nfunction getBindingForExport(exportPath: NodePath): Binding | undefined {\n if (exportPath.isIdentifier()) {\n return exportPath.scope.getBinding(exportPath.node.name);\n }\n\n const variableDeclarator = exportPath.findParent((p) =>\n p.isVariableDeclarator()\n ) as NodePath<VariableDeclarator> | undefined;\n if (variableDeclarator) {\n const id = variableDeclarator.get('id');\n if (id.isIdentifier()) {\n return variableDeclarator.scope.getBinding(id.node.name);\n }\n }\n\n if (exportPath.isAssignmentExpression()) {\n const left = exportPath.get('left');\n if (left.isIdentifier()) {\n return exportPath.scope.getBinding(left.node.name);\n }\n }\n\n if (exportPath.isFunctionDeclaration() || exportPath.isClassDeclaration()) {\n return exportPath.scope.getBinding(exportPath.node.id!.name);\n }\n\n return undefined;\n}\n\nconst withoutRemoved = <T extends { local: NodePath }>(items: T[]): T[] =>\n items.filter(({ local }) => !isRemoved(local));\n\nfunction rearrangeExports(\n { types: t }: Core,\n root: NodePath<Program>,\n exportRefs: Map<string, NodePath<MemberExpression>[]>,\n exports: Exports\n): Exports {\n const rearranged = {\n ...exports,\n };\n\n const rootScope = root.scope;\n exportRefs.forEach((refs, name) => {\n if (refs.length <= 1) {\n if (refs.length === 1) {\n // Maybe exports is assigned to another variable?\n const declarator = refs[0].findParent((p) =>\n p.isVariableDeclarator()\n ) as NodePath<VariableDeclarator> | undefined;\n\n if (!declarator) {\n return;\n }\n } else {\n return;\n }\n }\n\n const uid = rootScope.generateUid(name);\n // Define variable in the beginning\n const [declaration] = root.unshiftContainer('body', [\n t.variableDeclaration('var', [t.variableDeclarator(t.identifier(uid))]),\n ]);\n\n rootScope.registerDeclaration(declaration);\n\n // Replace every reference with defined variable\n refs.forEach((ref) => {\n const [replaced] = ref.replaceWith(t.identifier(uid));\n if (replaced.isBindingIdentifier()) {\n rootScope.registerConstantViolation(replaced);\n if (replaced.parentPath?.parentPath?.isVariableDeclarator()) {\n // This is `const foo = exports.foo = \"value\"` case\n reference(replaced, replaced, true);\n }\n } else {\n reference(replaced);\n }\n });\n\n // Assign defined variable to the export\n const [pushed] = root.pushContainer('body', [\n t.expressionStatement(\n t.assignmentExpression(\n '=',\n t.memberExpression(t.identifier('exports'), t.identifier(name)),\n t.identifier(uid)\n )\n ),\n ]);\n\n const local = pushed.get('expression.right') as NodePath<Identifier>;\n reference(local);\n\n rearranged[name] = local;\n });\n\n return rearranged;\n}\n\nexport default function shakerPlugin(\n babel: Core,\n {\n keepSideEffects = false,\n ifUnknownExport = 'skip-shaking',\n onlyExports,\n }: IShakerOptions\n): PluginObj<IState & { filename: string }> {\n const shakerLogger = logger.extend('shaker');\n\n return {\n name: '@wyw-in-js/transform/shaker',\n pre(file: BabelFile) {\n this.filename = file.opts.filename!;\n const log = shakerLogger.extend(getFileIdx(this.filename));\n\n log('start', `${this.filename}, onlyExports: ${onlyExports.join(',')}`);\n const onlyExportsSet = new Set(onlyExports);\n\n const collected = collectExportsAndImports(file.path);\n const sideEffectImports = collected.imports.filter(sideEffectImport);\n log(\n 'import-and-exports',\n [\n `imports: ${collected.imports.length} (side-effects: ${sideEffectImports.length})`,\n `exports: ${Object.values(collected.exports).length}`,\n `reexports: ${collected.reexports.length}`,\n ].join(', ')\n );\n\n // We cannot just throw out exports if they are referred in the code\n // Let's dome some replacements\n const exports = rearrangeExports(\n babel,\n file.path,\n collected.exportRefs,\n collected.exports\n );\n\n Object.values(exports).forEach((local) => {\n if (local.isAssignmentExpression()) {\n const left = local.get('left');\n if (left.isIdentifier()) {\n // For some reason babel does not mark id in AssignmentExpression as a reference\n // So we need to do it manually\n reference(left, left, true);\n }\n }\n });\n\n const hasLinariaPreval = exports.__linariaPreval !== undefined;\n const hasDefault = exports.default !== undefined;\n\n // If __linariaPreval is not exported, we can remove it from onlyExports\n if (onlyExportsSet.has('__linariaPreval') && !hasLinariaPreval) {\n onlyExportsSet.delete('__linariaPreval');\n }\n\n if (onlyExportsSet.size === 0) {\n // Fast-lane: if there are no exports to keep, we can just shake out the whole file\n this.imports = [];\n this.exports = {};\n this.reexports = [];\n this.deadExports = Object.keys(exports);\n\n file.path.get('body').forEach((p) => {\n p.remove();\n });\n\n return;\n }\n\n const importedAsSideEffect = onlyExportsSet.has('side-effect');\n onlyExportsSet.delete('side-effect');\n\n // Hackaround for packages which include a 'default' export without specifying __esModule; such packages cannot be\n // shaken as they will break interopRequireDefault babel helper\n // See example in shaker-plugin.test.ts\n // Real-world example was found in preact/compat npm package\n if (\n onlyExportsSet.has('default') &&\n hasDefault &&\n !collected.isEsModule\n ) {\n this.imports = collected.imports;\n this.exports = exports;\n this.reexports = collected.reexports;\n this.deadExports = [];\n return;\n }\n\n if (!onlyExportsSet.has('*')) {\n // __esModule should be kept alive\n onlyExportsSet.add('__esModule');\n\n const aliveExports = new Set<NodePath>();\n const importNames = collected.imports.map(({ imported }) => imported);\n\n Object.entries(exports).forEach(([exported, local]) => {\n if (onlyExportsSet.has(exported)) {\n aliveExports.add(local);\n } else if (\n importNames.includes((local.node as NodeWithName).name || '')\n ) {\n aliveExports.add(local);\n } else if ([...aliveExports].some((alive) => alive === local)) {\n // It's possible to export multiple values from a single variable initializer, e.g\n // export const { foo, bar } = baz();\n // We need to treat all of them as used if any of them are used, since otherwise\n // we'll attempt to delete the baz() call\n aliveExports.add(local);\n }\n });\n\n collected.reexports.forEach((exp) => {\n if (onlyExportsSet.has(exp.exported)) {\n aliveExports.add(exp.local);\n }\n });\n\n const exportToPath = new Map<string, NodePath>();\n Object.entries(exports).forEach(([exported, local]) => {\n exportToPath.set(exported, local);\n });\n\n collected.reexports.forEach((exp) => {\n exportToPath.set(exp.exported, exp.local);\n });\n\n const notFoundExports = [...onlyExportsSet].filter(\n (exp) =>\n exp !== '__esModule' && !aliveExports.has(exportToPath.get(exp)!)\n );\n exportToPath.clear();\n\n const isAllExportsFound = notFoundExports.length === 0;\n if (!isAllExportsFound && ifUnknownExport !== 'ignore') {\n if (ifUnknownExport === 'error') {\n throw new Error(\n `Unknown export(s) requested: ${onlyExports.join(',')}`\n );\n }\n\n if (ifUnknownExport === 'reexport-all') {\n // If there are unknown exports, we have keep alive all re-exports.\n if (exports['*'] !== undefined) {\n aliveExports.add(exports['*']);\n }\n\n collected.reexports.forEach((exp) => {\n if (exp.exported === '*') {\n aliveExports.add(exp.local);\n }\n });\n }\n\n if (ifUnknownExport === 'skip-shaking') {\n this.imports = collected.imports;\n this.exports = exports;\n this.reexports = collected.reexports;\n this.deadExports = [];\n\n return;\n }\n }\n\n const forDeleting = [\n ...Object.values(exports),\n ...collected.reexports.map((i) => i.local),\n ].filter((exp) => !aliveExports.has(exp));\n\n if (!keepSideEffects && !importedAsSideEffect) {\n // Remove all imports that don't import something explicitly and should not be kept\n sideEffectImports.forEach((i) => {\n if (!shouldKeepSideEffect(i.source)) {\n forDeleting.push(i.local);\n }\n });\n }\n\n const deleted = new Set<NodePath>();\n\n let dereferenced: NodePath<Identifier>[] = [];\n let changed = true;\n while (changed && deleted.size < forDeleting.length) {\n changed = false;\n // eslint-disable-next-line no-restricted-syntax\n for (const path of forDeleting) {\n if (deleted.has(path)) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const binding = getBindingForExport(path);\n const action = findActionForNode(path);\n const parent = action?.[1];\n const outerReferences = (binding?.referencePaths || []).filter(\n (ref) => ref !== parent && !parent?.isAncestor(ref)\n );\n if (outerReferences.length > 0 && path.isIdentifier()) {\n // Temporary deref it in order to simplify further checks.\n dereference(path);\n dereferenced.push(path);\n }\n\n if (\n !deleted.has(path) &&\n (!binding || outerReferences.length === 0)\n ) {\n if (action) {\n applyAction(action);\n } else {\n removeWithRelated([path]);\n }\n\n deleted.add(path);\n changed = true;\n }\n }\n\n dereferenced.forEach((path) => {\n // If path is still alive, we need to reference it back\n if (!isRemoved(path)) {\n reference(path);\n }\n });\n\n dereferenced = [];\n }\n }\n\n this.imports = withoutRemoved(collected.imports);\n this.exports = {};\n this.deadExports = [];\n\n Object.entries(exports).forEach(([exported, local]) => {\n if (isRemoved(local)) {\n this.deadExports.push(exported);\n } else {\n this.exports[exported] = local;\n }\n });\n\n this.reexports = withoutRemoved(collected.reexports);\n },\n visitor: {},\n post(file: BabelFile) {\n const log = shakerLogger.extend(getFileIdx(file.opts.filename!));\n\n const processedImports = new Set<string>();\n const imports = new Map<string, string[]>();\n const addImport = ({\n imported,\n source,\n }: {\n imported: string;\n source: string;\n }) => {\n if (processedImports.has(`${source}:${imported}`)) {\n return;\n }\n\n if (!imports.has(source)) {\n imports.set(source, []);\n }\n\n if (imported) {\n imports.get(source)!.push(imported);\n }\n\n processedImports.add(`${source}:${imported}`);\n };\n\n this.imports.forEach(addImport);\n this.reexports.forEach(addImport);\n\n log('end', `remaining imports: %O`, imports);\n\n // eslint-disable-next-line no-param-reassign\n (file.metadata as IMetadata).linariaEvaluator = {\n imports,\n };\n\n invalidateTraversalCache(file.path);\n },\n };\n}\n"],"mappings":"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"}
|
package/lib/shaker.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _ShakerMetadata = require("./utils/ShakerMetadata");
|
|
8
|
+
var _getPluginKey = require("./utils/getPluginKey");
|
|
9
|
+
const hasKeyInList = (plugin, list) => {
|
|
10
|
+
const pluginKey = (0, _getPluginKey.getPluginKey)(plugin);
|
|
11
|
+
return pluginKey ? list.some(i => pluginKey.includes(i)) : false;
|
|
12
|
+
};
|
|
13
|
+
const safeResolve = (id, paths) => {
|
|
14
|
+
try {
|
|
15
|
+
return require.resolve(id, {
|
|
16
|
+
paths: paths.filter(i => i !== null)
|
|
17
|
+
});
|
|
18
|
+
} catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const shaker = (evalConfig, ast, code, {
|
|
23
|
+
highPriorityPlugins,
|
|
24
|
+
...config
|
|
25
|
+
}, babel) => {
|
|
26
|
+
var _evalConfig$plugins$f, _evalConfig$plugins, _evalConfig$plugins2, _evalConfig$plugins3, _evalConfig$filename, _evalConfig$filename2, _transformed$code;
|
|
27
|
+
const preShakePlugins = (_evalConfig$plugins$f = (_evalConfig$plugins = evalConfig.plugins) === null || _evalConfig$plugins === void 0 ? void 0 : _evalConfig$plugins.filter(i => hasKeyInList(i, highPriorityPlugins))) !== null && _evalConfig$plugins$f !== void 0 ? _evalConfig$plugins$f : [];
|
|
28
|
+
const plugins = [...preShakePlugins, [require.resolve('./plugins/shaker'), config], ...((_evalConfig$plugins2 = evalConfig.plugins) !== null && _evalConfig$plugins2 !== void 0 ? _evalConfig$plugins2 : []).filter(i => !hasKeyInList(i, highPriorityPlugins))];
|
|
29
|
+
const hasCommonjsPlugin = (_evalConfig$plugins3 = evalConfig.plugins) === null || _evalConfig$plugins3 === void 0 ? void 0 : _evalConfig$plugins3.some(i => (0, _getPluginKey.getPluginKey)(i) === 'transform-modules-commonjs');
|
|
30
|
+
if (!hasCommonjsPlugin) {
|
|
31
|
+
plugins.push(require.resolve('@babel/plugin-transform-modules-commonjs'));
|
|
32
|
+
}
|
|
33
|
+
if ((_evalConfig$filename = evalConfig.filename) !== null && _evalConfig$filename !== void 0 && _evalConfig$filename.endsWith('.ts') || (_evalConfig$filename2 = evalConfig.filename) !== null && _evalConfig$filename2 !== void 0 && _evalConfig$filename2.endsWith('.tsx')) {
|
|
34
|
+
var _evalConfig$plugins4;
|
|
35
|
+
const hasTypescriptPlugin = (_evalConfig$plugins4 = evalConfig.plugins) === null || _evalConfig$plugins4 === void 0 ? void 0 : _evalConfig$plugins4.some(i => (0, _getPluginKey.getPluginKey)(i) === 'transform-typescript');
|
|
36
|
+
if (!hasTypescriptPlugin) {
|
|
37
|
+
const preset = safeResolve('@babel/preset-typescript', [evalConfig.filename]);
|
|
38
|
+
const plugin = safeResolve('@babel/plugin-transform-typescript', [evalConfig.filename, preset]);
|
|
39
|
+
if (plugin) {
|
|
40
|
+
plugins.push(plugin);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const transformOptions = {
|
|
45
|
+
...evalConfig,
|
|
46
|
+
caller: {
|
|
47
|
+
name: 'linaria'
|
|
48
|
+
},
|
|
49
|
+
plugins
|
|
50
|
+
};
|
|
51
|
+
const transformed = babel.transformFromAstSync(ast, code, transformOptions);
|
|
52
|
+
if (!transformed || !(0, _ShakerMetadata.hasShakerMetadata)(transformed.metadata)) {
|
|
53
|
+
throw new Error(`${evalConfig.filename} has no shaker metadata`);
|
|
54
|
+
}
|
|
55
|
+
return [transformed.ast, (_transformed$code = transformed.code) !== null && _transformed$code !== void 0 ? _transformed$code : '', transformed.metadata.linariaEvaluator.imports];
|
|
56
|
+
};
|
|
57
|
+
var _default = exports.default = shaker;
|
|
58
|
+
//# sourceMappingURL=shaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shaker.js","names":["_ShakerMetadata","require","_getPluginKey","hasKeyInList","plugin","list","pluginKey","getPluginKey","some","i","includes","safeResolve","id","paths","resolve","filter","shaker","evalConfig","ast","code","highPriorityPlugins","config","babel","_evalConfig$plugins$f","_evalConfig$plugins","_evalConfig$plugins2","_evalConfig$plugins3","_evalConfig$filename","_evalConfig$filename2","_transformed$code","preShakePlugins","plugins","hasCommonjsPlugin","push","filename","endsWith","_evalConfig$plugins4","hasTypescriptPlugin","preset","transformOptions","caller","name","transformed","transformFromAstSync","hasShakerMetadata","metadata","Error","linariaEvaluator","imports","_default","exports","default"],"sources":["../src/shaker.ts"],"sourcesContent":["import type { TransformOptions, PluginItem } from '@babel/core';\n\nimport type { Evaluator } from '@wyw-in-js/shared';\n\nimport { hasShakerMetadata } from './utils/ShakerMetadata';\nimport { getPluginKey } from './utils/getPluginKey';\n\nconst hasKeyInList = (plugin: PluginItem, list: string[]): boolean => {\n const pluginKey = getPluginKey(plugin);\n return pluginKey ? list.some((i) => pluginKey.includes(i)) : false;\n};\n\nconst safeResolve = (id: string, paths: (string | null)[]): string | null => {\n try {\n return require.resolve(id, {\n paths: paths.filter((i) => i !== null) as string[],\n });\n } catch {\n return null;\n }\n};\n\nconst shaker: Evaluator = (\n evalConfig,\n ast,\n code,\n { highPriorityPlugins, ...config },\n babel\n) => {\n const preShakePlugins =\n evalConfig.plugins?.filter((i) => hasKeyInList(i, highPriorityPlugins)) ??\n [];\n\n const plugins = [\n ...preShakePlugins,\n [require.resolve('./plugins/shaker'), config],\n ...(evalConfig.plugins ?? []).filter(\n (i) => !hasKeyInList(i, highPriorityPlugins)\n ),\n ];\n\n const hasCommonjsPlugin = evalConfig.plugins?.some(\n (i) => getPluginKey(i) === 'transform-modules-commonjs'\n );\n\n if (!hasCommonjsPlugin) {\n plugins.push(require.resolve('@babel/plugin-transform-modules-commonjs'));\n }\n\n if (\n evalConfig.filename?.endsWith('.ts') ||\n evalConfig.filename?.endsWith('.tsx')\n ) {\n const hasTypescriptPlugin = evalConfig.plugins?.some(\n (i) => getPluginKey(i) === 'transform-typescript'\n );\n\n if (!hasTypescriptPlugin) {\n const preset = safeResolve('@babel/preset-typescript', [\n evalConfig.filename,\n ]);\n const plugin = safeResolve('@babel/plugin-transform-typescript', [\n evalConfig.filename,\n preset,\n ]);\n\n if (plugin) {\n plugins.push(plugin);\n }\n }\n }\n\n const transformOptions: TransformOptions = {\n ...evalConfig,\n caller: {\n name: 'linaria',\n },\n plugins,\n };\n\n const transformed = babel.transformFromAstSync(ast, code, transformOptions);\n\n if (!transformed || !hasShakerMetadata(transformed.metadata)) {\n throw new Error(`${evalConfig.filename} has no shaker metadata`);\n }\n\n return [\n transformed.ast!,\n transformed.code ?? '',\n transformed.metadata.linariaEvaluator.imports,\n ];\n};\n\nexport default shaker;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createExports = exports.BaseEntrypoint = void 0;
|
|
7
|
+
var _getFileIdx = require("../utils/getFileIdx");
|
|
8
|
+
/* eslint-disable no-param-reassign */
|
|
9
|
+
|
|
10
|
+
const hasKey = (obj, key) => (typeof obj === 'object' || typeof obj === 'function') && obj !== null && key in obj;
|
|
11
|
+
const VALUES = Symbol('values');
|
|
12
|
+
const isProxy = obj => typeof obj === 'object' && obj !== null && VALUES in obj;
|
|
13
|
+
const createExports = log => {
|
|
14
|
+
let exports = {};
|
|
15
|
+
const lazyFields = new Set();
|
|
16
|
+
return new Proxy(exports, {
|
|
17
|
+
get: (_target, key) => {
|
|
18
|
+
if (key === VALUES) {
|
|
19
|
+
return exports;
|
|
20
|
+
}
|
|
21
|
+
let value;
|
|
22
|
+
if (key in exports) {
|
|
23
|
+
value = exports[key];
|
|
24
|
+
} else {
|
|
25
|
+
// Support Object.prototype methods on `exports`
|
|
26
|
+
// e.g `exports.hasOwnProperty`
|
|
27
|
+
value = Reflect.get(exports, key);
|
|
28
|
+
}
|
|
29
|
+
if (value === undefined && 'default' in exports) {
|
|
30
|
+
const defaultValue = exports.default;
|
|
31
|
+
if (hasKey(defaultValue, key)) {
|
|
32
|
+
log('⚠️ %s has been found in `default`. It indicates that ESM to CJS conversion went wrong.', key);
|
|
33
|
+
value = defaultValue[key];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (value !== undefined && lazyFields.has(key)) {
|
|
37
|
+
value = value();
|
|
38
|
+
}
|
|
39
|
+
log('get %s: %o', key, value);
|
|
40
|
+
return value;
|
|
41
|
+
},
|
|
42
|
+
has: (_target, key) => {
|
|
43
|
+
if (key === VALUES) return true;
|
|
44
|
+
return key in exports;
|
|
45
|
+
},
|
|
46
|
+
ownKeys: () => {
|
|
47
|
+
return Object.keys(exports);
|
|
48
|
+
},
|
|
49
|
+
set: (_target, key, value) => {
|
|
50
|
+
if (key === VALUES) {
|
|
51
|
+
exports = value;
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
if (key !== '__esModule') {
|
|
55
|
+
log('set %s: %o', key, value);
|
|
56
|
+
}
|
|
57
|
+
if (value !== undefined) {
|
|
58
|
+
exports[key] = value;
|
|
59
|
+
lazyFields.delete(key);
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
},
|
|
63
|
+
defineProperty: (_target, key, descriptor) => {
|
|
64
|
+
const {
|
|
65
|
+
value
|
|
66
|
+
} = descriptor;
|
|
67
|
+
if (value !== undefined) {
|
|
68
|
+
if (key !== '__esModule') {
|
|
69
|
+
log('defineProperty %s with value %o', key, value);
|
|
70
|
+
}
|
|
71
|
+
exports[key] = value;
|
|
72
|
+
lazyFields.delete(key);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
if ('get' in descriptor) {
|
|
76
|
+
if (lazyFields.has(key)) {
|
|
77
|
+
const prev = exports[key];
|
|
78
|
+
exports[key] = () => {
|
|
79
|
+
var _descriptor$get;
|
|
80
|
+
const v = (_descriptor$get = descriptor.get) === null || _descriptor$get === void 0 ? void 0 : _descriptor$get.call(descriptor);
|
|
81
|
+
if (v !== undefined) {
|
|
82
|
+
return v;
|
|
83
|
+
}
|
|
84
|
+
return prev();
|
|
85
|
+
};
|
|
86
|
+
} else {
|
|
87
|
+
const prev = exports[key];
|
|
88
|
+
exports[key] = () => {
|
|
89
|
+
var _descriptor$get2;
|
|
90
|
+
const v = (_descriptor$get2 = descriptor.get) === null || _descriptor$get2 === void 0 ? void 0 : _descriptor$get2.call(descriptor);
|
|
91
|
+
if (v !== undefined) {
|
|
92
|
+
return v;
|
|
93
|
+
}
|
|
94
|
+
return prev;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
lazyFields.add(key);
|
|
98
|
+
log('defineProperty %s with getter', key);
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
},
|
|
102
|
+
getOwnPropertyDescriptor: (_target, key) => {
|
|
103
|
+
if (key in exports) return {
|
|
104
|
+
enumerable: true,
|
|
105
|
+
configurable: true
|
|
106
|
+
};
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
exports.createExports = createExports;
|
|
112
|
+
const EXPORTS = Symbol('exports');
|
|
113
|
+
let entrypointSeqId = 0;
|
|
114
|
+
class BaseEntrypoint {
|
|
115
|
+
static createExports = createExports;
|
|
116
|
+
// eslint-disable-next-line no-plusplus
|
|
117
|
+
seqId = entrypointSeqId++;
|
|
118
|
+
#exports;
|
|
119
|
+
constructor(services, evaluatedOnly, exports, generation, name, only, parents) {
|
|
120
|
+
var _parents$0$log$extend, _parents$, _parents$0$seqId, _parents$2;
|
|
121
|
+
this.services = services;
|
|
122
|
+
this.evaluatedOnly = evaluatedOnly;
|
|
123
|
+
this.generation = generation;
|
|
124
|
+
this.name = name;
|
|
125
|
+
this.only = only;
|
|
126
|
+
this.parents = parents;
|
|
127
|
+
this.idx = (0, _getFileIdx.getFileIdx)(name);
|
|
128
|
+
this.log = (_parents$0$log$extend = (_parents$ = parents[0]) === null || _parents$ === void 0 ? void 0 : _parents$.log.extend(this.ref, '->')) !== null && _parents$0$log$extend !== void 0 ? _parents$0$log$extend : services.log.extend(this.ref);
|
|
129
|
+
let isExportsInherited = false;
|
|
130
|
+
if (exports) {
|
|
131
|
+
if (isProxy(exports)) {
|
|
132
|
+
this.#exports = exports;
|
|
133
|
+
isExportsInherited = true;
|
|
134
|
+
} else {
|
|
135
|
+
this.#exports = createExports(this.log);
|
|
136
|
+
this.#exports[EXPORTS] = exports;
|
|
137
|
+
}
|
|
138
|
+
this.exports = exports;
|
|
139
|
+
} else {
|
|
140
|
+
this.#exports = BaseEntrypoint.createExports(this.log);
|
|
141
|
+
}
|
|
142
|
+
services.eventEmitter.entrypointEvent(this.seqId, {
|
|
143
|
+
class: this.constructor.name,
|
|
144
|
+
evaluatedOnly: this.evaluatedOnly,
|
|
145
|
+
filename: name,
|
|
146
|
+
generation,
|
|
147
|
+
idx: this.idx,
|
|
148
|
+
isExportsInherited,
|
|
149
|
+
only,
|
|
150
|
+
parentId: (_parents$0$seqId = (_parents$2 = parents[0]) === null || _parents$2 === void 0 ? void 0 : _parents$2.seqId) !== null && _parents$0$seqId !== void 0 ? _parents$0$seqId : null,
|
|
151
|
+
type: 'created'
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
get exports() {
|
|
155
|
+
if (EXPORTS in this.#exports) {
|
|
156
|
+
return this.#exports[EXPORTS];
|
|
157
|
+
}
|
|
158
|
+
return this.#exports;
|
|
159
|
+
}
|
|
160
|
+
set exports(value) {
|
|
161
|
+
if (isProxy(value)) {
|
|
162
|
+
this.#exports[VALUES] = value[VALUES];
|
|
163
|
+
} else {
|
|
164
|
+
this.#exports[EXPORTS] = value;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
get ref() {
|
|
168
|
+
return `${this.idx}#${this.generation}`;
|
|
169
|
+
}
|
|
170
|
+
get exportsProxy() {
|
|
171
|
+
return this.#exports;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.BaseEntrypoint = BaseEntrypoint;
|
|
175
|
+
//# sourceMappingURL=BaseEntrypoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseEntrypoint.js","names":["_getFileIdx","require","hasKey","obj","key","VALUES","Symbol","isProxy","createExports","log","exports","lazyFields","Set","Proxy","get","_target","value","Reflect","undefined","defaultValue","default","has","ownKeys","Object","keys","set","delete","defineProperty","descriptor","prev","_descriptor$get","v","call","_descriptor$get2","add","getOwnPropertyDescriptor","enumerable","configurable","EXPORTS","entrypointSeqId","BaseEntrypoint","seqId","constructor","services","evaluatedOnly","generation","name","only","parents","_parents$0$log$extend","_parents$","_parents$0$seqId","_parents$2","idx","getFileIdx","extend","ref","isExportsInherited","eventEmitter","entrypointEvent","class","filename","parentId","type","exportsProxy"],"sources":["../../src/transform/BaseEntrypoint.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Debugger } from '@wyw-in-js/shared';\n\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\n\nimport type { Services } from './types';\n\nconst hasKey = <TKey extends string | symbol>(\n obj: unknown,\n key: TKey\n): obj is Record<TKey, unknown> =>\n (typeof obj === 'object' || typeof obj === 'function') &&\n obj !== null &&\n key in obj;\n\nconst VALUES = Symbol('values');\n\nconst isProxy = (\n obj: unknown\n): obj is { [VALUES]: Record<string | symbol, unknown> } =>\n typeof obj === 'object' && obj !== null && VALUES in obj;\n\nexport const createExports = (log: Debugger) => {\n let exports: Record<string | symbol, unknown> = {};\n const lazyFields = new Set<string | symbol>();\n\n return new Proxy(exports, {\n get: (_target, key) => {\n if (key === VALUES) {\n return exports;\n }\n\n let value: unknown;\n if (key in exports) {\n value = exports[key];\n } else {\n // Support Object.prototype methods on `exports`\n // e.g `exports.hasOwnProperty`\n value = Reflect.get(exports, key);\n }\n\n if (value === undefined && 'default' in exports) {\n const defaultValue = exports.default;\n if (hasKey(defaultValue, key)) {\n log(\n '⚠️ %s has been found in `default`. It indicates that ESM to CJS conversion went wrong.',\n key\n );\n value = defaultValue[key];\n }\n }\n\n if (value !== undefined && lazyFields.has(key)) {\n value = (value as () => unknown)();\n }\n\n log('get %s: %o', key, value);\n return value;\n },\n has: (_target, key) => {\n if (key === VALUES) return true;\n return key in exports;\n },\n ownKeys: () => {\n return Object.keys(exports);\n },\n set: (_target, key, value) => {\n if (key === VALUES) {\n exports = value;\n return true;\n }\n\n if (key !== '__esModule') {\n log('set %s: %o', key, value);\n }\n\n if (value !== undefined) {\n exports[key] = value;\n lazyFields.delete(key);\n }\n\n return true;\n },\n defineProperty: (_target, key, descriptor) => {\n const { value } = descriptor;\n if (value !== undefined) {\n if (key !== '__esModule') {\n log('defineProperty %s with value %o', key, value);\n }\n\n exports[key] = value;\n lazyFields.delete(key);\n\n return true;\n }\n\n if ('get' in descriptor) {\n if (lazyFields.has(key)) {\n const prev = exports[key] as () => void;\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev();\n };\n } else {\n const prev = exports[key];\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev;\n };\n }\n\n lazyFields.add(key);\n log('defineProperty %s with getter', key);\n }\n\n return true;\n },\n getOwnPropertyDescriptor: (_target, key) => {\n if (key in exports)\n return {\n enumerable: true,\n configurable: true,\n };\n\n return undefined;\n },\n });\n};\n\nconst EXPORTS = Symbol('exports');\n\nlet entrypointSeqId = 0;\n\nexport abstract class BaseEntrypoint {\n public static createExports = createExports;\n\n public readonly idx: string;\n\n public readonly log: Debugger;\n\n // eslint-disable-next-line no-plusplus\n public readonly seqId = entrypointSeqId++;\n\n readonly #exports: Record<string | symbol, unknown>;\n\n protected constructor(\n protected services: Services,\n public readonly evaluatedOnly: string[],\n exports: Record<string | symbol, unknown> | undefined,\n public readonly generation: number,\n public readonly name: string,\n public readonly only: string[],\n public readonly parents: ParentEntrypoint[]\n ) {\n this.idx = getFileIdx(name);\n this.log =\n parents[0]?.log.extend(this.ref, '->') ?? services.log.extend(this.ref);\n\n let isExportsInherited = false;\n if (exports) {\n if (isProxy(exports)) {\n this.#exports = exports;\n isExportsInherited = true;\n } else {\n this.#exports = createExports(this.log);\n this.#exports[EXPORTS] = exports;\n }\n this.exports = exports;\n } else {\n this.#exports = BaseEntrypoint.createExports(this.log);\n }\n\n services.eventEmitter.entrypointEvent(this.seqId, {\n class: this.constructor.name,\n evaluatedOnly: this.evaluatedOnly,\n filename: name,\n generation,\n idx: this.idx,\n isExportsInherited,\n only,\n parentId: parents[0]?.seqId ?? null,\n type: 'created',\n });\n }\n\n public get exports(): Record<string | symbol, unknown> {\n if (EXPORTS in this.#exports) {\n return this.#exports[EXPORTS] as Record<string | symbol, unknown>;\n }\n\n return this.#exports;\n }\n\n public set exports(value: unknown) {\n if (isProxy(value)) {\n this.#exports[VALUES] = value[VALUES];\n } else {\n this.#exports[EXPORTS] = value;\n }\n }\n\n public get ref() {\n return `${this.idx}#${this.generation}`;\n }\n\n protected get exportsProxy() {\n return this.#exports;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getMatchedRule = getMatchedRule;
|
|
7
|
+
exports.getStack = getStack;
|
|
8
|
+
exports.isSuperSet = void 0;
|
|
9
|
+
exports.loadAndParse = loadAndParse;
|
|
10
|
+
exports.mergeOnly = mergeOnly;
|
|
11
|
+
exports.parseFile = parseFile;
|
|
12
|
+
var _fs = require("fs");
|
|
13
|
+
var _path = require("path");
|
|
14
|
+
var _shared = require("@wyw-in-js/shared");
|
|
15
|
+
var _buildOptions = require("../options/buildOptions");
|
|
16
|
+
var _loadBabelOptions = require("../options/loadBabelOptions");
|
|
17
|
+
var _getFileIdx = require("../utils/getFileIdx");
|
|
18
|
+
var _getPluginKey = require("../utils/getPluginKey");
|
|
19
|
+
function getMatchedRule(rules, filename, code) {
|
|
20
|
+
for (let i = rules.length - 1; i >= 0; i--) {
|
|
21
|
+
const rule = rules[i];
|
|
22
|
+
if (!rule.test) {
|
|
23
|
+
return rule;
|
|
24
|
+
}
|
|
25
|
+
if (typeof rule.test === 'function' && rule.test(filename, code)) {
|
|
26
|
+
return rule;
|
|
27
|
+
}
|
|
28
|
+
if (rule.test instanceof RegExp && rule.test.test(filename)) {
|
|
29
|
+
return rule;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
action: 'ignore'
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function parseFile(babel, filename, originalCode, parseConfig) {
|
|
37
|
+
const log = _shared.logger.extend('transform:parse').extend((0, _getFileIdx.getFileIdx)(filename));
|
|
38
|
+
const parseResult = babel.parseSync(originalCode, parseConfig);
|
|
39
|
+
if (!parseResult) {
|
|
40
|
+
throw new Error(`Failed to parse ${filename}`);
|
|
41
|
+
}
|
|
42
|
+
log('stage-1', `${filename} has been parsed`);
|
|
43
|
+
return parseResult;
|
|
44
|
+
}
|
|
45
|
+
const isModuleResolver = plugin => {
|
|
46
|
+
const key = (0, _getPluginKey.getPluginKey)(plugin);
|
|
47
|
+
if (!key) return false;
|
|
48
|
+
if (['module-resolver', 'babel-plugin-module-resolver'].includes(key)) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return /([\\/])babel-plugin-module-resolver\1/.test(key);
|
|
52
|
+
};
|
|
53
|
+
let moduleResolverWarned = false;
|
|
54
|
+
function buildConfigs(services, name, pluginOptions, babelOptions) {
|
|
55
|
+
var _parseConfig$plugins, _rawConfig$plugins;
|
|
56
|
+
const {
|
|
57
|
+
babel,
|
|
58
|
+
options
|
|
59
|
+
} = services;
|
|
60
|
+
const commonOptions = {
|
|
61
|
+
ast: true,
|
|
62
|
+
filename: name,
|
|
63
|
+
inputSourceMap: options.inputSourceMap,
|
|
64
|
+
root: options.root,
|
|
65
|
+
sourceFileName: name,
|
|
66
|
+
sourceMaps: true
|
|
67
|
+
};
|
|
68
|
+
const rawConfig = (0, _buildOptions.buildOptions)(pluginOptions === null || pluginOptions === void 0 ? void 0 : pluginOptions.babelOptions, babelOptions, commonOptions);
|
|
69
|
+
const useBabelConfigs = (0, _shared.isFeatureEnabled)(pluginOptions.features, 'useBabelConfigs', name);
|
|
70
|
+
if (!useBabelConfigs) {
|
|
71
|
+
rawConfig.configFile = false;
|
|
72
|
+
}
|
|
73
|
+
const parseConfig = (0, _loadBabelOptions.loadBabelOptions)(babel, name, {
|
|
74
|
+
babelrc: useBabelConfigs,
|
|
75
|
+
...rawConfig
|
|
76
|
+
});
|
|
77
|
+
const parseHasModuleResolver = (_parseConfig$plugins = parseConfig.plugins) === null || _parseConfig$plugins === void 0 ? void 0 : _parseConfig$plugins.some(isModuleResolver);
|
|
78
|
+
const rawHasModuleResolver = (_rawConfig$plugins = rawConfig.plugins) === null || _rawConfig$plugins === void 0 ? void 0 : _rawConfig$plugins.some(isModuleResolver);
|
|
79
|
+
if (parseHasModuleResolver && !rawHasModuleResolver) {
|
|
80
|
+
var _parseConfig$plugins$, _parseConfig$plugins2, _rawConfig$plugins2;
|
|
81
|
+
if (!moduleResolverWarned) {
|
|
82
|
+
// eslint-disable-next-line no-console
|
|
83
|
+
console.warn(`[linaria] ${name} has a module-resolver plugin in its babelrc, but it is not present ` + `in the babelOptions for the linaria plugin. This works for now but will be an error in the future. ` + `Please add the module-resolver plugin to the babelOptions for the linaria plugin.`);
|
|
84
|
+
moduleResolverWarned = true;
|
|
85
|
+
}
|
|
86
|
+
rawConfig.plugins = [...((_parseConfig$plugins$ = (_parseConfig$plugins2 = parseConfig.plugins) === null || _parseConfig$plugins2 === void 0 ? void 0 : _parseConfig$plugins2.filter(plugin => isModuleResolver(plugin))) !== null && _parseConfig$plugins$ !== void 0 ? _parseConfig$plugins$ : []), ...((_rawConfig$plugins2 = rawConfig.plugins) !== null && _rawConfig$plugins2 !== void 0 ? _rawConfig$plugins2 : [])];
|
|
87
|
+
}
|
|
88
|
+
const evalConfig = (0, _loadBabelOptions.loadBabelOptions)(babel, name, {
|
|
89
|
+
babelrc: false,
|
|
90
|
+
...rawConfig
|
|
91
|
+
});
|
|
92
|
+
return {
|
|
93
|
+
evalConfig,
|
|
94
|
+
parseConfig
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function loadAndParse(services, name, loadedCode, log) {
|
|
98
|
+
const {
|
|
99
|
+
babel,
|
|
100
|
+
eventEmitter,
|
|
101
|
+
options: {
|
|
102
|
+
pluginOptions
|
|
103
|
+
}
|
|
104
|
+
} = services;
|
|
105
|
+
const extension = (0, _path.extname)(name);
|
|
106
|
+
if (!pluginOptions.extensions.includes(extension)) {
|
|
107
|
+
log('[createEntrypoint] %s is ignored. If you want it to be processed, you should add \'%s\' to the "extensions" option.', name, extension);
|
|
108
|
+
return {
|
|
109
|
+
get code() {
|
|
110
|
+
if ((0, _path.isAbsolute)(name)) {
|
|
111
|
+
return loadedCode !== null && loadedCode !== void 0 ? loadedCode : (0, _fs.readFileSync)(name, 'utf-8');
|
|
112
|
+
}
|
|
113
|
+
return ''; // it is a built-in module
|
|
114
|
+
},
|
|
115
|
+
|
|
116
|
+
evaluator: 'ignored',
|
|
117
|
+
reason: 'extension'
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const code = loadedCode !== null && loadedCode !== void 0 ? loadedCode : (0, _fs.readFileSync)(name, 'utf-8');
|
|
121
|
+
const {
|
|
122
|
+
action,
|
|
123
|
+
babelOptions
|
|
124
|
+
} = getMatchedRule(pluginOptions.rules, name, code);
|
|
125
|
+
let ast;
|
|
126
|
+
const {
|
|
127
|
+
evalConfig,
|
|
128
|
+
parseConfig
|
|
129
|
+
} = buildConfigs(services, name, pluginOptions, babelOptions);
|
|
130
|
+
const getOrParse = () => {
|
|
131
|
+
if (ast) return ast;
|
|
132
|
+
ast = eventEmitter.perf('parseFile', () => parseFile(babel, name, code, parseConfig));
|
|
133
|
+
return ast;
|
|
134
|
+
};
|
|
135
|
+
if (action === 'ignore') {
|
|
136
|
+
log('[createEntrypoint] %s is ignored by rule', name);
|
|
137
|
+
return {
|
|
138
|
+
get ast() {
|
|
139
|
+
return getOrParse();
|
|
140
|
+
},
|
|
141
|
+
code,
|
|
142
|
+
evaluator: 'ignored',
|
|
143
|
+
reason: 'rule'
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
const evaluator = typeof action === 'function' ? action : require(require.resolve(action, {
|
|
147
|
+
paths: [(0, _path.dirname)(name)]
|
|
148
|
+
})).default;
|
|
149
|
+
return {
|
|
150
|
+
get ast() {
|
|
151
|
+
return getOrParse();
|
|
152
|
+
},
|
|
153
|
+
code,
|
|
154
|
+
evaluator,
|
|
155
|
+
evalConfig
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function getStack(entrypoint) {
|
|
159
|
+
if (!entrypoint) return [];
|
|
160
|
+
const stack = [entrypoint.name];
|
|
161
|
+
let {
|
|
162
|
+
parents
|
|
163
|
+
} = entrypoint;
|
|
164
|
+
while (parents.length) {
|
|
165
|
+
stack.push(parents[0].name);
|
|
166
|
+
parents = parents[0].parents;
|
|
167
|
+
}
|
|
168
|
+
return stack;
|
|
169
|
+
}
|
|
170
|
+
function mergeOnly(a, b) {
|
|
171
|
+
const result = new Set(a);
|
|
172
|
+
b.forEach(item => result.add(item));
|
|
173
|
+
return [...result].filter(i => i).sort();
|
|
174
|
+
}
|
|
175
|
+
const isSuperSet = (a, b) => {
|
|
176
|
+
if (a.includes('*')) return true;
|
|
177
|
+
if (b.length === 0) return true;
|
|
178
|
+
const aSet = new Set(a);
|
|
179
|
+
return b.every(item => aSet.has(item));
|
|
180
|
+
};
|
|
181
|
+
exports.isSuperSet = isSuperSet;
|
|
182
|
+
//# sourceMappingURL=Entrypoint.helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Entrypoint.helpers.js","names":["_fs","require","_path","_shared","_buildOptions","_loadBabelOptions","_getFileIdx","_getPluginKey","getMatchedRule","rules","filename","code","i","length","rule","test","RegExp","action","parseFile","babel","originalCode","parseConfig","log","logger","extend","getFileIdx","parseResult","parseSync","Error","isModuleResolver","plugin","key","getPluginKey","includes","moduleResolverWarned","buildConfigs","services","name","pluginOptions","babelOptions","_parseConfig$plugins","_rawConfig$plugins","options","commonOptions","ast","inputSourceMap","root","sourceFileName","sourceMaps","rawConfig","buildOptions","useBabelConfigs","isFeatureEnabled","features","configFile","loadBabelOptions","babelrc","parseHasModuleResolver","plugins","some","rawHasModuleResolver","_parseConfig$plugins$","_parseConfig$plugins2","_rawConfig$plugins2","console","warn","filter","evalConfig","loadAndParse","loadedCode","eventEmitter","extension","extname","extensions","isAbsolute","readFileSync","evaluator","reason","getOrParse","perf","resolve","paths","dirname","default","getStack","entrypoint","stack","parents","push","mergeOnly","a","b","result","Set","forEach","item","add","sort","isSuperSet","aSet","every","has","exports"],"sources":["../../src/transform/Entrypoint.helpers.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { dirname, extname, isAbsolute } from 'path';\n\nimport type { TransformOptions, PluginItem } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type {\n Debugger,\n EvalRule,\n Evaluator,\n StrictOptions,\n} from '@wyw-in-js/shared';\nimport { logger, isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport { buildOptions } from '../options/buildOptions';\nimport { loadBabelOptions } from '../options/loadBabelOptions';\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { getPluginKey } from '../utils/getPluginKey';\n\nimport type { IEntrypointCode, IIgnoredEntrypoint } from './Entrypoint.types';\nimport type { Services } from './types';\n\nexport function getMatchedRule(\n rules: EvalRule[],\n filename: string,\n code: string\n): EvalRule {\n for (let i = rules.length - 1; i >= 0; i--) {\n const rule = rules[i];\n if (!rule.test) {\n return rule;\n }\n\n if (typeof rule.test === 'function' && rule.test(filename, code)) {\n return rule;\n }\n\n if (rule.test instanceof RegExp && rule.test.test(filename)) {\n return rule;\n }\n }\n\n return { action: 'ignore' };\n}\n\nexport function parseFile(\n babel: Core,\n filename: string,\n originalCode: string,\n parseConfig: TransformOptions\n): File {\n const log = logger.extend('transform:parse').extend(getFileIdx(filename));\n\n const parseResult = babel.parseSync(originalCode, parseConfig);\n if (!parseResult) {\n throw new Error(`Failed to parse ${filename}`);\n }\n\n log('stage-1', `${filename} has been parsed`);\n\n return parseResult;\n}\n\nconst isModuleResolver = (plugin: PluginItem) => {\n const key = getPluginKey(plugin);\n if (!key) return false;\n\n if (['module-resolver', 'babel-plugin-module-resolver'].includes(key)) {\n return true;\n }\n\n return /([\\\\/])babel-plugin-module-resolver\\1/.test(key);\n};\n\nlet moduleResolverWarned = false;\n\nfunction buildConfigs(\n services: Services,\n name: string,\n pluginOptions: StrictOptions,\n babelOptions: TransformOptions | undefined\n): {\n evalConfig: TransformOptions;\n parseConfig: TransformOptions;\n} {\n const { babel, options } = services;\n\n const commonOptions = {\n ast: true,\n filename: name,\n inputSourceMap: options.inputSourceMap,\n root: options.root,\n sourceFileName: name,\n sourceMaps: true,\n };\n\n const rawConfig = buildOptions(\n pluginOptions?.babelOptions,\n babelOptions,\n commonOptions\n );\n\n const useBabelConfigs = isFeatureEnabled(\n pluginOptions.features,\n 'useBabelConfigs',\n name\n );\n\n if (!useBabelConfigs) {\n rawConfig.configFile = false;\n }\n\n const parseConfig = loadBabelOptions(babel, name, {\n babelrc: useBabelConfigs,\n ...rawConfig,\n });\n\n const parseHasModuleResolver = parseConfig.plugins?.some(isModuleResolver);\n const rawHasModuleResolver = rawConfig.plugins?.some(isModuleResolver);\n\n if (parseHasModuleResolver && !rawHasModuleResolver) {\n if (!moduleResolverWarned) {\n // eslint-disable-next-line no-console\n console.warn(\n `[linaria] ${name} has a module-resolver plugin in its babelrc, but it is not present ` +\n `in the babelOptions for the linaria plugin. This works for now but will be an error in the future. ` +\n `Please add the module-resolver plugin to the babelOptions for the linaria plugin.`\n );\n\n moduleResolverWarned = true;\n }\n\n rawConfig.plugins = [\n ...(parseConfig.plugins?.filter((plugin) => isModuleResolver(plugin)) ??\n []),\n ...(rawConfig.plugins ?? []),\n ];\n }\n\n const evalConfig = loadBabelOptions(babel, name, {\n babelrc: false,\n ...rawConfig,\n });\n\n return {\n evalConfig,\n parseConfig,\n };\n}\n\nexport function loadAndParse(\n services: Services,\n name: string,\n loadedCode: string | undefined,\n log: Debugger\n): IEntrypointCode | IIgnoredEntrypoint {\n const {\n babel,\n eventEmitter,\n options: { pluginOptions },\n } = services;\n\n const extension = extname(name);\n\n if (!pluginOptions.extensions.includes(extension)) {\n log(\n '[createEntrypoint] %s is ignored. If you want it to be processed, you should add \\'%s\\' to the \"extensions\" option.',\n name,\n extension\n );\n\n return {\n get code() {\n if (isAbsolute(name)) {\n return loadedCode ?? readFileSync(name, 'utf-8');\n }\n\n return ''; // it is a built-in module\n },\n evaluator: 'ignored',\n reason: 'extension',\n };\n }\n\n const code = loadedCode ?? readFileSync(name, 'utf-8');\n\n const { action, babelOptions } = getMatchedRule(\n pluginOptions.rules,\n name,\n code\n );\n\n let ast: File | undefined;\n\n const { evalConfig, parseConfig } = buildConfigs(\n services,\n name,\n pluginOptions,\n babelOptions\n );\n\n const getOrParse = () => {\n if (ast) return ast;\n ast = eventEmitter.perf('parseFile', () =>\n parseFile(babel, name, code, parseConfig)\n );\n\n return ast;\n };\n\n if (action === 'ignore') {\n log('[createEntrypoint] %s is ignored by rule', name);\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator: 'ignored',\n reason: 'rule',\n };\n }\n\n const evaluator: Evaluator =\n typeof action === 'function'\n ? action\n : require(\n require.resolve(action, {\n paths: [dirname(name)],\n })\n ).default;\n\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator,\n evalConfig,\n };\n}\n\nexport function getStack(entrypoint: ParentEntrypoint) {\n if (!entrypoint) return [];\n\n const stack = [entrypoint.name];\n\n let { parents } = entrypoint;\n while (parents.length) {\n stack.push(parents[0].name);\n parents = parents[0].parents;\n }\n\n return stack;\n}\n\nexport function mergeOnly(a: string[], b: string[]) {\n const result = new Set(a);\n b.forEach((item) => result.add(item));\n return [...result].filter((i) => i).sort();\n}\n\nexport const isSuperSet = <T>(a: (T | '*')[], b: (T | '*')[]) => {\n if (a.includes('*')) return true;\n if (b.length === 0) return true;\n const aSet = new Set(a);\n return b.every((item) => aSet.has(item));\n};\n"],"mappings":"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"}
|