@wyw-in-js/transform 1.1.0 → 2.0.0-alpha.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/cache.js +426 -289
- package/esm/cache.js.map +1 -1
- package/esm/debug/fileReporter.js +137 -134
- package/esm/debug/fileReporter.js.map +1 -1
- package/esm/eval/broker.js +2134 -0
- package/esm/eval/broker.js.map +1 -0
- package/esm/eval/lru.js +36 -0
- package/esm/eval/lru.js.map +1 -0
- package/esm/eval/prepareModuleOnDemand.js +21 -0
- package/esm/eval/prepareModuleOnDemand.js.map +1 -0
- package/esm/eval/protocol.js +2 -0
- package/esm/eval/protocol.js.map +1 -0
- package/esm/eval/resolverStrategy.js +51 -0
- package/esm/eval/resolverStrategy.js.map +1 -0
- package/esm/eval/runner.js +1759 -0
- package/esm/eval/runner.js.map +1 -0
- package/esm/eval/serialize.js +333 -0
- package/esm/eval/serialize.js.map +1 -0
- package/esm/eval/writeQueue.js +81 -0
- package/esm/eval/writeQueue.js.map +1 -0
- package/esm/evaluators/index.js +11 -12
- package/esm/evaluators/index.js.map +1 -1
- package/esm/index.js +25 -29
- package/esm/index.js.map +1 -1
- package/esm/module.js +896 -520
- package/esm/module.js.map +1 -1
- package/esm/shaker.js +14 -80
- package/esm/shaker.js.map +1 -1
- package/esm/transform/BaseEntrypoint.js +162 -164
- package/esm/transform/BaseEntrypoint.js.map +1 -1
- package/esm/transform/Entrypoint.helpers.js +96 -253
- package/esm/transform/Entrypoint.helpers.js.map +1 -1
- package/esm/transform/Entrypoint.js +336 -270
- package/esm/transform/Entrypoint.js.map +1 -1
- package/esm/transform/Entrypoint.types.js +1 -1
- package/esm/transform/Entrypoint.types.js.map +1 -1
- package/esm/transform/EvaluatedEntrypoint.js +10 -4
- package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
- package/esm/transform/actions/AbortError.js +6 -6
- package/esm/transform/actions/AbortError.js.map +1 -1
- package/esm/transform/actions/BaseAction.js +140 -136
- package/esm/transform/actions/BaseAction.js.map +1 -1
- package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
- package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
- package/esm/transform/actions/actionRunner.js +63 -66
- package/esm/transform/actions/actionRunner.js.map +1 -1
- package/esm/transform/actions/types.js +1 -1
- package/esm/transform/actions/types.js.map +1 -1
- package/esm/transform/barrelManifest.types.js +2 -0
- package/esm/transform/barrelManifest.types.js.map +1 -0
- package/esm/transform/generators/baseProcessingHandlers.js +15 -17
- package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
- package/esm/transform/generators/collect.js +27 -55
- package/esm/transform/generators/collect.js.map +1 -1
- package/esm/transform/generators/createStylisPreprocessor.js +353 -321
- package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
- package/esm/transform/generators/evalFile.js +48 -47
- package/esm/transform/generators/evalFile.js.map +1 -1
- package/esm/transform/generators/extract.js +78 -90
- package/esm/transform/generators/extract.js.map +1 -1
- package/esm/transform/generators/getExports.js +57 -74
- package/esm/transform/generators/getExports.js.map +1 -1
- package/esm/transform/generators/index.js +11 -11
- package/esm/transform/generators/index.js.map +1 -1
- package/esm/transform/generators/processEntrypoint.js +78 -67
- package/esm/transform/generators/processEntrypoint.js.map +1 -1
- package/esm/transform/generators/processImports.js +102 -67
- package/esm/transform/generators/processImports.js.map +1 -1
- package/esm/transform/generators/resolveImports.js +165 -196
- package/esm/transform/generators/resolveImports.js.map +1 -1
- package/esm/transform/generators/resolveStaticOxcValues.js +2911 -0
- package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
- package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
- package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
- package/esm/transform/generators/transform.js +239 -248
- package/esm/transform/generators/transform.js.map +1 -1
- package/esm/transform/generators/workflow.js +87 -90
- package/esm/transform/generators/workflow.js.map +1 -1
- package/esm/transform/helpers/loadWywOptions.js +154 -74
- package/esm/transform/helpers/loadWywOptions.js.map +1 -1
- package/esm/transform/helpers/withDefaultServices.js +13 -22
- package/esm/transform/helpers/withDefaultServices.js.map +1 -1
- package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
- package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
- package/esm/transform/oxcBarrelManifest.js +349 -0
- package/esm/transform/oxcBarrelManifest.js.map +1 -0
- package/esm/transform/rootLog.js +3 -3
- package/esm/transform/rootLog.js.map +1 -1
- package/esm/transform/syntax.js +2 -0
- package/esm/transform/syntax.js.map +1 -0
- package/esm/transform/types.js +2 -2
- package/esm/transform/types.js.map +1 -1
- package/esm/transform.js +123 -147
- package/esm/transform.js.map +1 -1
- package/esm/types.js +4 -1
- package/esm/types.js.map +1 -1
- package/esm/utils/EventEmitter.js +46 -48
- package/esm/utils/EventEmitter.js.map +1 -1
- package/esm/utils/ShakerMetadata.js +2 -2
- package/esm/utils/ShakerMetadata.js.map +1 -1
- package/esm/utils/TransformDiagnostics.js +9 -9
- package/esm/utils/TransformDiagnostics.js.map +1 -1
- package/esm/utils/TransformMetadata.js +24 -26
- package/esm/utils/TransformMetadata.js.map +1 -1
- package/esm/utils/applyOxcProcessors.js +1217 -0
- package/esm/utils/applyOxcProcessors.js.map +1 -0
- package/esm/utils/collectOxcExportsAndImports.js +934 -0
- package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
- package/esm/utils/collectOxcRuntime.js +220 -0
- package/esm/utils/collectOxcRuntime.js.map +1 -0
- package/esm/utils/collectOxcTemplateDependencies.js +1398 -0
- package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
- package/esm/utils/dispose-polyfill.js +3 -4
- package/esm/utils/dispose-polyfill.js.map +1 -1
- package/esm/utils/getFileIdx.js +6 -6
- package/esm/utils/getFileIdx.js.map +1 -1
- package/esm/utils/getPluginKey.js +12 -12
- package/esm/utils/getPluginKey.js.map +1 -1
- package/esm/utils/getVisitorKeys.js +9 -3
- package/esm/utils/getVisitorKeys.js.map +1 -1
- package/esm/utils/hasCachedWywPrevalExport.js +23 -0
- package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
- package/esm/utils/hasWywPreval.js +5 -5
- package/esm/utils/hasWywPreval.js.map +1 -1
- package/esm/utils/importOverrides.js +75 -90
- package/esm/utils/importOverrides.js.map +1 -1
- package/esm/utils/isNode.js +2 -2
- package/esm/utils/isNode.js.map +1 -1
- package/esm/utils/isNotNull.js +2 -2
- package/esm/utils/isNotNull.js.map +1 -1
- package/esm/utils/isSerializable.js +11 -11
- package/esm/utils/isSerializable.js.map +1 -1
- package/esm/utils/oxcAstService.js +121 -0
- package/esm/utils/oxcAstService.js.map +1 -0
- package/esm/utils/oxcEmit.js +447 -0
- package/esm/utils/oxcEmit.js.map +1 -0
- package/esm/utils/oxcPreevalStage.js +97 -0
- package/esm/utils/oxcPreevalStage.js.map +1 -0
- package/esm/utils/oxcPreevalTransforms.js +1054 -0
- package/esm/utils/oxcPreevalTransforms.js.map +1 -0
- package/esm/utils/oxcShaker.js +662 -0
- package/esm/utils/oxcShaker.js.map +1 -0
- package/esm/utils/parseOxc.js +37 -0
- package/esm/utils/parseOxc.js.map +1 -0
- package/esm/utils/parseRequest.js +27 -27
- package/esm/utils/parseRequest.js.map +1 -1
- package/esm/utils/peek.js +1 -1
- package/esm/utils/peek.js.map +1 -1
- package/esm/utils/processorLookup.js +125 -0
- package/esm/utils/processorLookup.js.map +1 -0
- package/esm/utils/resolveWithConditions.js +99 -0
- package/esm/utils/resolveWithConditions.js.map +1 -0
- package/esm/vm/createVmContext.js +140 -141
- package/esm/vm/createVmContext.js.map +1 -1
- package/esm/vm/process.js +11 -13
- package/esm/vm/process.js.map +1 -1
- package/package.json +18 -26
- package/types/cache.d.ts +17 -8
- package/types/cache.js +237 -95
- package/types/debug/fileReporter.js +22 -22
- package/types/eval/broker.d.ts +88 -0
- package/types/eval/broker.js +2262 -0
- package/types/eval/lru.d.ts +10 -0
- package/types/eval/lru.js +36 -0
- package/types/eval/prepareModuleOnDemand.d.ts +7 -0
- package/types/eval/prepareModuleOnDemand.js +24 -0
- package/types/eval/protocol.d.ts +97 -0
- package/types/eval/protocol.js +1 -0
- package/types/eval/resolverStrategy.d.ts +13 -0
- package/types/eval/resolverStrategy.js +46 -0
- package/types/eval/serialize.d.ts +78 -0
- package/types/eval/serialize.js +357 -0
- package/types/eval/writeQueue.d.ts +13 -0
- package/types/eval/writeQueue.js +80 -0
- package/types/evaluators/index.d.ts +2 -2
- package/types/evaluators/index.js +6 -9
- package/types/index.d.ts +3 -6
- package/types/index.js +24 -82
- package/types/module.d.ts +35 -7
- package/types/module.js +535 -163
- package/types/shaker.d.ts +2 -10
- package/types/shaker.js +10 -100
- package/types/transform/BaseEntrypoint.js +6 -11
- package/types/transform/Entrypoint.d.ts +15 -15
- package/types/transform/Entrypoint.helpers.d.ts +2 -5
- package/types/transform/Entrypoint.helpers.js +43 -203
- package/types/transform/Entrypoint.js +130 -53
- package/types/transform/Entrypoint.types.d.ts +28 -6
- package/types/transform/Entrypoint.types.js +1 -2
- package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
- package/types/transform/EvaluatedEntrypoint.js +7 -6
- package/types/transform/actions/AbortError.js +2 -7
- package/types/transform/actions/BaseAction.js +4 -8
- package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
- package/types/transform/actions/actionRunner.js +8 -12
- package/types/transform/actions/types.d.ts +2 -2
- package/types/transform/actions/types.js +1 -2
- package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
- package/types/transform/barrelManifest.types.js +1 -0
- package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
- package/types/transform/generators/baseProcessingHandlers.js +10 -14
- package/types/transform/generators/collect.js +13 -39
- package/types/transform/generators/createStylisPreprocessor.js +19 -60
- package/types/transform/generators/evalFile.d.ts +2 -2
- package/types/transform/generators/evalFile.js +26 -28
- package/types/transform/generators/extract.js +5 -8
- package/types/transform/generators/getExports.js +23 -30
- package/types/transform/generators/index.d.ts +2 -2
- package/types/transform/generators/index.js +11 -14
- package/types/transform/generators/processEntrypoint.d.ts +2 -2
- package/types/transform/generators/processEntrypoint.js +60 -26
- package/types/transform/generators/processImports.d.ts +0 -3
- package/types/transform/generators/processImports.js +60 -20
- package/types/transform/generators/resolveImports.js +18 -22
- package/types/transform/generators/resolveStaticOxcValues.d.ts +2 -0
- package/types/transform/generators/resolveStaticOxcValues.js +3235 -0
- package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
- package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
- package/types/transform/generators/transform.d.ts +3 -7
- package/types/transform/generators/transform.js +203 -199
- package/types/transform/generators/workflow.js +62 -45
- package/types/transform/helpers/loadWywOptions.js +94 -20
- package/types/transform/helpers/withDefaultServices.d.ts +1 -1
- package/types/transform/helpers/withDefaultServices.js +6 -44
- package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
- package/types/transform/isStaticallyEvaluatableModule.js +125 -126
- package/types/transform/oxcBarrelManifest.d.ts +2 -0
- package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
- package/types/transform/rootLog.js +2 -5
- package/types/transform/syntax.d.ts +38 -0
- package/types/transform/syntax.js +1 -0
- package/types/transform/types.d.ts +9 -6
- package/types/transform/types.js +1 -4
- package/types/transform.d.ts +2 -2
- package/types/transform.js +88 -101
- package/types/types.d.ts +0 -23
- package/types/types.js +1 -2
- package/types/utils/EventEmitter.js +3 -9
- package/types/utils/ShakerMetadata.js +1 -5
- package/types/utils/TransformDiagnostics.js +3 -7
- package/types/utils/TransformMetadata.js +8 -16
- package/types/utils/applyOxcProcessors.d.ts +16 -0
- package/types/utils/applyOxcProcessors.js +1391 -0
- package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
- package/types/utils/collectOxcExportsAndImports.js +957 -0
- package/types/utils/collectOxcRuntime.d.ts +14 -0
- package/types/utils/collectOxcRuntime.js +250 -0
- package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
- package/types/utils/collectOxcTemplateDependencies.js +1580 -0
- package/types/utils/getFileIdx.js +1 -4
- package/types/utils/getPluginKey.d.ts +5 -2
- package/types/utils/getPluginKey.js +2 -6
- package/types/utils/getVisitorKeys.d.ts +4 -4
- package/types/utils/getVisitorKeys.js +9 -6
- package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
- package/types/utils/hasCachedWywPrevalExport.js +30 -0
- package/types/utils/hasWywPreval.js +1 -4
- package/types/utils/importOverrides.js +17 -27
- package/types/utils/isNode.d.ts +2 -2
- package/types/utils/isNode.js +2 -6
- package/types/utils/isNotNull.js +1 -4
- package/types/utils/isSerializable.js +3 -6
- package/types/utils/oxcAstService.d.ts +11 -0
- package/types/utils/oxcAstService.js +79 -0
- package/types/utils/oxcEmit.d.ts +19 -0
- package/types/utils/oxcEmit.js +506 -0
- package/types/utils/oxcPreevalStage.d.ts +20 -0
- package/types/utils/oxcPreevalStage.js +102 -0
- package/types/utils/oxcPreevalTransforms.d.ts +13 -0
- package/types/utils/oxcPreevalTransforms.js +1179 -0
- package/types/utils/oxcShaker.d.ts +13 -0
- package/types/utils/oxcShaker.js +751 -0
- package/types/utils/parseOxc.d.ts +11 -0
- package/types/utils/parseOxc.js +38 -0
- package/types/utils/parseRequest.js +2 -7
- package/types/utils/peek.js +1 -5
- package/types/utils/processorLookup.d.ts +8 -0
- package/types/utils/processorLookup.js +135 -0
- package/types/utils/resolveWithConditions.d.ts +12 -0
- package/types/utils/resolveWithConditions.js +103 -0
- package/types/vm/createVmContext.d.ts +2 -2
- package/types/vm/createVmContext.js +25 -62
- package/types/vm/process.js +20 -26
- package/esm/babel.js +0 -2
- package/esm/babel.js.map +0 -1
- package/esm/options/buildOptions.js +0 -168
- package/esm/options/buildOptions.js.map +0 -1
- package/esm/options/buildOptions.test.js +0 -138
- package/esm/options/buildOptions.test.js.map +0 -1
- package/esm/options/loadBabelOptions.js +0 -24
- package/esm/options/loadBabelOptions.js.map +0 -1
- package/esm/plugins/babel-transform.js +0 -53
- package/esm/plugins/babel-transform.js.map +0 -1
- package/esm/plugins/collector.js +0 -60
- package/esm/plugins/collector.js.map +0 -1
- package/esm/plugins/dynamic-import.js +0 -56
- package/esm/plugins/dynamic-import.js.map +0 -1
- package/esm/plugins/preeval.js +0 -73
- package/esm/plugins/preeval.js.map +0 -1
- package/esm/plugins/shaker.js +0 -680
- package/esm/plugins/shaker.js.map +0 -1
- package/esm/transform/barrelManifest.js +0 -291
- package/esm/transform/barrelManifest.js.map +0 -1
- package/esm/transform/generators/explodeReexports.js +0 -64
- package/esm/transform/generators/explodeReexports.js.map +0 -1
- package/esm/transform/generators/rewriteBarrelImports.js +0 -733
- package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
- package/esm/utils/addIdentifierToWywPreval.js +0 -68
- package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
- package/esm/utils/collectExportsAndImports.js +0 -1157
- package/esm/utils/collectExportsAndImports.js.map +0 -1
- package/esm/utils/collectTemplateDependencies.js +0 -228
- package/esm/utils/collectTemplateDependencies.js.map +0 -1
- package/esm/utils/createId.js +0 -6
- package/esm/utils/createId.js.map +0 -1
- package/esm/utils/findIdentifiers.js +0 -62
- package/esm/utils/findIdentifiers.js.map +0 -1
- package/esm/utils/getConstantStringValue.js +0 -58
- package/esm/utils/getConstantStringValue.js.map +0 -1
- package/esm/utils/getMemberExpressionPropertyName.js +0 -11
- package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
- package/esm/utils/getScope.js +0 -6
- package/esm/utils/getScope.js.map +0 -1
- package/esm/utils/getSource.js +0 -15
- package/esm/utils/getSource.js.map +0 -1
- package/esm/utils/getTagProcessor.js +0 -404
- package/esm/utils/getTagProcessor.js.map +0 -1
- package/esm/utils/isExports.js +0 -22
- package/esm/utils/isExports.js.map +0 -1
- package/esm/utils/isGlobal.js +0 -6
- package/esm/utils/isGlobal.js.map +0 -1
- package/esm/utils/isNodePath.js +0 -4
- package/esm/utils/isNodePath.js.map +0 -1
- package/esm/utils/isRemoved.js +0 -46
- package/esm/utils/isRemoved.js.map +0 -1
- package/esm/utils/isRequire.js +0 -13
- package/esm/utils/isRequire.js.map +0 -1
- package/esm/utils/isTypedNode.js +0 -6
- package/esm/utils/isTypedNode.js.map +0 -1
- package/esm/utils/isUnnecessaryReactCall.js +0 -72
- package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
- package/esm/utils/removeDangerousCode.js +0 -276
- package/esm/utils/removeDangerousCode.js.map +0 -1
- package/esm/utils/replaceImportMetaEnv.js +0 -44
- package/esm/utils/replaceImportMetaEnv.js.map +0 -1
- package/esm/utils/scopeHelpers.js +0 -527
- package/esm/utils/scopeHelpers.js.map +0 -1
- package/esm/utils/traversalCache.js +0 -23
- package/esm/utils/traversalCache.js.map +0 -1
- package/esm/utils/unwrapExpression.js +0 -18
- package/esm/utils/unwrapExpression.js.map +0 -1
- package/esm/utils/unwrapSequence.js +0 -14
- package/esm/utils/unwrapSequence.js.map +0 -1
- package/esm/utils/valueToLiteral.js +0 -59
- package/esm/utils/valueToLiteral.js.map +0 -1
- package/esm/utils/visitors/JSXElementsRemover.js +0 -51
- package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
- package/lib/babel.js +0 -2
- package/lib/babel.js.map +0 -1
- package/lib/cache.js +0 -308
- package/lib/cache.js.map +0 -1
- package/lib/debug/fileReporter.js +0 -153
- package/lib/debug/fileReporter.js.map +0 -1
- package/lib/evaluators/index.js +0 -20
- package/lib/evaluators/index.js.map +0 -1
- package/lib/index.js +0 -286
- package/lib/index.js.map +0 -1
- package/lib/module.js +0 -552
- package/lib/module.js.map +0 -1
- package/lib/options/buildOptions.js +0 -176
- package/lib/options/buildOptions.js.map +0 -1
- package/lib/options/buildOptions.test.js +0 -141
- package/lib/options/buildOptions.test.js.map +0 -1
- package/lib/options/loadBabelOptions.js +0 -31
- package/lib/options/loadBabelOptions.js.map +0 -1
- package/lib/plugins/babel-transform.js +0 -60
- package/lib/plugins/babel-transform.js.map +0 -1
- package/lib/plugins/collector.js +0 -70
- package/lib/plugins/collector.js.map +0 -1
- package/lib/plugins/dynamic-import.js +0 -61
- package/lib/plugins/dynamic-import.js.map +0 -1
- package/lib/plugins/preeval.js +0 -81
- package/lib/plugins/preeval.js.map +0 -1
- package/lib/plugins/shaker.js +0 -691
- package/lib/plugins/shaker.js.map +0 -1
- package/lib/shaker.js +0 -95
- package/lib/shaker.js.map +0 -1
- package/lib/transform/BaseEntrypoint.js +0 -179
- package/lib/transform/BaseEntrypoint.js.map +0 -1
- package/lib/transform/Entrypoint.helpers.js +0 -279
- package/lib/transform/Entrypoint.helpers.js.map +0 -1
- package/lib/transform/Entrypoint.js +0 -289
- package/lib/transform/Entrypoint.js.map +0 -1
- package/lib/transform/Entrypoint.types.js +0 -2
- package/lib/transform/Entrypoint.types.js.map +0 -1
- package/lib/transform/EvaluatedEntrypoint.js +0 -13
- package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
- package/lib/transform/actions/AbortError.js +0 -16
- package/lib/transform/actions/AbortError.js.map +0 -1
- package/lib/transform/actions/BaseAction.js +0 -150
- package/lib/transform/actions/BaseAction.js.map +0 -1
- package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
- package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
- package/lib/transform/actions/actionRunner.js +0 -82
- package/lib/transform/actions/actionRunner.js.map +0 -1
- package/lib/transform/actions/types.js +0 -2
- package/lib/transform/actions/types.js.map +0 -1
- package/lib/transform/barrelManifest.js +0 -300
- package/lib/transform/barrelManifest.js.map +0 -1
- package/lib/transform/generators/baseProcessingHandlers.js +0 -27
- package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
- package/lib/transform/generators/collect.js +0 -66
- package/lib/transform/generators/collect.js.map +0 -1
- package/lib/transform/generators/createStylisPreprocessor.js +0 -372
- package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
- package/lib/transform/generators/evalFile.js +0 -57
- package/lib/transform/generators/evalFile.js.map +0 -1
- package/lib/transform/generators/explodeReexports.js +0 -71
- package/lib/transform/generators/explodeReexports.js.map +0 -1
- package/lib/transform/generators/extract.js +0 -102
- package/lib/transform/generators/extract.js.map +0 -1
- package/lib/transform/generators/getExports.js +0 -85
- package/lib/transform/generators/getExports.js.map +0 -1
- package/lib/transform/generators/index.js +0 -19
- package/lib/transform/generators/index.js.map +0 -1
- package/lib/transform/generators/processEntrypoint.js +0 -76
- package/lib/transform/generators/processEntrypoint.js.map +0 -1
- package/lib/transform/generators/processImports.js +0 -82
- package/lib/transform/generators/processImports.js.map +0 -1
- package/lib/transform/generators/resolveImports.js +0 -221
- package/lib/transform/generators/resolveImports.js.map +0 -1
- package/lib/transform/generators/rewriteBarrelImports.js +0 -743
- package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
- package/lib/transform/generators/transform.js +0 -272
- package/lib/transform/generators/transform.js.map +0 -1
- package/lib/transform/generators/workflow.js +0 -100
- package/lib/transform/generators/workflow.js.map +0 -1
- package/lib/transform/helpers/loadWywOptions.js +0 -88
- package/lib/transform/helpers/loadWywOptions.js.map +0 -1
- package/lib/transform/helpers/withDefaultServices.js +0 -31
- package/lib/transform/helpers/withDefaultServices.js.map +0 -1
- package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
- package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
- package/lib/transform/rootLog.js +0 -9
- package/lib/transform/rootLog.js.map +0 -1
- package/lib/transform/types.js +0 -8
- package/lib/transform/types.js.map +0 -1
- package/lib/transform.js +0 -160
- package/lib/transform.js.map +0 -1
- package/lib/types.js +0 -2
- package/lib/types.js.map +0 -1
- package/lib/utils/EventEmitter.js +0 -61
- package/lib/utils/EventEmitter.js.map +0 -1
- package/lib/utils/ShakerMetadata.js +0 -9
- package/lib/utils/ShakerMetadata.js.map +0 -1
- package/lib/utils/TransformDiagnostics.js +0 -20
- package/lib/utils/TransformDiagnostics.js.map +0 -1
- package/lib/utils/TransformMetadata.js +0 -45
- package/lib/utils/TransformMetadata.js.map +0 -1
- package/lib/utils/addIdentifierToWywPreval.js +0 -75
- package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
- package/lib/utils/collectExportsAndImports.js +0 -1173
- package/lib/utils/collectExportsAndImports.js.map +0 -1
- package/lib/utils/collectTemplateDependencies.js +0 -242
- package/lib/utils/collectTemplateDependencies.js.map +0 -1
- package/lib/utils/createId.js +0 -13
- package/lib/utils/createId.js.map +0 -1
- package/lib/utils/dispose-polyfill.js +0 -9
- package/lib/utils/dispose-polyfill.js.map +0 -1
- package/lib/utils/findIdentifiers.js +0 -73
- package/lib/utils/findIdentifiers.js.map +0 -1
- package/lib/utils/getConstantStringValue.js +0 -66
- package/lib/utils/getConstantStringValue.js.map +0 -1
- package/lib/utils/getFileIdx.js +0 -16
- package/lib/utils/getFileIdx.js.map +0 -1
- package/lib/utils/getMemberExpressionPropertyName.js +0 -18
- package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
- package/lib/utils/getPluginKey.js +0 -21
- package/lib/utils/getPluginKey.js.map +0 -1
- package/lib/utils/getScope.js +0 -12
- package/lib/utils/getScope.js.map +0 -1
- package/lib/utils/getSource.js +0 -24
- package/lib/utils/getSource.js.map +0 -1
- package/lib/utils/getTagProcessor.js +0 -424
- package/lib/utils/getTagProcessor.js.map +0 -1
- package/lib/utils/getVisitorKeys.js +0 -11
- package/lib/utils/getVisitorKeys.js.map +0 -1
- package/lib/utils/hasWywPreval.js +0 -13
- package/lib/utils/hasWywPreval.js.map +0 -1
- package/lib/utils/importOverrides.js +0 -119
- package/lib/utils/importOverrides.js.map +0 -1
- package/lib/utils/isExports.js +0 -27
- package/lib/utils/isExports.js.map +0 -1
- package/lib/utils/isGlobal.js +0 -13
- package/lib/utils/isGlobal.js.map +0 -1
- package/lib/utils/isNode.js +0 -9
- package/lib/utils/isNode.js.map +0 -1
- package/lib/utils/isNodePath.js +0 -10
- package/lib/utils/isNodePath.js.map +0 -1
- package/lib/utils/isNotNull.js +0 -10
- package/lib/utils/isNotNull.js.map +0 -1
- package/lib/utils/isRemoved.js +0 -52
- package/lib/utils/isRemoved.js.map +0 -1
- package/lib/utils/isRequire.js +0 -18
- package/lib/utils/isRequire.js.map +0 -1
- package/lib/utils/isSerializable.js +0 -19
- package/lib/utils/isSerializable.js.map +0 -1
- package/lib/utils/isTypedNode.js +0 -13
- package/lib/utils/isTypedNode.js.map +0 -1
- package/lib/utils/isUnnecessaryReactCall.js +0 -81
- package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
- package/lib/utils/parseRequest.js +0 -37
- package/lib/utils/parseRequest.js.map +0 -1
- package/lib/utils/peek.js +0 -9
- package/lib/utils/peek.js.map +0 -1
- package/lib/utils/removeDangerousCode.js +0 -284
- package/lib/utils/removeDangerousCode.js.map +0 -1
- package/lib/utils/replaceImportMetaEnv.js +0 -50
- package/lib/utils/replaceImportMetaEnv.js.map +0 -1
- package/lib/utils/scopeHelpers.js +0 -557
- package/lib/utils/scopeHelpers.js.map +0 -1
- package/lib/utils/traversalCache.js +0 -31
- package/lib/utils/traversalCache.js.map +0 -1
- package/lib/utils/unwrapExpression.js +0 -25
- package/lib/utils/unwrapExpression.js.map +0 -1
- package/lib/utils/unwrapSequence.js +0 -20
- package/lib/utils/unwrapSequence.js.map +0 -1
- package/lib/utils/valueToLiteral.js +0 -65
- package/lib/utils/valueToLiteral.js.map +0 -1
- package/lib/utils/visitors/JSXElementsRemover.js +0 -57
- package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
- package/lib/vm/createVmContext.js +0 -166
- package/lib/vm/createVmContext.js.map +0 -1
- package/lib/vm/process.js +0 -38
- package/lib/vm/process.js.map +0 -1
- package/types/babel.d.ts +0 -2
- package/types/babel.js +0 -2
- package/types/options/buildOptions.d.ts +0 -6
- package/types/options/buildOptions.js +0 -178
- package/types/options/loadBabelOptions.d.ts +0 -3
- package/types/options/loadBabelOptions.js +0 -26
- package/types/plugins/babel-transform.d.ts +0 -4
- package/types/plugins/babel-transform.js +0 -49
- package/types/plugins/collector.d.ts +0 -23
- package/types/plugins/collector.js +0 -62
- package/types/plugins/dynamic-import.d.ts +0 -6
- package/types/plugins/dynamic-import.js +0 -60
- package/types/plugins/preeval.d.ts +0 -16
- package/types/plugins/preeval.js +0 -69
- package/types/plugins/shaker.d.ts +0 -14
- package/types/plugins/shaker.js +0 -724
- package/types/transform/generators/explodeReexports.d.ts +0 -7
- package/types/transform/generators/explodeReexports.js +0 -65
- package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
- package/types/utils/addIdentifierToWywPreval.js +0 -74
- package/types/utils/collectExportsAndImports.d.ts +0 -31
- package/types/utils/collectExportsAndImports.js +0 -1147
- package/types/utils/collectTemplateDependencies.d.ts +0 -17
- package/types/utils/collectTemplateDependencies.js +0 -220
- package/types/utils/createId.d.ts +0 -2
- package/types/utils/createId.js +0 -9
- package/types/utils/findIdentifiers.d.ts +0 -6
- package/types/utils/findIdentifiers.js +0 -67
- package/types/utils/getConstantStringValue.d.ts +0 -2
- package/types/utils/getConstantStringValue.js +0 -94
- package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
- package/types/utils/getMemberExpressionPropertyName.js +0 -46
- package/types/utils/getScope.d.ts +0 -2
- package/types/utils/getScope.js +0 -10
- package/types/utils/getSource.d.ts +0 -2
- package/types/utils/getSource.js +0 -22
- package/types/utils/getTagProcessor.d.ts +0 -13
- package/types/utils/getTagProcessor.js +0 -411
- package/types/utils/isExports.d.ts +0 -6
- package/types/utils/isExports.js +0 -19
- package/types/utils/isGlobal.d.ts +0 -2
- package/types/utils/isGlobal.js +0 -9
- package/types/utils/isNodePath.d.ts +0 -3
- package/types/utils/isNodePath.js +0 -6
- package/types/utils/isRemoved.d.ts +0 -5
- package/types/utils/isRemoved.js +0 -41
- package/types/utils/isRequire.d.ts +0 -6
- package/types/utils/isRequire.js +0 -14
- package/types/utils/isTypedNode.d.ts +0 -5
- package/types/utils/isTypedNode.js +0 -9
- package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
- package/types/utils/isUnnecessaryReactCall.js +0 -75
- package/types/utils/removeDangerousCode.d.ts +0 -4
- package/types/utils/removeDangerousCode.js +0 -326
- package/types/utils/replaceImportMetaEnv.d.ts +0 -3
- package/types/utils/replaceImportMetaEnv.js +0 -39
- package/types/utils/scopeHelpers.d.ts +0 -12
- package/types/utils/scopeHelpers.js +0 -580
- package/types/utils/traversalCache.d.ts +0 -4
- package/types/utils/traversalCache.js +0 -27
- package/types/utils/unwrapExpression.d.ts +0 -2
- package/types/utils/unwrapExpression.js +0 -57
- package/types/utils/unwrapSequence.d.ts +0 -8
- package/types/utils/unwrapSequence.js +0 -16
- package/types/utils/valueToLiteral.d.ts +0 -3
- package/types/utils/valueToLiteral.js +0 -63
- package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
- package/types/utils/visitors/JSXElementsRemover.js +0 -51
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"mappings":";AACA,SAAS,mCAAmC;AAC5C,SAAS,iBAAiB;AAS1B,OAAO,SAAS,qBACd,YACA,SAC8C;CAC9C,MAAM,UAGA,EAAE;AAER,MAAK,MAAM,OAAO,SAAS;EACzB,MAAM,EAAE,aAAa;AACrB,MAAI,CAAC,UAAU;AACb,SAAM,IAAI,MAAM,4BAA4B,IAAI,SAAS;;EAG3D,MAAM,gBAAgB,WAAW,YAAY,UAAU,EAAE,CAAC;AAE1D,MAAI,kBAAkB,QAAQ;AAC5B;;AAGF,UAAQ,KAAK;GACX,YAAY;GACZ,QAAQ,IAAI;GACb,CAAC;;AAGJ,QAAO;;AAGT,OAAO,UAAU,aAE2B;CAC1C,MAAM,EACJ,YACA,UAAU,EAAE,YACV;CACJ,MAAM,EAAE,oBAAoB;AAE5B,YAAW,IAAI,uBAAuB,WAAW,KAAK;AAEtD,KAAI,MAAM,IAAI,WAAW,WAAW,KAAK,EAAE;AACzC,SAAO,MAAM,IAAI,WAAW,WAAW,KAAK;;CAG9C,IAAI,uBAA2C,EAAE;CACjD,MAAM,SAAmB,EAAE;AAE3B,KAAI,gBAAgB,cAAc,WAAW;AAC3C,QAAM,IAAI,MACR,eAAe,WAAW,KAAK,4FAChC;;CAGH,MAAM,EAAE,SAAS,cAAc,4BAC7B,gBAAgB,MAChB,gBAAgB,WAAW,YAAY,WAAW,KACnD;AACD,QAAO,KAAK,QAAQ,CAAC,SAAS,UAAU;AACtC,SAAO,KAAK,MAAM;GAClB;AAEF,WAAU,SAAS,aAAa;AAC9B,MAAI,SAAS,aAAa,KAAK;AAC7B,UAAO,KAAK,SAAS,SAAS;;GAEhC;AAEF,wBAAuB,UAAU,QAC9B,aAAa,SAAS,aAAa,IACrC;AAED,KAAI,qBAAqB,QAAQ;EAC/B,MAAM,kBAAkB,OAAO,KAAK,QAAQ,kBAAkB,YAAY,EACxE,SAAS,IAAI,IAAI,qBAAqB,KAAK,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,EACxE,CAAC;EACF,MAAM,sBAAsB,gBAAgB,SAAS,eACnD,WAAW,WAAW,CAAC,WAAW,SAAS,GAAG,EAAE,CACjD;EAED,MAAM,sBAAsB,qBAC1B,YACA,gBACD;AAED,OAAK,MAAM,sBAAsB,qBAAqB;GACpD,MAAM,eAAe,OAAO,KAAK,QAC/B,cACA,mBAAmB,YACnB,UACD;AAED,UAAO,KAAK,GAAG,aAAa;;AAG9B,QAAM,IAAI,WAAW,WAAW,MAAM,OAAO;AAC7C,QAAM,qBAAqB,WAAW,WAAW,MAAM,oBAAoB;AAE3E,aAAW,IAAI,eAAe,OAAO;AAErC,SAAO;;AAGT,YAAW,IAAI,eAAe,OAAO;AACrC,OAAM,IAAI,WAAW,WAAW,MAAM,OAAO;AAE7C,QAAO","names":[],"sources":["../../../src/transform/generators/getExports.ts"],"version":3,"sourcesContent":["/* eslint-disable no-continue */\nimport { collectOxcExportsAndImports } from '../../utils/collectOxcExportsAndImports';\nimport { oxcShaker } from '../../shaker';\nimport type { Entrypoint } from '../Entrypoint';\nimport type { IEntrypointDependency } from '../Entrypoint.types';\nimport type { IGetExportsAction, SyncScenarioForAction } from '../types';\n\ntype WildcardReexport = {\n source: string;\n};\n\nexport function findExportsInImports(\n entrypoint: Entrypoint,\n imports: IEntrypointDependency[]\n): { entrypoint: Entrypoint; import: string }[] {\n const results: {\n entrypoint: Entrypoint;\n import: string;\n }[] = [];\n\n for (const imp of imports) {\n const { resolved } = imp;\n if (!resolved) {\n throw new Error(`Could not resolve import ${imp.source}`);\n }\n\n const newEntrypoint = entrypoint.createChild(resolved, []);\n\n if (newEntrypoint === 'loop') {\n continue;\n }\n\n results.push({\n entrypoint: newEntrypoint,\n import: imp.source,\n });\n }\n\n return results;\n}\n\nexport function* getExports(\n this: IGetExportsAction\n): SyncScenarioForAction<IGetExportsAction> {\n const {\n entrypoint,\n services: { cache },\n } = this;\n const { loadedAndParsed } = entrypoint;\n\n entrypoint.log('get exports from %s', entrypoint.name);\n\n if (cache.has('exports', entrypoint.name)) {\n return cache.get('exports', entrypoint.name)!;\n }\n\n let withWildcardReexport: WildcardReexport[] = [];\n const result: string[] = [];\n\n if (loadedAndParsed.evaluator !== oxcShaker) {\n throw new Error(\n `[wyw-in-js] ${entrypoint.name} matched a legacy evaluator. The Oxc runtime path supports only the default Oxc evaluator.`\n );\n }\n\n const { exports, reexports } = collectOxcExportsAndImports(\n loadedAndParsed.code,\n loadedAndParsed.evalConfig.filename ?? entrypoint.name\n );\n Object.keys(exports).forEach((token) => {\n result.push(token);\n });\n\n reexports.forEach((reexport) => {\n if (reexport.exported !== '*') {\n result.push(reexport.exported);\n }\n });\n\n withWildcardReexport = reexports.filter(\n (reexport) => reexport.exported === '*'\n );\n\n if (withWildcardReexport.length) {\n const resolvedImports = yield* this.getNext('resolveImports', entrypoint, {\n imports: new Map(withWildcardReexport.map((item) => [item.source, []])),\n });\n const dependencyFilenames = resolvedImports.flatMap((dependency) =>\n dependency.resolved ? [dependency.resolved] : []\n );\n\n const importedEntrypoints = findExportsInImports(\n entrypoint,\n resolvedImports\n );\n\n for (const importedEntrypoint of importedEntrypoints) {\n const childExports = yield* this.getNext(\n 'getExports',\n importedEntrypoint.entrypoint,\n undefined\n );\n\n result.push(...childExports);\n }\n\n cache.add('exports', entrypoint.name, result);\n cache.setCacheDependencies('exports', entrypoint.name, dependencyFilenames);\n\n entrypoint.log('exports: %o', result);\n\n return result;\n }\n\n entrypoint.log('exports: %o', result);\n cache.add('exports', entrypoint.name, result);\n\n return result;\n}\n"],"file":"getExports.js"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { baseProcessingHandlers } from
|
|
2
|
-
import { collect } from
|
|
3
|
-
import { evalFile } from
|
|
4
|
-
import { extract } from
|
|
5
|
-
import { workflow } from
|
|
1
|
+
import { baseProcessingHandlers } from "./baseProcessingHandlers.js";
|
|
2
|
+
import { collect } from "./collect.js";
|
|
3
|
+
import { evalFile } from "./evalFile.js";
|
|
4
|
+
import { extract } from "./extract.js";
|
|
5
|
+
import { workflow } from "./workflow.js";
|
|
6
6
|
export const baseHandlers = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
...baseProcessingHandlers,
|
|
8
|
+
collect,
|
|
9
|
+
evalFile,
|
|
10
|
+
extract,
|
|
11
|
+
workflow
|
|
12
12
|
};
|
|
13
|
-
//# sourceMappingURL=index.js.map
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"mappings":"AAAA,SAAS,8BAA8B;AACvC,SAAS,eAAe;AACxB,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,gBAAgB;AAEzB,OAAO,MAAM,eAAe;CAC1B,GAAG;CACH;CACA;CACA;CACA;CACD","names":[],"sources":["../../../src/transform/generators/index.ts"],"version":3,"sourcesContent":["import { baseProcessingHandlers } from './baseProcessingHandlers';\nimport { collect } from './collect';\nimport { evalFile } from './evalFile';\nimport { extract } from './extract';\nimport { workflow } from './workflow';\n\nexport const baseHandlers = {\n ...baseProcessingHandlers,\n collect,\n evalFile,\n extract,\n workflow,\n};\n"],"file":"index.js"}
|
|
@@ -1,70 +1,81 @@
|
|
|
1
|
-
|
|
2
|
-
import { shaker } from '../../shaker';
|
|
3
|
-
import { isAborted } from '../actions/AbortError';
|
|
4
|
-
import { analyzeBarrelFile } from '../barrelManifest';
|
|
5
|
-
const shouldSkipExplodeReexports = action => {
|
|
6
|
-
const {
|
|
7
|
-
loadedAndParsed,
|
|
8
|
-
only
|
|
9
|
-
} = action.entrypoint;
|
|
10
|
-
if (only.length === 1 && only[0] === '__wywPreval') {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
if (loadedAndParsed.evaluator !== shaker || !loadedAndParsed.ast) {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
const barrelAnalysis = analyzeBarrelFile(loadedAndParsed.ast);
|
|
17
|
-
return barrelAnalysis.kind === 'barrel' && barrelAnalysis.complete;
|
|
18
|
-
};
|
|
19
|
-
|
|
1
|
+
import { isAborted } from "../actions/AbortError.js";
|
|
20
2
|
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
*/
|
|
3
|
+
* The first stage of processing an entrypoint.
|
|
4
|
+
* This stage is responsible for:
|
|
5
|
+
* - scheduling the transform action
|
|
6
|
+
* - rescheduling itself if the entrypoint is superseded
|
|
7
|
+
*/
|
|
27
8
|
export function* processEntrypoint() {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
log(`Unhandled error: %O`, e);
|
|
65
|
-
throw e;
|
|
66
|
-
} finally {
|
|
67
|
-
this.entrypoint.endProcessing();
|
|
68
|
-
}
|
|
9
|
+
const { only, log } = this.entrypoint;
|
|
10
|
+
log("start processing (only: %o)", only);
|
|
11
|
+
if (this.entrypoint.transformed) {
|
|
12
|
+
log("already transformed, skip processing");
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (this.entrypoint.isProcessing) {
|
|
16
|
+
log("already processing, skip duplicate request");
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
this.entrypoint.beginProcessing();
|
|
20
|
+
try {
|
|
21
|
+
using abortSignal = this.createAbortSignal();
|
|
22
|
+
const result = yield* this.getNext("transform", this.entrypoint, undefined, abortSignal);
|
|
23
|
+
this.entrypoint.assertNotSuperseded();
|
|
24
|
+
this.entrypoint.setTransformResult(result);
|
|
25
|
+
const supersededWith = this.entrypoint.applyDeferredSupersede();
|
|
26
|
+
if (supersededWith) {
|
|
27
|
+
log("processing finished, deferred only detected; schedule next attempt");
|
|
28
|
+
yield* this.getNext("processEntrypoint", supersededWith, undefined, null);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
log("entrypoint processing finished");
|
|
32
|
+
} catch (e) {
|
|
33
|
+
if (isAborted(e) && this.entrypoint.supersededWith) {
|
|
34
|
+
log("processing aborted, schedule the next attempt");
|
|
35
|
+
yield* this.getNext("processEntrypoint", this.entrypoint.supersededWith, undefined, null);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
log(`Unhandled error: %O`, e);
|
|
39
|
+
throw e;
|
|
40
|
+
} finally {
|
|
41
|
+
this.entrypoint.endProcessing();
|
|
42
|
+
}
|
|
69
43
|
}
|
|
70
|
-
|
|
44
|
+
export async function* processEntrypointAsync() {
|
|
45
|
+
const { only, log } = this.entrypoint;
|
|
46
|
+
log("start processing (only: %o)", only);
|
|
47
|
+
if (this.entrypoint.transformed) {
|
|
48
|
+
log("already transformed, skip processing");
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (this.entrypoint.isProcessing) {
|
|
52
|
+
log("already processing, wait for existing request");
|
|
53
|
+
await this.entrypoint.waitForProcessing();
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.entrypoint.beginProcessing();
|
|
57
|
+
try {
|
|
58
|
+
using abortSignal = this.createAbortSignal();
|
|
59
|
+
const result = yield* this.getNext("transform", this.entrypoint, undefined, abortSignal);
|
|
60
|
+
this.entrypoint.assertNotSuperseded();
|
|
61
|
+
this.entrypoint.setTransformResult(result);
|
|
62
|
+
const supersededWith = this.entrypoint.applyDeferredSupersede();
|
|
63
|
+
if (supersededWith) {
|
|
64
|
+
log("processing finished, deferred only detected; schedule next attempt");
|
|
65
|
+
yield* this.getNext("processEntrypoint", supersededWith, undefined, null);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
log("entrypoint processing finished");
|
|
69
|
+
} catch (e) {
|
|
70
|
+
if (isAborted(e) && this.entrypoint.supersededWith) {
|
|
71
|
+
log("processing aborted, schedule the next attempt");
|
|
72
|
+
yield* this.getNext("processEntrypoint", this.entrypoint.supersededWith, undefined, null);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
log(`Unhandled error: %O`, e);
|
|
76
|
+
throw e;
|
|
77
|
+
} finally {
|
|
78
|
+
this.entrypoint.endProcessing();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=processEntrypoint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"mappings":"AAAA,SAAS,iBAAiB;;;;;;;AAa1B,OAAO,UAAU,oBAEkC;CACjD,MAAM,EAAE,MAAM,QAAQ,KAAK;AAC3B,KAAI,+BAA+B,KAAK;AAExC,KAAI,KAAK,WAAW,aAAa;AAC/B,MAAI,uCAAuC;AAC3C;;AAGF,KAAI,KAAK,WAAW,cAAc;AAChC,MAAI,6CAA6C;AACjD;;AAGF,MAAK,WAAW,iBAAiB;AAEjC,KAAI;EACF,MAAM,cAAc,KAAK,mBAAmB;EAE5C,MAAM,SAAS,OAAO,KAAK,QACzB,aACA,KAAK,YACL,WACA,YACD;AAED,OAAK,WAAW,qBAAqB;AAErC,OAAK,WAAW,mBAAmB,OAAO;EAE1C,MAAM,iBAAiB,KAAK,WAAW,wBAAwB;AAC/D,MAAI,gBAAgB;AAClB,OAAI,qEAAqE;AACzE,UAAO,KAAK,QAAQ,qBAAqB,gBAAgB,WAAW,KAAK;AACzE;;AAGF,MAAI,iCAAiC;UAC9B,GAAG;AACV,MAAI,UAAU,EAAE,IAAI,KAAK,WAAW,gBAAgB;AAClD,OAAI,gDAAgD;AACpD,UAAO,KAAK,QACV,qBACA,KAAK,WAAW,gBAChB,WACA,KACD;AAED;;AAGF,MAAI,uBAAuB,EAAE;AAC7B,QAAM;WACE;AACR,OAAK,WAAW,eAAe;;;AAInC,OAAO,gBAAgB,yBAE6B;CAClD,MAAM,EAAE,MAAM,QAAQ,KAAK;AAC3B,KAAI,+BAA+B,KAAK;AAExC,KAAI,KAAK,WAAW,aAAa;AAC/B,MAAI,uCAAuC;AAC3C;;AAGF,KAAI,KAAK,WAAW,cAAc;AAChC,MAAI,gDAAgD;AACpD,QAAM,KAAK,WAAW,mBAAmB;AACzC;;AAGF,MAAK,WAAW,iBAAiB;AAEjC,KAAI;EACF,MAAM,cAAc,KAAK,mBAAmB;EAE5C,MAAM,SAAS,OAAO,KAAK,QACzB,aACA,KAAK,YACL,WACA,YACD;AAED,OAAK,WAAW,qBAAqB;AAErC,OAAK,WAAW,mBAAmB,OAAO;EAE1C,MAAM,iBAAiB,KAAK,WAAW,wBAAwB;AAC/D,MAAI,gBAAgB;AAClB,OAAI,qEAAqE;AACzE,UAAO,KAAK,QAAQ,qBAAqB,gBAAgB,WAAW,KAAK;AACzE;;AAGF,MAAI,iCAAiC;UAC9B,GAAG;AACV,MAAI,UAAU,EAAE,IAAI,KAAK,WAAW,gBAAgB;AAClD,OAAI,gDAAgD;AACpD,UAAO,KAAK,QACV,qBACA,KAAK,WAAW,gBAChB,WACA,KACD;AAED;;AAGF,MAAI,uBAAuB,EAAE;AAC7B,QAAM;WACE;AACR,OAAK,WAAW,eAAe","names":[],"sources":["../../../src/transform/generators/processEntrypoint.ts"],"version":3,"sourcesContent":["import { isAborted } from '../actions/AbortError';\nimport type {\n AsyncScenarioForAction,\n IProcessEntrypointAction,\n SyncScenarioForAction,\n} from '../types';\n\n/**\n * The first stage of processing an entrypoint.\n * This stage is responsible for:\n * - scheduling the transform action\n * - rescheduling itself if the entrypoint is superseded\n */\nexport function* processEntrypoint(\n this: IProcessEntrypointAction\n): SyncScenarioForAction<IProcessEntrypointAction> {\n const { only, log } = this.entrypoint;\n log('start processing (only: %o)', only);\n\n if (this.entrypoint.transformed) {\n log('already transformed, skip processing');\n return;\n }\n\n if (this.entrypoint.isProcessing) {\n log('already processing, skip duplicate request');\n return;\n }\n\n this.entrypoint.beginProcessing();\n\n try {\n using abortSignal = this.createAbortSignal();\n\n const result = yield* this.getNext(\n 'transform',\n this.entrypoint,\n undefined,\n abortSignal\n );\n\n this.entrypoint.assertNotSuperseded();\n\n this.entrypoint.setTransformResult(result);\n\n const supersededWith = this.entrypoint.applyDeferredSupersede();\n if (supersededWith) {\n log('processing finished, deferred only detected; schedule next attempt');\n yield* this.getNext('processEntrypoint', supersededWith, undefined, null);\n return;\n }\n\n log('entrypoint processing finished');\n } catch (e) {\n if (isAborted(e) && this.entrypoint.supersededWith) {\n log('processing aborted, schedule the next attempt');\n yield* this.getNext(\n 'processEntrypoint',\n this.entrypoint.supersededWith,\n undefined,\n null\n );\n\n return;\n }\n\n log(`Unhandled error: %O`, e);\n throw e;\n } finally {\n this.entrypoint.endProcessing();\n }\n}\n\nexport async function* processEntrypointAsync(\n this: IProcessEntrypointAction\n): AsyncScenarioForAction<IProcessEntrypointAction> {\n const { only, log } = this.entrypoint;\n log('start processing (only: %o)', only);\n\n if (this.entrypoint.transformed) {\n log('already transformed, skip processing');\n return;\n }\n\n if (this.entrypoint.isProcessing) {\n log('already processing, wait for existing request');\n await this.entrypoint.waitForProcessing();\n return;\n }\n\n this.entrypoint.beginProcessing();\n\n try {\n using abortSignal = this.createAbortSignal();\n\n const result = yield* this.getNext(\n 'transform',\n this.entrypoint,\n undefined,\n abortSignal\n );\n\n this.entrypoint.assertNotSuperseded();\n\n this.entrypoint.setTransformResult(result);\n\n const supersededWith = this.entrypoint.applyDeferredSupersede();\n if (supersededWith) {\n log('processing finished, deferred only detected; schedule next attempt');\n yield* this.getNext('processEntrypoint', supersededWith, undefined, null);\n return;\n }\n\n log('entrypoint processing finished');\n } catch (e) {\n if (isAborted(e) && this.entrypoint.supersededWith) {\n log('processing aborted, schedule the next attempt');\n yield* this.getNext(\n 'processEntrypoint',\n this.entrypoint.supersededWith,\n undefined,\n null\n );\n\n return;\n }\n\n log(`Unhandled error: %O`, e);\n throw e;\n } finally {\n this.entrypoint.endProcessing();\n }\n}\n"],"file":"processEntrypoint.js"}
|
|
@@ -1,76 +1,111 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import {
|
|
1
|
+
import { hasCachedWywPrevalExport } from "../../utils/hasCachedWywPrevalExport.js";
|
|
2
|
+
import { toImportKey } from "../../utils/importOverrides.js";
|
|
3
|
+
import { stripQueryAndHash } from "../../utils/parseRequest.js";
|
|
4
|
+
import { isSuperSet, mergeOnly } from "../Entrypoint.helpers.js";
|
|
4
5
|
const warnedSlowImportsByServices = new WeakMap();
|
|
5
6
|
function emitWarning(services, message) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
console.warn(message);
|
|
7
|
+
if (services.emitWarning) {
|
|
8
|
+
services.emitWarning(message);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
// eslint-disable-next-line no-console
|
|
12
|
+
console.warn(message);
|
|
13
13
|
}
|
|
14
14
|
function getWarnedSlowImports(services) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
const cached = warnedSlowImportsByServices.get(services);
|
|
16
|
+
if (cached) return cached;
|
|
17
|
+
const created = new Set();
|
|
18
|
+
warnedSlowImportsByServices.set(services, created);
|
|
19
|
+
return created;
|
|
20
20
|
}
|
|
21
21
|
function isWarningEnabled(value) {
|
|
22
|
-
|
|
22
|
+
return Boolean(value) && value !== "0" && value !== "false";
|
|
23
|
+
}
|
|
24
|
+
function hasLoop(name, parent, processed = []) {
|
|
25
|
+
if (parent.name === name || processed.includes(parent.name)) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
for (const nextParent of parent.parents) {
|
|
29
|
+
if (hasLoop(name, nextParent, [...processed, parent.name])) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
23
34
|
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Creates new entrypoints and emits processEntrypoint for each resolved import
|
|
27
|
-
*/
|
|
28
35
|
export function* processImports() {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
36
|
+
const slowImportWarningsEnabled = isWarningEnabled(process.env.WYW_WARN_SLOW_IMPORTS);
|
|
37
|
+
const slowImportThresholdMs = (() => {
|
|
38
|
+
const raw = process.env.WYW_WARN_SLOW_IMPORTS_MS;
|
|
39
|
+
if (!raw) return 50;
|
|
40
|
+
const parsed = Number(raw);
|
|
41
|
+
if (!Number.isFinite(parsed)) return 50;
|
|
42
|
+
return parsed;
|
|
43
|
+
})();
|
|
44
|
+
const warnedSlowImports = slowImportWarningsEnabled ? getWarnedSlowImports(this.services) : null;
|
|
45
|
+
const { root } = this.services.options;
|
|
46
|
+
const prepareStageRequiresEvaluatedDeps = this.entrypoint.only.includes("__wywPreval");
|
|
47
|
+
const skippedParentDependencySources = new Set(this.data.skipParentDependencyTracking ?? []);
|
|
48
|
+
for (const dependency of this.data.resolved) {
|
|
49
|
+
const { resolved, only } = dependency;
|
|
50
|
+
if (!resolved) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const cached = this.services.cache.get("entrypoints", resolved);
|
|
54
|
+
const shouldRequireWywPreval = prepareStageRequiresEvaluatedDeps && (!cached?.evaluated || cached.ignored || hasCachedWywPrevalExport(this.services, resolved, cached));
|
|
55
|
+
const requiredOnly = shouldRequireWywPreval ? mergeOnly(only, ["__wywPreval"]) : only;
|
|
56
|
+
if (!skippedParentDependencySources.has(dependency.source)) {
|
|
57
|
+
this.entrypoint.addDependency({
|
|
58
|
+
...dependency,
|
|
59
|
+
only: requiredOnly
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const canReuseTransformedDependency = !prepareStageRequiresEvaluatedDeps && Boolean(cached && !cached.evaluated && cached.transformed);
|
|
63
|
+
if (cached && (cached.evaluated || canReuseTransformedDependency) && isSuperSet(cached.only, requiredOnly) && !hasLoop(resolved, this.entrypoint) && !this.services.cache.checkFreshness(resolved, stripQueryAndHash(resolved))) {
|
|
64
|
+
if (Array.isArray(cached.parents)) {
|
|
65
|
+
if (!cached.parents.map((parent) => parent.name).includes(this.entrypoint.name)) {
|
|
66
|
+
cached.parents.push(this.entrypoint);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const nextEntrypoint = this.entrypoint.createChild(resolved, requiredOnly);
|
|
72
|
+
if (nextEntrypoint === "loop" || nextEntrypoint.ignored) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const startedAt = slowImportWarningsEnabled ? performance.now() : 0;
|
|
76
|
+
yield* this.getNext("processEntrypoint", nextEntrypoint, undefined, null);
|
|
77
|
+
if (slowImportWarningsEnabled && warnedSlowImports && slowImportThresholdMs > 0) {
|
|
78
|
+
const durationMs = performance.now() - startedAt;
|
|
79
|
+
if (durationMs >= slowImportThresholdMs) {
|
|
80
|
+
const { key: importKey } = toImportKey({
|
|
81
|
+
source: dependency.source,
|
|
82
|
+
resolved,
|
|
83
|
+
root
|
|
84
|
+
});
|
|
85
|
+
const dedupeKey = `${this.entrypoint.name}::${importKey}`;
|
|
86
|
+
if (!warnedSlowImports.has(dedupeKey)) {
|
|
87
|
+
warnedSlowImports.add(dedupeKey);
|
|
88
|
+
const warning = [
|
|
89
|
+
"[wyw-in-js] Slow import during prepare stage",
|
|
90
|
+
"",
|
|
91
|
+
`file: ${this.entrypoint.name}`,
|
|
92
|
+
`import: ${dependency.source}`,
|
|
93
|
+
`resolved: ${resolved}`,
|
|
94
|
+
`duration: ${durationMs.toFixed(1)}ms`,
|
|
95
|
+
"",
|
|
96
|
+
"tip: if this import is runtime-only or heavy, mock it during evaluation via importOverrides:",
|
|
97
|
+
" importOverrides: {",
|
|
98
|
+
` '${importKey}': { mock: './path/to/mock' },`,
|
|
99
|
+
" }",
|
|
100
|
+
"",
|
|
101
|
+
"note: importOverrides affects only build-time evaluation (it does not change your bundler runtime behavior)",
|
|
102
|
+
"",
|
|
103
|
+
`note: configure threshold with WYW_WARN_SLOW_IMPORTS_MS (current: ${slowImportThresholdMs}ms)`
|
|
104
|
+
].join("\n");
|
|
105
|
+
emitWarning(this.services, warning);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
75
110
|
}
|
|
76
|
-
//# sourceMappingURL=processImports.js.map
|
|
111
|
+
//# sourceMappingURL=processImports.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"mappings":"AAQA,SACE,gCAEK;AACP,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,YAAY,iBAAiB;AAQtC,MAAM,8BAA8B,IAAI,SAAgC;AAExE,SAAS,YAAY,UAAoB,SAAiB;AACxD,KAAI,SAAS,aAAa;AACxB,WAAS,YAAY,QAAQ;AAC7B;;;AAIF,SAAQ,KAAK,QAAQ;;AAGvB,SAAS,qBAAqB,UAAiC;CAC7D,MAAM,SAAS,4BAA4B,IAAI,SAAS;AACxD,KAAI,OAAQ,QAAO;CAEnB,MAAM,UAAU,IAAI,KAAa;AACjC,6BAA4B,IAAI,UAAU,QAAQ;AAClD,QAAO;;AAGT,SAAS,iBAAiB,OAAoC;AAC5D,QAAO,QAAQ,MAAM,IAAI,UAAU,OAAO,UAAU;;AAGtD,SAAS,QACP,MACA,QAIA,YAAsB,EAAE,EACf;AACT,KAAI,OAAO,SAAS,QAAQ,UAAU,SAAS,OAAO,KAAK,EAAE;AAC3D,SAAO;;AAGT,MAAK,MAAM,cAAc,OAAO,SAAS;AACvC,MACE,QAAQ,MAAM,YAA6B,CAAC,GAAG,WAAW,OAAO,KAAK,CAAC,EACvE;AACA,UAAO;;;AAIX,QAAO;;AAGT,OAAO,UAAU,iBAE+B;CAC9C,MAAM,4BAA4B,iBAChC,QAAQ,IAAI,sBACb;CACD,MAAM,+BAA+B;EACnC,MAAM,MAAM,QAAQ,IAAI;AACxB,MAAI,CAAC,IAAK,QAAO;EAEjB,MAAM,SAAS,OAAO,IAAI;AAC1B,MAAI,CAAC,OAAO,SAAS,OAAO,CAAE,QAAO;AACrC,SAAO;KACL;CAEJ,MAAM,oBAAoB,4BACtB,qBAAqB,KAAK,SAAS,GACnC;CAEJ,MAAM,EAAE,SAAS,KAAK,SAAS;CAC/B,MAAM,oCACJ,KAAK,WAAW,KAAK,SAAS,cAAc;CAC9C,MAAM,iCAAiC,IAAI,IACzC,KAAK,KAAK,gCAAgC,EAAE,CAC7C;AAED,MAAK,MAAM,cAAc,KAAK,KAAK,UAAU;EAC3C,MAAM,EAAE,UAAU,SAAS;AAC3B,MAAI,CAAC,UAAU;AACb;;EAGF,MAAM,SAAS,KAAK,SAAS,MAAM,IAAI,eAAe,SAAS;EAG/D,MAAM,yBACJ,sCACC,CAAC,QAAQ,aACR,OAAO,WACP,yBAAyB,KAAK,UAAU,UAAU,OAAO;EAC7D,MAAM,eAAe,yBACjB,UAAU,MAAM,CAAC,cAAc,CAAC,GAChC;AAEJ,MAAI,CAAC,+BAA+B,IAAI,WAAW,OAAO,EAAE;AAC1D,QAAK,WAAW,cAAc;IAC5B,GAAG;IACH,MAAM;IACP,CAAC;;EAGJ,MAAM,gCACJ,CAAC,qCACD,QAAQ,UAAU,CAAC,OAAO,aAAa,OAAO,YAAY;AAC5D,MACE,WACC,OAAO,aAAa,kCACrB,WAAW,OAAO,MAAM,aAAa,IACrC,CAAC,QAAQ,UAAU,KAAK,WAAW,IACnC,CAAC,KAAK,SAAS,MAAM,eAAe,UAAU,kBAAkB,SAAS,CAAC,EAC1E;AACA,OAAI,MAAM,QAAQ,OAAO,QAAQ,EAAE;AACjC,QACE,CAAC,OAAO,QACL,KAAK,WAAW,OAAO,KAAK,CAC5B,SAAS,KAAK,WAAW,KAAK,EACjC;AACA,YAAO,QAAQ,KAAK,KAAK,WAAW;;;AAIxC;;EAGF,MAAM,iBAAiB,KAAK,WAAW,YAAY,UAAU,aAAa;AAC1E,MAAI,mBAAmB,UAAU,eAAe,SAAS;AACvD;;EAGF,MAAM,YAAY,4BAA4B,YAAY,KAAK,GAAG;AAClE,SAAO,KAAK,QAAQ,qBAAqB,gBAAgB,WAAW,KAAK;AAEzE,MACE,6BACA,qBACA,wBAAwB,GACxB;GACA,MAAM,aAAa,YAAY,KAAK,GAAG;AACvC,OAAI,cAAc,uBAAuB;IACvC,MAAM,EAAE,KAAK,cAAc,YAAY;KACrC,QAAQ,WAAW;KACnB;KACA;KACD,CAAC;IACF,MAAM,YAAY,GAAG,KAAK,WAAW,KAAK,IAAI;AAE9C,QAAI,CAAC,kBAAkB,IAAI,UAAU,EAAE;AACrC,uBAAkB,IAAI,UAAU;KAEhC,MAAM,UAAU;MACd;MACA;MACA,SAAS,KAAK,WAAW;MACzB,WAAW,WAAW;MACtB,aAAa;MACb,aAAa,WAAW,QAAQ,EAAE,CAAC;MACnC;MACA;MACA;MACA,QAAQ,UAAU;MAClB;MACA;MACA;MACA;MACA,qEAAqE,sBAAsB;MAC5F,CAAC,KAAK,KAAK;AAEZ,iBAAY,KAAK,UAAU,QAAQ","names":[],"sources":["../../../src/transform/generators/processImports.ts"],"version":3,"sourcesContent":["/* eslint-disable no-continue */\n\nimport type {\n IProcessImportsAction,\n Services,\n SyncScenarioForAction,\n} from '../types';\n\nimport {\n hasCachedWywPrevalExport,\n type CachedEntrypointLike,\n} from '../../utils/hasCachedWywPrevalExport';\nimport { toImportKey } from '../../utils/importOverrides';\nimport { stripQueryAndHash } from '../../utils/parseRequest';\nimport { isSuperSet, mergeOnly } from '../Entrypoint.helpers';\n\ntype ProcessImportsCachedEntrypoint = CachedEntrypointLike & {\n only: string[];\n parents?: Array<{ name: string }>;\n transformed?: boolean;\n};\n\nconst warnedSlowImportsByServices = new WeakMap<Services, Set<string>>();\n\nfunction emitWarning(services: Services, message: string) {\n if (services.emitWarning) {\n services.emitWarning(message);\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn(message);\n}\n\nfunction getWarnedSlowImports(services: Services): Set<string> {\n const cached = warnedSlowImportsByServices.get(services);\n if (cached) return cached;\n\n const created = new Set<string>();\n warnedSlowImportsByServices.set(services, created);\n return created;\n}\n\nfunction isWarningEnabled(value: string | undefined): boolean {\n return Boolean(value) && value !== '0' && value !== 'false';\n}\n\nfunction hasLoop(\n name: string,\n parent: {\n name: string;\n parents: { name: string; parents: { name: string }[] }[];\n },\n processed: string[] = []\n): boolean {\n if (parent.name === name || processed.includes(parent.name)) {\n return true;\n }\n\n for (const nextParent of parent.parents) {\n if (\n hasLoop(name, nextParent as typeof parent, [...processed, parent.name])\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function* processImports(\n this: IProcessImportsAction\n): SyncScenarioForAction<IProcessImportsAction> {\n const slowImportWarningsEnabled = isWarningEnabled(\n process.env.WYW_WARN_SLOW_IMPORTS\n );\n const slowImportThresholdMs = (() => {\n const raw = process.env.WYW_WARN_SLOW_IMPORTS_MS;\n if (!raw) return 50;\n\n const parsed = Number(raw);\n if (!Number.isFinite(parsed)) return 50;\n return parsed;\n })();\n\n const warnedSlowImports = slowImportWarningsEnabled\n ? getWarnedSlowImports(this.services)\n : null;\n\n const { root } = this.services.options;\n const prepareStageRequiresEvaluatedDeps =\n this.entrypoint.only.includes('__wywPreval');\n const skippedParentDependencySources = new Set(\n this.data.skipParentDependencyTracking ?? []\n );\n\n for (const dependency of this.data.resolved) {\n const { resolved, only } = dependency;\n if (!resolved) {\n continue;\n }\n\n const cached = this.services.cache.get('entrypoints', resolved) as\n | ProcessImportsCachedEntrypoint\n | undefined;\n const shouldRequireWywPreval =\n prepareStageRequiresEvaluatedDeps &&\n (!cached?.evaluated ||\n cached.ignored ||\n hasCachedWywPrevalExport(this.services, resolved, cached));\n const requiredOnly = shouldRequireWywPreval\n ? mergeOnly(only, ['__wywPreval'])\n : only;\n\n if (!skippedParentDependencySources.has(dependency.source)) {\n this.entrypoint.addDependency({\n ...dependency,\n only: requiredOnly,\n });\n }\n\n const canReuseTransformedDependency =\n !prepareStageRequiresEvaluatedDeps &&\n Boolean(cached && !cached.evaluated && cached.transformed);\n if (\n cached &&\n (cached.evaluated || canReuseTransformedDependency) &&\n isSuperSet(cached.only, requiredOnly) &&\n !hasLoop(resolved, this.entrypoint) &&\n !this.services.cache.checkFreshness(resolved, stripQueryAndHash(resolved))\n ) {\n if (Array.isArray(cached.parents)) {\n if (\n !cached.parents\n .map((parent) => parent.name)\n .includes(this.entrypoint.name)\n ) {\n cached.parents.push(this.entrypoint);\n }\n }\n\n continue;\n }\n\n const nextEntrypoint = this.entrypoint.createChild(resolved, requiredOnly);\n if (nextEntrypoint === 'loop' || nextEntrypoint.ignored) {\n continue;\n }\n\n const startedAt = slowImportWarningsEnabled ? performance.now() : 0;\n yield* this.getNext('processEntrypoint', nextEntrypoint, undefined, null);\n\n if (\n slowImportWarningsEnabled &&\n warnedSlowImports &&\n slowImportThresholdMs > 0\n ) {\n const durationMs = performance.now() - startedAt;\n if (durationMs >= slowImportThresholdMs) {\n const { key: importKey } = toImportKey({\n source: dependency.source,\n resolved,\n root,\n });\n const dedupeKey = `${this.entrypoint.name}::${importKey}`;\n\n if (!warnedSlowImports.has(dedupeKey)) {\n warnedSlowImports.add(dedupeKey);\n\n const warning = [\n '[wyw-in-js] Slow import during prepare stage',\n '',\n `file: ${this.entrypoint.name}`,\n `import: ${dependency.source}`,\n `resolved: ${resolved}`,\n `duration: ${durationMs.toFixed(1)}ms`,\n '',\n 'tip: if this import is runtime-only or heavy, mock it during evaluation via importOverrides:',\n ' importOverrides: {',\n ` '${importKey}': { mock: './path/to/mock' },`,\n ' }',\n '',\n 'note: importOverrides affects only build-time evaluation (it does not change your bundler runtime behavior)',\n '',\n `note: configure threshold with WYW_WARN_SLOW_IMPORTS_MS (current: ${slowImportThresholdMs}ms)`,\n ].join('\\n');\n\n emitWarning(this.services, warning);\n }\n }\n }\n }\n}\n"],"file":"processImports.js"}
|