@wyw-in-js/transform 1.0.8 → 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 -28
- 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 -79
- package/esm/transform/generators/workflow.js.map +1 -1
- package/esm/transform/helpers/loadWywOptions.js +154 -73
- 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 +10 -0
- package/esm/utils/TransformDiagnostics.js.map +1 -0
- package/esm/utils/TransformMetadata.js +28 -10
- 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 +7 -8
- package/types/index.js +24 -77
- 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 +6 -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 -37
- package/types/transform/helpers/loadWywOptions.js +95 -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 +4 -24
- package/types/types.js +1 -2
- package/types/utils/EventEmitter.js +3 -9
- package/types/utils/ShakerMetadata.js +1 -5
- package/types/utils/TransformDiagnostics.d.ts +9 -0
- package/types/utils/TransformDiagnostics.js +11 -0
- package/types/utils/TransformMetadata.d.ts +22 -4
- package/types/utils/TransformMetadata.js +23 -8
- 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 -257
- 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 -90
- package/lib/transform/generators/workflow.js.map +0 -1
- package/lib/transform/helpers/loadWywOptions.js +0 -87
- 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/TransformMetadata.js +0 -19
- 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 -20
- 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
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Program } from 'oxc-parser';
|
|
2
|
+
type OxcSourceType = 'module' | 'unambiguous';
|
|
3
|
+
type ParsedOxc = {
|
|
4
|
+
module: {
|
|
5
|
+
hasModuleSyntax: boolean;
|
|
6
|
+
};
|
|
7
|
+
program: Program;
|
|
8
|
+
};
|
|
9
|
+
export declare const parseOxcCached: (filename: string, code: string, sourceType: OxcSourceType) => ParsedOxc;
|
|
10
|
+
export declare const parseOxcProgramCached: (filename: string, code: string, sourceType: OxcSourceType) => Program;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { parseSync } from 'oxc-parser';
|
|
2
|
+
const MAX_PARSE_CACHE_ENTRIES = 200;
|
|
3
|
+
const parseCache = new Map();
|
|
4
|
+
const getAstType = (filename) => filename.endsWith('.ts') || filename.endsWith('.tsx') ? 'ts' : 'js';
|
|
5
|
+
const makeCacheKey = (filename, code, sourceType) => `${sourceType}\0${filename}\0${code}`;
|
|
6
|
+
const setCachedParse = (key, value) => {
|
|
7
|
+
parseCache.set(key, value);
|
|
8
|
+
if (parseCache.size > MAX_PARSE_CACHE_ENTRIES) {
|
|
9
|
+
const oldestKey = parseCache.keys().next().value;
|
|
10
|
+
if (oldestKey) {
|
|
11
|
+
parseCache.delete(oldestKey);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return value;
|
|
15
|
+
};
|
|
16
|
+
export const parseOxcCached = (filename, code, sourceType) => {
|
|
17
|
+
const cacheKey = makeCacheKey(filename, code, sourceType);
|
|
18
|
+
const cached = parseCache.get(cacheKey);
|
|
19
|
+
if (cached) {
|
|
20
|
+
return cached;
|
|
21
|
+
}
|
|
22
|
+
const parsed = parseSync(filename, code, {
|
|
23
|
+
astType: getAstType(filename),
|
|
24
|
+
range: true,
|
|
25
|
+
sourceType,
|
|
26
|
+
});
|
|
27
|
+
const fatalError = parsed.errors.find((error) => error.severity === 'Error');
|
|
28
|
+
if (fatalError) {
|
|
29
|
+
throw new Error(fatalError.message);
|
|
30
|
+
}
|
|
31
|
+
return setCachedParse(cacheKey, {
|
|
32
|
+
module: {
|
|
33
|
+
hasModuleSyntax: parsed.module.hasModuleSyntax,
|
|
34
|
+
},
|
|
35
|
+
program: parsed.program,
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
export const parseOxcProgramCached = (filename, code, sourceType) => parseOxcCached(filename, code, sourceType).program;
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.stripQueryAndHash = exports.parseRequest = void 0;
|
|
4
1
|
const getFirstSuffixIndex = (request) => {
|
|
5
2
|
const queryIdx = request.indexOf('?');
|
|
6
3
|
const hashIdx = request.indexOf('#');
|
|
@@ -10,7 +7,7 @@ const getFirstSuffixIndex = (request) => {
|
|
|
10
7
|
return queryIdx;
|
|
11
8
|
return Math.min(queryIdx, hashIdx);
|
|
12
9
|
};
|
|
13
|
-
const parseRequest = (request) => {
|
|
10
|
+
export const parseRequest = (request) => {
|
|
14
11
|
const firstSuffixIndex = getFirstSuffixIndex(request);
|
|
15
12
|
if (firstSuffixIndex === -1) {
|
|
16
13
|
return { filename: request, hash: '', query: '' };
|
|
@@ -24,6 +21,4 @@ const parseRequest = (request) => {
|
|
|
24
21
|
const hash = hashIdx === -1 ? '' : request.slice(hashIdx + 1);
|
|
25
22
|
return { filename, hash, query };
|
|
26
23
|
};
|
|
27
|
-
|
|
28
|
-
const stripQueryAndHash = (request) => (0, exports.parseRequest)(request).filename;
|
|
29
|
-
exports.stripQueryAndHash = stripQueryAndHash;
|
|
24
|
+
export const stripQueryAndHash = (request) => parseRequest(request).filename;
|
package/types/utils/peek.js
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseProcessor } from '@wyw-in-js/processor-utils';
|
|
2
|
+
import type { TagSource } from '@wyw-in-js/processor-utils';
|
|
3
|
+
import type { StrictOptions } from '@wyw-in-js/shared';
|
|
4
|
+
export type ProcessorClass = new (...args: ConstructorParameters<typeof BaseProcessor>) => BaseProcessor;
|
|
5
|
+
export declare const getProcessorForImport: ({ imported, source }: {
|
|
6
|
+
imported: string;
|
|
7
|
+
source: string;
|
|
8
|
+
}, filename: string | null | undefined, options: Pick<StrictOptions, "tagResolver">) => [ProcessorClass | null, TagSource];
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { createRequire } from 'module';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { BaseProcessor } from '@wyw-in-js/processor-utils';
|
|
5
|
+
import { findPackageJSON, syncResolve } from '@wyw-in-js/shared';
|
|
6
|
+
const nodeRequire = createRequire(import.meta.url);
|
|
7
|
+
const definedTagsCache = new Map();
|
|
8
|
+
const resolvedTagResolverSourceCache = new Map();
|
|
9
|
+
const packageProcessorLookupCache = new Map();
|
|
10
|
+
const tagResolverProcessorLookupCache = new WeakMap();
|
|
11
|
+
const createTagResolverLookupCacheKey = (source, imported, filename) => `${filename ?? ''}\0${source}\0${imported}`;
|
|
12
|
+
const createPackageLookupCacheKey = (source, imported) => `${source}\0${imported}`;
|
|
13
|
+
const URL_SCHEME_RE = /^[A-Za-z][A-Za-z\d+.-]*:/;
|
|
14
|
+
const isPackageLookupCandidate = (source) => {
|
|
15
|
+
if (!source ||
|
|
16
|
+
source.startsWith('.') ||
|
|
17
|
+
source.startsWith('/') ||
|
|
18
|
+
source.startsWith('\\') ||
|
|
19
|
+
source.startsWith('\0') ||
|
|
20
|
+
source.startsWith('@/') ||
|
|
21
|
+
source.startsWith('~/') ||
|
|
22
|
+
source.startsWith('#') ||
|
|
23
|
+
source.includes('?') ||
|
|
24
|
+
source.includes('#') ||
|
|
25
|
+
URL_SCHEME_RE.test(source)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
if (source.startsWith('@')) {
|
|
29
|
+
const [scope, pkg] = source.split('/', 2);
|
|
30
|
+
return scope.length > 1 && !!pkg;
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
};
|
|
34
|
+
const getTagResolverLookupCache = (tagResolver) => {
|
|
35
|
+
const existing = tagResolverProcessorLookupCache.get(tagResolver);
|
|
36
|
+
if (existing) {
|
|
37
|
+
return existing;
|
|
38
|
+
}
|
|
39
|
+
const created = new Map();
|
|
40
|
+
tagResolverProcessorLookupCache.set(tagResolver, created);
|
|
41
|
+
return created;
|
|
42
|
+
};
|
|
43
|
+
const getResolvedTagResolverSource = (source, sourceFile) => {
|
|
44
|
+
if (!sourceFile) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
const key = `${sourceFile}\0${source}`;
|
|
48
|
+
if (resolvedTagResolverSourceCache.has(key)) {
|
|
49
|
+
return resolvedTagResolverSourceCache.get(key);
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const resolved = syncResolve(source, sourceFile, []);
|
|
53
|
+
resolvedTagResolverSourceCache.set(key, resolved);
|
|
54
|
+
return resolved;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
resolvedTagResolverSourceCache.set(key, undefined);
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const getDefinedTagsFromPackage = (pkgName, filename) => {
|
|
62
|
+
if (definedTagsCache.has(pkgName)) {
|
|
63
|
+
return definedTagsCache.get(pkgName);
|
|
64
|
+
}
|
|
65
|
+
const packageJSONPath = findPackageJSON(pkgName, filename);
|
|
66
|
+
if (!packageJSONPath) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
const packageDir = dirname(packageJSONPath);
|
|
70
|
+
const packageJSON = JSON.parse(readFileSync(packageJSONPath, 'utf8'));
|
|
71
|
+
const definedTags = packageJSON['wyw-in-js']?.tags;
|
|
72
|
+
const normalizedTags = definedTags
|
|
73
|
+
? Object.entries(definedTags).reduce((acc, [key, value]) => ({
|
|
74
|
+
...acc,
|
|
75
|
+
[key]: value.startsWith('.')
|
|
76
|
+
? join(packageDir, value)
|
|
77
|
+
: nodeRequire.resolve(value, { paths: [packageDir] }),
|
|
78
|
+
}), {})
|
|
79
|
+
: undefined;
|
|
80
|
+
definedTagsCache.set(pkgName, normalizedTags);
|
|
81
|
+
return normalizedTags;
|
|
82
|
+
};
|
|
83
|
+
const isValidProcessorClass = (module) => module instanceof BaseProcessor.constructor;
|
|
84
|
+
const getProcessorFromPackage = (packageName, tagName, filename) => {
|
|
85
|
+
const definedTags = getDefinedTagsFromPackage(packageName, filename);
|
|
86
|
+
const processorPath = definedTags?.[tagName];
|
|
87
|
+
if (!processorPath) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
const Processor = nodeRequire(processorPath).default;
|
|
91
|
+
if (!isValidProcessorClass(Processor)) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
return Processor;
|
|
95
|
+
};
|
|
96
|
+
const getProcessorFromFile = (processorPath) => {
|
|
97
|
+
const Processor = nodeRequire(processorPath).default;
|
|
98
|
+
if (!isValidProcessorClass(Processor)) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
return Processor;
|
|
102
|
+
};
|
|
103
|
+
export const getProcessorForImport = ({ imported, source }, filename, options) => {
|
|
104
|
+
const { tagResolver } = options;
|
|
105
|
+
const packageLookupCandidate = isPackageLookupCandidate(source);
|
|
106
|
+
if (!tagResolver && !packageLookupCandidate) {
|
|
107
|
+
return [null, { imported, source }];
|
|
108
|
+
}
|
|
109
|
+
const cacheKey = tagResolver
|
|
110
|
+
? createTagResolverLookupCacheKey(source, imported, filename)
|
|
111
|
+
: createPackageLookupCacheKey(source, imported);
|
|
112
|
+
const lookupCache = tagResolver
|
|
113
|
+
? getTagResolverLookupCache(tagResolver)
|
|
114
|
+
: packageProcessorLookupCache;
|
|
115
|
+
if (lookupCache.has(cacheKey)) {
|
|
116
|
+
return [lookupCache.get(cacheKey) ?? null, { imported, source }];
|
|
117
|
+
}
|
|
118
|
+
let customFile = null;
|
|
119
|
+
if (tagResolver) {
|
|
120
|
+
const tagResolverMeta = {
|
|
121
|
+
sourceFile: filename,
|
|
122
|
+
resolvedSource: getResolvedTagResolverSource(source, filename),
|
|
123
|
+
};
|
|
124
|
+
customFile = tagResolver(source, imported, tagResolverMeta);
|
|
125
|
+
}
|
|
126
|
+
let processor = null;
|
|
127
|
+
if (customFile) {
|
|
128
|
+
processor = getProcessorFromFile(customFile);
|
|
129
|
+
}
|
|
130
|
+
else if (packageLookupCandidate) {
|
|
131
|
+
processor = getProcessorFromPackage(source, imported, filename);
|
|
132
|
+
}
|
|
133
|
+
lookupCache.set(cacheKey, processor);
|
|
134
|
+
return [processor, { imported, source }];
|
|
135
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type ResolveFilenameParent = {
|
|
2
|
+
filename: string;
|
|
3
|
+
id: string;
|
|
4
|
+
paths: string[];
|
|
5
|
+
};
|
|
6
|
+
type ResolveFilenameModuleImplementation = {
|
|
7
|
+
_resolveFilename: (id: string, options: ResolveFilenameParent, isMain?: boolean, resolveOptions?: {
|
|
8
|
+
conditions?: Set<string>;
|
|
9
|
+
}) => string;
|
|
10
|
+
};
|
|
11
|
+
export declare const resolveFilenameWithConditions: (moduleImpl: ResolveFilenameModuleImplementation, id: string, parent: ResolveFilenameParent, conditions?: Set<string>) => string;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { spawnSync } from 'child_process';
|
|
2
|
+
import NativeModule from 'module';
|
|
3
|
+
const NODE_CONDITIONAL_RESOLVE_SCRIPT = String.raw `
|
|
4
|
+
const fs = require('node:fs');
|
|
5
|
+
const Module = require('node:module');
|
|
6
|
+
|
|
7
|
+
const input = JSON.parse(fs.readFileSync(0, 'utf8'));
|
|
8
|
+
|
|
9
|
+
try {
|
|
10
|
+
const resolved = Module._resolveFilename(
|
|
11
|
+
input.id,
|
|
12
|
+
input.parent,
|
|
13
|
+
false,
|
|
14
|
+
input.conditions ? { conditions: new Set(input.conditions) } : undefined
|
|
15
|
+
);
|
|
16
|
+
fs.writeFileSync(1, JSON.stringify({ resolved }));
|
|
17
|
+
} catch (error) {
|
|
18
|
+
fs.writeFileSync(
|
|
19
|
+
1,
|
|
20
|
+
JSON.stringify({
|
|
21
|
+
error: {
|
|
22
|
+
code:
|
|
23
|
+
error && typeof error === 'object' && 'code' in error
|
|
24
|
+
? error.code
|
|
25
|
+
: undefined,
|
|
26
|
+
message: error instanceof Error ? error.message : String(error),
|
|
27
|
+
},
|
|
28
|
+
})
|
|
29
|
+
);
|
|
30
|
+
process.exitCode = 1;
|
|
31
|
+
}
|
|
32
|
+
`;
|
|
33
|
+
const isBunRuntime = () => process.execPath.includes('bun');
|
|
34
|
+
const nativeResolveFilename = NativeModule._resolveFilename;
|
|
35
|
+
const resolveWithNodeProcess = (id, parent, conditions) => {
|
|
36
|
+
const nodeBinary = process.env.WYW_NODE_BINARY || 'node';
|
|
37
|
+
const result = spawnSync(nodeBinary, ['-e', NODE_CONDITIONAL_RESOLVE_SCRIPT], {
|
|
38
|
+
encoding: 'utf8',
|
|
39
|
+
input: JSON.stringify({
|
|
40
|
+
conditions: [...conditions],
|
|
41
|
+
id,
|
|
42
|
+
parent,
|
|
43
|
+
}),
|
|
44
|
+
maxBuffer: 1024 * 1024,
|
|
45
|
+
});
|
|
46
|
+
if (result.error) {
|
|
47
|
+
throw result.error;
|
|
48
|
+
}
|
|
49
|
+
let parsed = null;
|
|
50
|
+
const stdout = result.stdout.trim();
|
|
51
|
+
if (stdout) {
|
|
52
|
+
try {
|
|
53
|
+
parsed = JSON.parse(stdout);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
throw new Error([
|
|
57
|
+
'[wyw-in-js] Failed to parse Node resolver fallback output.',
|
|
58
|
+
`stdout: ${stdout}`,
|
|
59
|
+
result.stderr ? `stderr: ${result.stderr.trim()}` : '',
|
|
60
|
+
]
|
|
61
|
+
.filter(Boolean)
|
|
62
|
+
.join('\n'));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (parsed?.error) {
|
|
66
|
+
const error = new Error(parsed.error.message);
|
|
67
|
+
error.code = parsed.error.code;
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
if (result.status !== 0 || !parsed?.resolved) {
|
|
71
|
+
throw new Error([
|
|
72
|
+
'[wyw-in-js] Node resolver fallback failed.',
|
|
73
|
+
`status: ${result.status ?? 'null'}`,
|
|
74
|
+
result.stderr ? `stderr: ${result.stderr.trim()}` : '',
|
|
75
|
+
]
|
|
76
|
+
.filter(Boolean)
|
|
77
|
+
.join('\n'));
|
|
78
|
+
}
|
|
79
|
+
return parsed.resolved;
|
|
80
|
+
};
|
|
81
|
+
export const resolveFilenameWithConditions = (moduleImpl, id, parent, conditions) => {
|
|
82
|
+
const resolveOptions = conditions ? { conditions } : undefined;
|
|
83
|
+
const usesNativeResolver = moduleImpl._resolveFilename === nativeResolveFilename;
|
|
84
|
+
if (!conditions || !isBunRuntime() || !usesNativeResolver) {
|
|
85
|
+
return moduleImpl._resolveFilename(id, parent, false, resolveOptions);
|
|
86
|
+
}
|
|
87
|
+
// Bun crashes on macOS/Silicon in this exact path:
|
|
88
|
+
// Module._resolveFilename(specifier, parent, false, { conditions })
|
|
89
|
+
// We reproduced it both with a tiny standalone script and through the
|
|
90
|
+
// `EvalBroker > passes conditionNames to node fallback resolution` test,
|
|
91
|
+
// including on Bun 1.3.13. Keep this fallback narrow: only conditioned
|
|
92
|
+
// resolution under Bun goes through a short-lived Node subprocess.
|
|
93
|
+
//
|
|
94
|
+
// Cleanup criteria:
|
|
95
|
+
// 1. Bun passes the minimal local `_resolveFilename(..., { conditions })`
|
|
96
|
+
// repro on macOS without segfaulting.
|
|
97
|
+
// 2. The conditionNames runner path passes without this fallback.
|
|
98
|
+
//
|
|
99
|
+
// As of 2026-04-20 we did not find an exact open upstream Bun issue for this
|
|
100
|
+
// `_resolveFilename(..., { conditions })` crash, so keep the comment factual
|
|
101
|
+
// and the workaround self-contained.
|
|
102
|
+
return resolveWithNodeProcess(id, parent, conditions);
|
|
103
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as vm from 'vm';
|
|
2
2
|
import type { FeatureFlags, StrictOptions } from '@wyw-in-js/shared';
|
|
3
|
-
export declare function createVmContext(filename: string, features: FeatureFlags<'happyDOM'>, additionalContext: Partial<vm.Context>, overrideContext?: StrictOptions['overrideContext']): {
|
|
3
|
+
export declare function createVmContext(filename: string, features: FeatureFlags<'happyDOM'>, additionalContext: Partial<vm.Context>, overrideContext?: StrictOptions['overrideContext']): Promise<{
|
|
4
4
|
context: vm.Context;
|
|
5
5
|
teardown: (() => void) | (() => void);
|
|
6
|
-
}
|
|
6
|
+
}>;
|
|
@@ -1,47 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.createVmContext = createVmContext;
|
|
37
|
-
const vm = __importStar(require("vm"));
|
|
38
|
-
const shared_1 = require("@wyw-in-js/shared");
|
|
39
|
-
const process = __importStar(require("./process"));
|
|
1
|
+
import * as vm from 'vm';
|
|
2
|
+
import { isFeatureEnabled } from '@wyw-in-js/shared';
|
|
3
|
+
import * as process from './process';
|
|
40
4
|
const NOOP = () => { };
|
|
41
5
|
const IMPORT_META_ENV = '__wyw_import_meta_env';
|
|
42
6
|
const HAPPY_DOM_REQUIRE_HOOK = '__wyw_requireHappyDom';
|
|
43
7
|
let importMetaEnvWarned = false;
|
|
44
|
-
let
|
|
8
|
+
let happyDomLoadWarned = false;
|
|
45
9
|
let happyDomUnavailable = false;
|
|
46
10
|
function isErrRequireEsm(error) {
|
|
47
11
|
return (typeof error === 'object' &&
|
|
@@ -93,19 +57,23 @@ function createImportMetaEnvProxy() {
|
|
|
93
57
|
},
|
|
94
58
|
});
|
|
95
59
|
}
|
|
96
|
-
|
|
60
|
+
let happyDomImportPromise = null;
|
|
61
|
+
async function loadHappyDom() {
|
|
97
62
|
const hook = globalThis[HAPPY_DOM_REQUIRE_HOOK];
|
|
98
63
|
if (typeof hook === 'function') {
|
|
99
|
-
|
|
64
|
+
const result = hook();
|
|
65
|
+
return Promise.resolve(result);
|
|
100
66
|
}
|
|
101
|
-
|
|
102
|
-
|
|
67
|
+
if (!happyDomImportPromise) {
|
|
68
|
+
happyDomImportPromise = import('happy-dom');
|
|
69
|
+
}
|
|
70
|
+
return happyDomImportPromise;
|
|
103
71
|
}
|
|
104
|
-
function createWindow() {
|
|
72
|
+
async function createWindow() {
|
|
105
73
|
if (happyDomUnavailable)
|
|
106
74
|
return undefined;
|
|
107
75
|
try {
|
|
108
|
-
const { Window, GlobalWindow } =
|
|
76
|
+
const { Window, GlobalWindow } = await loadHappyDom();
|
|
109
77
|
const HappyWindow = GlobalWindow || Window;
|
|
110
78
|
const win = new HappyWindow();
|
|
111
79
|
// TODO: browser doesn't expose Buffer, but a lot of dependencies use it
|
|
@@ -114,27 +82,22 @@ function createWindow() {
|
|
|
114
82
|
return win;
|
|
115
83
|
}
|
|
116
84
|
catch (error) {
|
|
117
|
-
if (
|
|
118
|
-
|
|
85
|
+
if (isErrRequireEsm(error)) {
|
|
86
|
+
// This can happen if a custom hook still uses require() for ESM.
|
|
119
87
|
}
|
|
120
|
-
|
|
121
|
-
'function';
|
|
122
|
-
if (!hasCustomRequireHook) {
|
|
88
|
+
else if (!happyDomUnavailable) {
|
|
123
89
|
happyDomUnavailable = true;
|
|
124
90
|
}
|
|
125
|
-
if (
|
|
91
|
+
if (happyDomLoadWarned)
|
|
126
92
|
return undefined;
|
|
127
|
-
|
|
93
|
+
happyDomLoadWarned = true;
|
|
128
94
|
// eslint-disable-next-line no-console
|
|
129
95
|
console.warn([
|
|
130
96
|
`[wyw-in-js] DOM emulation is enabled (features.happyDOM), but "happy-dom" could not be loaded in this build-time runtime.`,
|
|
131
|
-
`This usually happens because "happy-dom" is ESM-only and cannot be loaded via require() in a CJS build.`,
|
|
132
|
-
``,
|
|
133
97
|
`WyW will continue without DOM emulation (as if features.happyDOM:false).`,
|
|
134
98
|
``,
|
|
135
99
|
`To silence this warning: set features: { happyDOM: false }.`,
|
|
136
|
-
`To
|
|
137
|
-
`or a runtime that supports require(ESM) (Node 24+).`,
|
|
100
|
+
`To restore DOM emulation, ensure "happy-dom" can be imported in the build-time runtime.`,
|
|
138
101
|
].join('\n'));
|
|
139
102
|
return undefined;
|
|
140
103
|
}
|
|
@@ -177,8 +140,8 @@ function createNothing() {
|
|
|
177
140
|
window: undefined,
|
|
178
141
|
};
|
|
179
142
|
}
|
|
180
|
-
function createHappyDOMWindow() {
|
|
181
|
-
const win = createWindow();
|
|
143
|
+
async function createHappyDOMWindow() {
|
|
144
|
+
const win = await createWindow();
|
|
182
145
|
if (!win)
|
|
183
146
|
return createNothing();
|
|
184
147
|
return {
|
|
@@ -188,10 +151,10 @@ function createHappyDOMWindow() {
|
|
|
188
151
|
window: win,
|
|
189
152
|
};
|
|
190
153
|
}
|
|
191
|
-
function createVmContext(filename, features, additionalContext, overrideContext = (i) => i) {
|
|
192
|
-
const isHappyDOMEnabled =
|
|
154
|
+
export async function createVmContext(filename, features, additionalContext, overrideContext = (i) => i) {
|
|
155
|
+
const isHappyDOMEnabled = isFeatureEnabled(features, 'happyDOM', filename);
|
|
193
156
|
const { teardown, window } = isHappyDOMEnabled
|
|
194
|
-
? createHappyDOMWindow()
|
|
157
|
+
? await createHappyDOMWindow()
|
|
195
158
|
: createNothing();
|
|
196
159
|
const envContext = {
|
|
197
160
|
[IMPORT_META_ENV]: createImportMetaEnvProxy(),
|
package/types/vm/process.js
CHANGED
|
@@ -1,32 +1,26 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.env = exports.features = exports.uvCounters = exports.memoryUsage = exports.uptime = exports.dlopen = exports.umask = exports.chdir = exports.kill = exports.exit = exports.cwd = exports.binding = exports.argv = exports.browser = exports.pid = exports.title = exports.execPath = exports.arch = exports.platform = exports.nextTick = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* It contains API for mocked process variable available in node environment used to evaluate scripts with node's `vm` in ./module.ts
|
|
6
3
|
*/
|
|
7
|
-
const nextTick = (fn) => setTimeout(fn, 0);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const binding = function binding() {
|
|
4
|
+
export const nextTick = (fn) => setTimeout(fn, 0);
|
|
5
|
+
export const platform = 'browser';
|
|
6
|
+
export const arch = 'browser';
|
|
7
|
+
export const execPath = 'browser';
|
|
8
|
+
export const title = 'browser';
|
|
9
|
+
export const pid = 1;
|
|
10
|
+
export const browser = true;
|
|
11
|
+
export const argv = [];
|
|
12
|
+
export const binding = function binding() {
|
|
17
13
|
throw new Error('No such module. (Possibly not yet loaded)');
|
|
18
14
|
};
|
|
19
|
-
|
|
20
|
-
const cwd = () => '/';
|
|
21
|
-
exports.cwd = cwd;
|
|
15
|
+
export const cwd = () => '/';
|
|
22
16
|
const noop = () => { };
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
17
|
+
export const exit = noop;
|
|
18
|
+
export const kill = noop;
|
|
19
|
+
export const chdir = noop;
|
|
20
|
+
export const umask = noop;
|
|
21
|
+
export const dlopen = noop;
|
|
22
|
+
export const uptime = noop;
|
|
23
|
+
export const memoryUsage = noop;
|
|
24
|
+
export const uvCounters = noop;
|
|
25
|
+
export const features = {};
|
|
26
|
+
export const { env } = process;
|
package/esm/babel.js
DELETED
package/esm/babel.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"babel.js","names":[],"sources":["../src/babel.ts"],"sourcesContent":["import type core from '@babel/core';\n\nexport type Core = typeof core;\n"],"mappings":"","ignoreList":[]}
|