@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
package/types/cache.js
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
exports.TransformCacheCollection = void 0;
|
|
7
|
-
const crypto_1 = require("crypto");
|
|
8
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
-
const shared_1 = require("@wyw-in-js/shared");
|
|
10
|
-
const getFileIdx_1 = require("./utils/getFileIdx");
|
|
11
|
-
const parseRequest_1 = require("./utils/parseRequest");
|
|
1
|
+
import { createHash } from 'crypto';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import { logger } from '@wyw-in-js/shared';
|
|
4
|
+
import { getFileIdx } from './utils/getFileIdx';
|
|
5
|
+
import { stripQueryAndHash } from './utils/parseRequest';
|
|
12
6
|
function hashContent(content) {
|
|
13
|
-
return
|
|
7
|
+
return createHash('sha256').update(content).digest('hex');
|
|
14
8
|
}
|
|
15
9
|
function isMissingFileError(error) {
|
|
16
10
|
if (!error || typeof error !== 'object') {
|
|
@@ -19,13 +13,13 @@ function isMissingFileError(error) {
|
|
|
19
13
|
const { code } = error;
|
|
20
14
|
return code === 'ENOENT' || code === 'ENOTDIR';
|
|
21
15
|
}
|
|
22
|
-
const cacheLogger =
|
|
16
|
+
const cacheLogger = logger.extend('cache');
|
|
23
17
|
const cacheNames = ['barrelManifests', 'entrypoints', 'exports'];
|
|
24
18
|
const loggers = cacheNames.reduce((acc, key) => ({
|
|
25
19
|
...acc,
|
|
26
20
|
[key]: cacheLogger.extend(key),
|
|
27
21
|
}), {});
|
|
28
|
-
class TransformCacheCollection {
|
|
22
|
+
export class TransformCacheCollection {
|
|
29
23
|
barrelManifests;
|
|
30
24
|
entrypoints;
|
|
31
25
|
exports;
|
|
@@ -33,30 +27,67 @@ class TransformCacheCollection {
|
|
|
33
27
|
contentHashes = new Map();
|
|
34
28
|
fileMtimes = new Map();
|
|
35
29
|
exportDependencies = new Map();
|
|
30
|
+
keySalt = null;
|
|
31
|
+
invalidatedFiles = new Map();
|
|
32
|
+
consumedInvalidationVersions = new Map();
|
|
36
33
|
constructor(caches = {}) {
|
|
37
34
|
this.barrelManifests = caches.barrelManifests || new Map();
|
|
38
35
|
this.entrypoints = caches.entrypoints || new Map();
|
|
39
36
|
this.exports = caches.exports || new Map();
|
|
40
37
|
}
|
|
38
|
+
setKeySalt(keySalt) {
|
|
39
|
+
if (this.keySalt === keySalt)
|
|
40
|
+
return;
|
|
41
|
+
const prevKeySalt = this.keySalt;
|
|
42
|
+
this.keySalt = keySalt;
|
|
43
|
+
if (prevKeySalt === null && keySalt) {
|
|
44
|
+
const migrate = (cache) => {
|
|
45
|
+
const entries = Array.from(cache.entries());
|
|
46
|
+
cache.clear();
|
|
47
|
+
entries.forEach(([key, value]) => {
|
|
48
|
+
cache.set(this.getKey(key), value);
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
migrate(this.barrelManifests);
|
|
52
|
+
migrate(this.entrypoints);
|
|
53
|
+
migrate(this.exports);
|
|
54
|
+
migrate(this.barrelManifestDependencies);
|
|
55
|
+
migrate(this.exportDependencies);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this.barrelManifests.clear();
|
|
59
|
+
this.entrypoints.clear();
|
|
60
|
+
this.exports.clear();
|
|
61
|
+
this.clearCacheDependencies('all');
|
|
62
|
+
}
|
|
63
|
+
getKey(key) {
|
|
64
|
+
if (!this.keySalt)
|
|
65
|
+
return key;
|
|
66
|
+
return `${key}::${this.keySalt}`;
|
|
67
|
+
}
|
|
68
|
+
getKeySalt() {
|
|
69
|
+
return this.keySalt;
|
|
70
|
+
}
|
|
41
71
|
add(cacheName, key, value) {
|
|
42
72
|
const cache = this[cacheName];
|
|
43
|
-
|
|
73
|
+
const cacheKey = this.getKey(key);
|
|
74
|
+
loggers[cacheName]('%s:add %s %f', getFileIdx(key), key, () => {
|
|
44
75
|
if (value === undefined) {
|
|
45
|
-
return cache.has(
|
|
76
|
+
return cache.has(cacheKey) ? 'removed' : 'noop';
|
|
46
77
|
}
|
|
47
|
-
if (!cache.has(
|
|
78
|
+
if (!cache.has(cacheKey)) {
|
|
48
79
|
return 'added';
|
|
49
80
|
}
|
|
50
|
-
return cache.get(
|
|
81
|
+
return cache.get(cacheKey) === value ? 'unchanged' : 'updated';
|
|
51
82
|
});
|
|
52
83
|
if (value === undefined) {
|
|
53
|
-
cache.delete(
|
|
84
|
+
cache.delete(cacheKey);
|
|
54
85
|
this.contentHashes.delete(key);
|
|
55
86
|
this.clearCacheDependencies(cacheName, key);
|
|
56
87
|
return;
|
|
57
88
|
}
|
|
58
89
|
this.clearCacheDependencies(cacheName, key);
|
|
59
|
-
cache.set(
|
|
90
|
+
cache.set(cacheKey, value);
|
|
60
91
|
if ('initialCode' in value) {
|
|
61
92
|
const maybeOriginalCode = value
|
|
62
93
|
.originalCode;
|
|
@@ -74,7 +105,7 @@ class TransformCacheCollection {
|
|
|
74
105
|
return;
|
|
75
106
|
}
|
|
76
107
|
try {
|
|
77
|
-
const fileContent =
|
|
108
|
+
const fileContent = fs.readFileSync(stripQueryAndHash(key), 'utf8');
|
|
78
109
|
this.setContentHash(key, source, hashContent(fileContent));
|
|
79
110
|
}
|
|
80
111
|
catch {
|
|
@@ -82,9 +113,9 @@ class TransformCacheCollection {
|
|
|
82
113
|
}
|
|
83
114
|
return;
|
|
84
115
|
}
|
|
85
|
-
if (cacheName === 'barrelManifests') {
|
|
116
|
+
if (cacheName === 'barrelManifests' || cacheName === 'exports') {
|
|
86
117
|
try {
|
|
87
|
-
const fileContent =
|
|
118
|
+
const fileContent = fs.readFileSync(stripQueryAndHash(key), 'utf8');
|
|
88
119
|
this.setContentHash(key, 'fs', hashContent(fileContent));
|
|
89
120
|
}
|
|
90
121
|
catch {
|
|
@@ -109,76 +140,65 @@ class TransformCacheCollection {
|
|
|
109
140
|
}
|
|
110
141
|
get(cacheName, key) {
|
|
111
142
|
const cache = this[cacheName];
|
|
112
|
-
const res = cache.get(key);
|
|
143
|
+
const res = cache.get(this.getKey(key));
|
|
113
144
|
loggers[cacheName]('get', key, res === undefined ? 'miss' : 'hit');
|
|
114
145
|
return res;
|
|
115
146
|
}
|
|
116
147
|
has(cacheName, key) {
|
|
117
148
|
const cache = this[cacheName];
|
|
118
|
-
const res = cache.has(key);
|
|
149
|
+
const res = cache.has(this.getKey(key));
|
|
119
150
|
loggers[cacheName]('has', key, res);
|
|
120
151
|
return res;
|
|
121
152
|
}
|
|
122
153
|
invalidate(cacheName, key) {
|
|
123
154
|
const cache = this[cacheName];
|
|
124
|
-
|
|
155
|
+
const cacheKey = this.getKey(key);
|
|
156
|
+
if (!cache.has(cacheKey)) {
|
|
125
157
|
return;
|
|
126
158
|
}
|
|
127
159
|
loggers[cacheName]('invalidate', key);
|
|
128
|
-
cache.delete(
|
|
160
|
+
cache.delete(cacheKey);
|
|
129
161
|
this.clearCacheDependencies(cacheName, key);
|
|
130
162
|
}
|
|
131
163
|
invalidateForFile(filename) {
|
|
132
164
|
cacheNames.forEach((cacheName) => {
|
|
133
165
|
this.invalidate(cacheName, filename);
|
|
134
166
|
});
|
|
167
|
+
const key = stripQueryAndHash(filename);
|
|
168
|
+
const version = this.invalidatedFiles.get(key) ?? 0;
|
|
169
|
+
this.invalidatedFiles.set(key, version + 1);
|
|
135
170
|
}
|
|
136
|
-
|
|
171
|
+
consumeInvalidation(filename) {
|
|
172
|
+
const key = stripQueryAndHash(filename);
|
|
173
|
+
const invalidationVersion = this.invalidatedFiles.get(key);
|
|
174
|
+
if (invalidationVersion === undefined) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
const consumedVersion = this.consumedInvalidationVersions.get(filename) ?? 0;
|
|
178
|
+
if (consumedVersion >= invalidationVersion) {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
this.consumedInvalidationVersions.set(filename, invalidationVersion);
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
invalidateIfChanged(filename, content, previousVisitedFiles, source = 'loaded', changedFiles = new Set(), dependencyChangeMemo = new Map(), forceContentCheck = false) {
|
|
137
185
|
if (changedFiles.has(filename)) {
|
|
138
186
|
return true;
|
|
139
187
|
}
|
|
140
188
|
const visitedFiles = new Set(previousVisitedFiles);
|
|
141
189
|
const fileEntrypoint = this.get('entrypoints', filename);
|
|
142
190
|
let anyDepChanged = false;
|
|
143
|
-
// We need to check all dependencies of the file
|
|
144
|
-
// because they might have changed as well.
|
|
145
191
|
if (!visitedFiles.has(filename) &&
|
|
146
192
|
(fileEntrypoint || this.hasCachedDependencies(filename))) {
|
|
147
193
|
visitedFiles.add(filename);
|
|
148
194
|
const invalidateOnDependencyChange = fileEntrypoint?.invalidateOnDependencyChange;
|
|
149
|
-
const dependenciesToCheck =
|
|
150
|
-
for (const [key, dependency] of fileEntrypoint?.dependencies ?? []) {
|
|
151
|
-
dependenciesToCheck.set(key, dependency);
|
|
152
|
-
}
|
|
153
|
-
for (const [key, dependency,] of fileEntrypoint?.invalidationDependencies ?? []) {
|
|
154
|
-
if (!dependenciesToCheck.has(key)) {
|
|
155
|
-
dependenciesToCheck.set(key, dependency);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
for (const dependencyFilename of this.getCachedDependencies(filename)) {
|
|
159
|
-
if (![...dependenciesToCheck.values()].some((dependency) => dependency.resolved === dependencyFilename)) {
|
|
160
|
-
dependenciesToCheck.set(dependencyFilename, {
|
|
161
|
-
resolved: dependencyFilename,
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
195
|
+
const dependenciesToCheck = this.getDependenciesToCheck(filename, fileEntrypoint);
|
|
165
196
|
for (const [, dependency] of dependenciesToCheck) {
|
|
166
197
|
const dependencyFilename = dependency.resolved;
|
|
167
198
|
if (dependencyFilename) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
if (!isMissingFileError(error)) {
|
|
174
|
-
throw error;
|
|
175
|
-
}
|
|
176
|
-
this.invalidateForFile(dependencyFilename);
|
|
177
|
-
anyDepChanged = true;
|
|
178
|
-
// eslint-disable-next-line no-continue
|
|
179
|
-
continue;
|
|
180
|
-
}
|
|
181
|
-
const dependencyChanged = this.invalidateIfChanged(dependencyFilename, dependencyContent, visitedFiles, 'fs', changedFiles);
|
|
199
|
+
const dependencyChanged = this.didDependencyChange(dependencyFilename, visitedFiles, changedFiles, dependencyChangeMemo, forceContentCheck ||
|
|
200
|
+
invalidateOnDependencyChange?.has(dependencyFilename) ||
|
|
201
|
+
false);
|
|
182
202
|
if (dependencyChanged &&
|
|
183
203
|
invalidateOnDependencyChange?.has(dependencyFilename)) {
|
|
184
204
|
cacheLogger('dependency affecting output has changed, invalidate all for %s', filename);
|
|
@@ -222,14 +242,163 @@ class TransformCacheCollection {
|
|
|
222
242
|
}
|
|
223
243
|
return false;
|
|
224
244
|
}
|
|
245
|
+
getDependenciesToCheck(filename, fileEntrypoint) {
|
|
246
|
+
const dependenciesToCheck = new Map();
|
|
247
|
+
for (const [key, dependency] of fileEntrypoint?.dependencies ?? []) {
|
|
248
|
+
dependenciesToCheck.set(key, dependency);
|
|
249
|
+
}
|
|
250
|
+
for (const [key, dependency] of fileEntrypoint?.invalidationDependencies ??
|
|
251
|
+
[]) {
|
|
252
|
+
if (!dependenciesToCheck.has(key)) {
|
|
253
|
+
dependenciesToCheck.set(key, dependency);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
for (const dependencyFilename of this.getCachedDependencies(filename)) {
|
|
257
|
+
if (![...dependenciesToCheck.values()].some((dependency) => dependency.resolved === dependencyFilename)) {
|
|
258
|
+
dependenciesToCheck.set(dependencyFilename, {
|
|
259
|
+
resolved: dependencyFilename,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return dependenciesToCheck;
|
|
264
|
+
}
|
|
265
|
+
didDependencyChange(dependencyFilename, visitedFiles, changedFiles, dependencyChangeMemo, forceContentCheck = false) {
|
|
266
|
+
if (changedFiles.has(dependencyFilename)) {
|
|
267
|
+
return true;
|
|
268
|
+
}
|
|
269
|
+
const memoized = dependencyChangeMemo.get(dependencyFilename);
|
|
270
|
+
if (memoized !== undefined) {
|
|
271
|
+
return memoized;
|
|
272
|
+
}
|
|
273
|
+
if (visitedFiles.has(dependencyFilename)) {
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
const strippedDependencyFilename = stripQueryAndHash(dependencyFilename);
|
|
277
|
+
const cachedMtime = this.fileMtimes.get(dependencyFilename);
|
|
278
|
+
const cachedEntrypoint = this.get('entrypoints', dependencyFilename);
|
|
279
|
+
if (cachedMtime !== undefined) {
|
|
280
|
+
let currentMtime;
|
|
281
|
+
try {
|
|
282
|
+
currentMtime = fs.statSync(strippedDependencyFilename).mtimeMs;
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
if (!isMissingFileError(error)) {
|
|
286
|
+
throw error;
|
|
287
|
+
}
|
|
288
|
+
this.invalidateForFile(dependencyFilename);
|
|
289
|
+
changedFiles.add(dependencyFilename);
|
|
290
|
+
dependencyChangeMemo.set(dependencyFilename, true);
|
|
291
|
+
return true;
|
|
292
|
+
}
|
|
293
|
+
if (currentMtime === cachedMtime) {
|
|
294
|
+
const nestedDependencies = this.getDependenciesToCheck(dependencyFilename, cachedEntrypoint);
|
|
295
|
+
if (forceContentCheck &&
|
|
296
|
+
this.didFileContentHashChange(dependencyFilename, strippedDependencyFilename, changedFiles)) {
|
|
297
|
+
dependencyChangeMemo.set(dependencyFilename, true);
|
|
298
|
+
return true;
|
|
299
|
+
}
|
|
300
|
+
// A cached file without a cached entrypoint was invalidated earlier.
|
|
301
|
+
if (!cachedEntrypoint && nestedDependencies.size === 0) {
|
|
302
|
+
dependencyChangeMemo.set(dependencyFilename, true);
|
|
303
|
+
return true;
|
|
304
|
+
}
|
|
305
|
+
if (nestedDependencies.size === 0) {
|
|
306
|
+
dependencyChangeMemo.set(dependencyFilename, false);
|
|
307
|
+
return false;
|
|
308
|
+
}
|
|
309
|
+
const nextVisitedFiles = new Set(visitedFiles);
|
|
310
|
+
nextVisitedFiles.add(dependencyFilename);
|
|
311
|
+
for (const [, nestedDependency] of nestedDependencies) {
|
|
312
|
+
if (nestedDependency.resolved &&
|
|
313
|
+
this.didDependencyChange(nestedDependency.resolved, nextVisitedFiles, changedFiles, dependencyChangeMemo, forceContentCheck)) {
|
|
314
|
+
this.invalidateForFile(dependencyFilename);
|
|
315
|
+
changedFiles.add(dependencyFilename);
|
|
316
|
+
dependencyChangeMemo.set(dependencyFilename, true);
|
|
317
|
+
return true;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
dependencyChangeMemo.set(dependencyFilename, false);
|
|
321
|
+
return false;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
let dependencyContent;
|
|
325
|
+
try {
|
|
326
|
+
dependencyContent = fs.readFileSync(strippedDependencyFilename, 'utf8');
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
if (!isMissingFileError(error)) {
|
|
330
|
+
throw error;
|
|
331
|
+
}
|
|
332
|
+
this.invalidateForFile(dependencyFilename);
|
|
333
|
+
changedFiles.add(dependencyFilename);
|
|
334
|
+
dependencyChangeMemo.set(dependencyFilename, true);
|
|
335
|
+
return true;
|
|
336
|
+
}
|
|
337
|
+
const invalidated = this.invalidateIfChanged(dependencyFilename, dependencyContent, visitedFiles, 'fs', changedFiles, dependencyChangeMemo, forceContentCheck);
|
|
338
|
+
dependencyChangeMemo.set(dependencyFilename, invalidated);
|
|
339
|
+
return invalidated;
|
|
340
|
+
}
|
|
341
|
+
didFileContentHashChange(filename, strippedFilename, changedFiles) {
|
|
342
|
+
const previousHash = this.contentHashes.get(filename)?.fs;
|
|
343
|
+
if (previousHash === undefined) {
|
|
344
|
+
return false;
|
|
345
|
+
}
|
|
346
|
+
let content;
|
|
347
|
+
try {
|
|
348
|
+
content = fs.readFileSync(strippedFilename, 'utf8');
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
if (!isMissingFileError(error)) {
|
|
352
|
+
throw error;
|
|
353
|
+
}
|
|
354
|
+
this.invalidateForFile(filename);
|
|
355
|
+
changedFiles.add(filename);
|
|
356
|
+
return true;
|
|
357
|
+
}
|
|
358
|
+
const nextHash = hashContent(content);
|
|
359
|
+
if (previousHash === nextHash) {
|
|
360
|
+
return false;
|
|
361
|
+
}
|
|
362
|
+
this.setContentHash(filename, 'fs', nextHash);
|
|
363
|
+
this.invalidateForFile(filename);
|
|
364
|
+
changedFiles.add(filename);
|
|
365
|
+
return true;
|
|
366
|
+
}
|
|
225
367
|
setCacheDependencies(cacheName, key, dependencies) {
|
|
226
368
|
const cache = this.getDependencyCache(cacheName);
|
|
227
369
|
const nextDependencies = new Set([...dependencies].filter((dependency) => dependency.length > 0));
|
|
370
|
+
const cacheKey = this.getKey(key);
|
|
228
371
|
if (nextDependencies.size === 0) {
|
|
229
|
-
cache.delete(
|
|
372
|
+
cache.delete(cacheKey);
|
|
230
373
|
return;
|
|
231
374
|
}
|
|
232
|
-
cache.set(
|
|
375
|
+
cache.set(cacheKey, nextDependencies);
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Fast check if a file changed on disk since last seen.
|
|
379
|
+
* Uses mtime as a fast path and only reads the file if mtime differs.
|
|
380
|
+
*/
|
|
381
|
+
checkFreshness(filename, strippedFilename) {
|
|
382
|
+
try {
|
|
383
|
+
const currentMtime = fs.statSync(strippedFilename).mtimeMs;
|
|
384
|
+
const cachedMtime = this.fileMtimes.get(filename);
|
|
385
|
+
if (cachedMtime !== undefined && currentMtime === cachedMtime) {
|
|
386
|
+
return false;
|
|
387
|
+
}
|
|
388
|
+
const content = fs.readFileSync(strippedFilename, 'utf8');
|
|
389
|
+
this.fileMtimes.set(filename, currentMtime);
|
|
390
|
+
if (this.invalidateIfChanged(filename, content, undefined, 'fs')) {
|
|
391
|
+
return true;
|
|
392
|
+
}
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
catch (error) {
|
|
396
|
+
if (!isMissingFileError(error)) {
|
|
397
|
+
throw error;
|
|
398
|
+
}
|
|
399
|
+
this.invalidateForFile(filename);
|
|
400
|
+
return true;
|
|
401
|
+
}
|
|
233
402
|
}
|
|
234
403
|
clearCacheDependencies(cacheName, key) {
|
|
235
404
|
if (cacheName === 'all') {
|
|
@@ -242,7 +411,7 @@ class TransformCacheCollection {
|
|
|
242
411
|
this.barrelManifestDependencies.clear();
|
|
243
412
|
}
|
|
244
413
|
else {
|
|
245
|
-
this.barrelManifestDependencies.delete(key);
|
|
414
|
+
this.barrelManifestDependencies.delete(this.getKey(key));
|
|
246
415
|
}
|
|
247
416
|
return;
|
|
248
417
|
}
|
|
@@ -251,14 +420,15 @@ class TransformCacheCollection {
|
|
|
251
420
|
this.exportDependencies.clear();
|
|
252
421
|
}
|
|
253
422
|
else {
|
|
254
|
-
this.exportDependencies.delete(key);
|
|
423
|
+
this.exportDependencies.delete(this.getKey(key));
|
|
255
424
|
}
|
|
256
425
|
}
|
|
257
426
|
}
|
|
258
427
|
getCachedDependencies(filename) {
|
|
428
|
+
const key = this.getKey(filename);
|
|
259
429
|
return new Set([
|
|
260
|
-
...(this.barrelManifestDependencies.get(
|
|
261
|
-
...(this.exportDependencies.get(
|
|
430
|
+
...(this.barrelManifestDependencies.get(key) ?? []),
|
|
431
|
+
...(this.exportDependencies.get(key) ?? []),
|
|
262
432
|
]);
|
|
263
433
|
}
|
|
264
434
|
getDependencyCache(cacheName) {
|
|
@@ -269,33 +439,6 @@ class TransformCacheCollection {
|
|
|
269
439
|
hasCachedDependencies(filename) {
|
|
270
440
|
return this.getCachedDependencies(filename).size > 0;
|
|
271
441
|
}
|
|
272
|
-
/**
|
|
273
|
-
* Fast check if a file changed on disk since last seen.
|
|
274
|
-
* Uses mtime as a fast path — only reads the file if mtime differs.
|
|
275
|
-
* Returns true if the file changed (cache was invalidated).
|
|
276
|
-
*/
|
|
277
|
-
checkFreshness(filename, strippedFilename) {
|
|
278
|
-
try {
|
|
279
|
-
const currentMtime = node_fs_1.default.statSync(strippedFilename).mtimeMs;
|
|
280
|
-
const cachedMtime = this.fileMtimes.get(filename);
|
|
281
|
-
if (cachedMtime !== undefined && currentMtime === cachedMtime) {
|
|
282
|
-
return false;
|
|
283
|
-
}
|
|
284
|
-
const content = node_fs_1.default.readFileSync(strippedFilename, 'utf-8');
|
|
285
|
-
this.fileMtimes.set(filename, currentMtime);
|
|
286
|
-
if (this.invalidateIfChanged(filename, content, undefined, 'fs')) {
|
|
287
|
-
return true;
|
|
288
|
-
}
|
|
289
|
-
return false;
|
|
290
|
-
}
|
|
291
|
-
catch (error) {
|
|
292
|
-
if (!isMissingFileError(error)) {
|
|
293
|
-
throw error;
|
|
294
|
-
}
|
|
295
|
-
this.invalidateForFile(filename);
|
|
296
|
-
return true;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
442
|
setContentHash(filename, source, hash) {
|
|
300
443
|
const current = this.contentHashes.get(filename);
|
|
301
444
|
if (current) {
|
|
@@ -306,7 +449,7 @@ class TransformCacheCollection {
|
|
|
306
449
|
}
|
|
307
450
|
if (source === 'fs') {
|
|
308
451
|
try {
|
|
309
|
-
this.fileMtimes.set(filename,
|
|
452
|
+
this.fileMtimes.set(filename, fs.statSync(stripQueryAndHash(filename)).mtimeMs);
|
|
310
453
|
}
|
|
311
454
|
catch {
|
|
312
455
|
// ignore
|
|
@@ -314,4 +457,3 @@ class TransformCacheCollection {
|
|
|
314
457
|
}
|
|
315
458
|
}
|
|
316
459
|
}
|
|
317
|
-
exports.TransformCacheCollection = TransformCacheCollection;
|
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createFileReporter = void 0;
|
|
7
1
|
/* eslint-disable no-console */
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
import { createWriteStream, existsSync, mkdirSync } from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { EventEmitter, isOnActionStartArgs } from '../utils/EventEmitter';
|
|
11
5
|
const workingDir = process.cwd();
|
|
12
6
|
function replacer(_key, value) {
|
|
13
|
-
if (typeof value === 'string' &&
|
|
14
|
-
return
|
|
7
|
+
if (typeof value === 'string' && path.isAbsolute(value)) {
|
|
8
|
+
return path.relative(workingDir, value);
|
|
15
9
|
}
|
|
16
10
|
if (value instanceof Map) {
|
|
17
11
|
return Array.from(value.entries()).reduce((obj, [k, v]) => {
|
|
@@ -38,7 +32,7 @@ function printTimings(timings, startedAt, sourceRoot) {
|
|
|
38
32
|
.sort(([a], [b]) => a.localeCompare(b))
|
|
39
33
|
.forEach(([value, time]) => {
|
|
40
34
|
const name = value.startsWith(sourceRoot)
|
|
41
|
-
?
|
|
35
|
+
? path.relative(sourceRoot, value)
|
|
42
36
|
: value;
|
|
43
37
|
console.log(` ${name}: ${time}ms`);
|
|
44
38
|
});
|
|
@@ -47,24 +41,25 @@ function printTimings(timings, startedAt, sourceRoot) {
|
|
|
47
41
|
const writeJSONl = (stream, data) => {
|
|
48
42
|
stream.write(`${JSON.stringify(data, replacer)}\n`);
|
|
49
43
|
};
|
|
50
|
-
const createFileReporter = (options = false) => {
|
|
44
|
+
export const createFileReporter = (options = false) => {
|
|
51
45
|
if (!options || !options.dir) {
|
|
52
46
|
return {
|
|
53
|
-
emitter:
|
|
47
|
+
emitter: EventEmitter.dummy,
|
|
54
48
|
onDone: () => { },
|
|
55
49
|
};
|
|
56
50
|
}
|
|
57
|
-
const reportFolder =
|
|
51
|
+
const reportFolder = existsSync(options.dir)
|
|
58
52
|
? options.dir
|
|
59
|
-
:
|
|
53
|
+
: mkdirSync(options.dir, {
|
|
60
54
|
recursive: true,
|
|
61
55
|
});
|
|
62
56
|
if (!reportFolder) {
|
|
63
57
|
throw new Error(`Could not create directory ${options.dir}`);
|
|
64
58
|
}
|
|
65
|
-
const actionStream =
|
|
66
|
-
const dependenciesStream =
|
|
67
|
-
const entrypointStream =
|
|
59
|
+
const actionStream = createWriteStream(path.join(options.dir, 'actions.jsonl'));
|
|
60
|
+
const dependenciesStream = createWriteStream(path.join(options.dir, 'dependencies.jsonl'));
|
|
61
|
+
const entrypointStream = createWriteStream(path.join(options.dir, 'entrypoints.jsonl'));
|
|
62
|
+
const staticResolveStream = createWriteStream(path.join(options.dir, 'static-resolve.jsonl'));
|
|
68
63
|
const startedAt = performance.now();
|
|
69
64
|
const timings = new Map();
|
|
70
65
|
const addTiming = (label, key, value) => {
|
|
@@ -85,6 +80,10 @@ const createFileReporter = (options = false) => {
|
|
|
85
80
|
const processSingleEvent = (meta) => {
|
|
86
81
|
if (meta.type === 'dependency') {
|
|
87
82
|
processDependencyEvent(meta);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (meta.type === 'staticResolve') {
|
|
86
|
+
writeJSONl(staticResolveStream, meta);
|
|
88
87
|
}
|
|
89
88
|
};
|
|
90
89
|
const startTimes = new Map();
|
|
@@ -109,7 +108,7 @@ const createFileReporter = (options = false) => {
|
|
|
109
108
|
};
|
|
110
109
|
let actionId = 0;
|
|
111
110
|
const onAction = (...args) => {
|
|
112
|
-
if (
|
|
111
|
+
if (isOnActionStartArgs(args)) {
|
|
113
112
|
const [, timestamp, type, idx, entrypointRef] = args;
|
|
114
113
|
writeJSONl(actionStream, {
|
|
115
114
|
actionId,
|
|
@@ -134,7 +133,7 @@ const createFileReporter = (options = false) => {
|
|
|
134
133
|
const onEntrypointEvent = (emitterId, timestamp, event) => {
|
|
135
134
|
entrypointStream.write(`${JSON.stringify([emitterId, timestamp, event])}\n`);
|
|
136
135
|
};
|
|
137
|
-
const emitter = new
|
|
136
|
+
const emitter = new EventEmitter(onEvent, onAction, onEntrypointEvent);
|
|
138
137
|
return {
|
|
139
138
|
emitter,
|
|
140
139
|
onDone: (sourceRoot) => {
|
|
@@ -144,8 +143,9 @@ const createFileReporter = (options = false) => {
|
|
|
144
143
|
}
|
|
145
144
|
actionStream.end();
|
|
146
145
|
dependenciesStream.end();
|
|
146
|
+
entrypointStream.end();
|
|
147
|
+
staticResolveStream.end();
|
|
147
148
|
timings.clear();
|
|
148
149
|
},
|
|
149
150
|
};
|
|
150
151
|
};
|
|
151
|
-
exports.createFileReporter = createFileReporter;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { Entrypoint } from '../transform/Entrypoint';
|
|
2
|
+
import type { Services } from '../transform/types';
|
|
3
|
+
type EvaluateResult = {
|
|
4
|
+
values: Map<string, unknown> | null;
|
|
5
|
+
dependencies: string[];
|
|
6
|
+
};
|
|
7
|
+
export declare const stripEntrypointGlobalsFromRunnerContext: (globals: Record<string, unknown>, entrypoint: string) => Record<string, unknown>;
|
|
8
|
+
export declare class EvalBroker {
|
|
9
|
+
private readonly services;
|
|
10
|
+
private readonly asyncResolve;
|
|
11
|
+
private runner;
|
|
12
|
+
private runnerInputQueue;
|
|
13
|
+
private runnerReady;
|
|
14
|
+
private lastInitKey;
|
|
15
|
+
private lastHappyDomEnabled;
|
|
16
|
+
private evalQueue;
|
|
17
|
+
private readonly pending;
|
|
18
|
+
private nextId;
|
|
19
|
+
private readonly resolveCache;
|
|
20
|
+
private readonly resolveInFlight;
|
|
21
|
+
private readonly loadCache;
|
|
22
|
+
private readonly loadInFlight;
|
|
23
|
+
private readonly importsByModule;
|
|
24
|
+
private readonly onlyByModule;
|
|
25
|
+
private readonly runtimeDependenciesByModule;
|
|
26
|
+
private readonly emittedDependencies;
|
|
27
|
+
private readonly lastSentLoadByModule;
|
|
28
|
+
private pendingEvals;
|
|
29
|
+
private evalFlushScheduled;
|
|
30
|
+
private stableInitHashCache;
|
|
31
|
+
private evalSeq;
|
|
32
|
+
private happyDomDisabled;
|
|
33
|
+
private happyDomDisableWarned;
|
|
34
|
+
private activeResolveRootId;
|
|
35
|
+
private currentServices;
|
|
36
|
+
constructor(services: Services, asyncResolve: (what: string, importer: string, stack: string[]) => Promise<string | null>);
|
|
37
|
+
private ensureImportsMapping;
|
|
38
|
+
private getImportOnly;
|
|
39
|
+
private getLoadRequestOnly;
|
|
40
|
+
evaluate(entrypoint: Entrypoint, services?: Services): Promise<EvaluateResult>;
|
|
41
|
+
private scheduleEvalFlush;
|
|
42
|
+
private runEvalBatch;
|
|
43
|
+
private runOneEntrypoint;
|
|
44
|
+
private resetPerEntrypointState;
|
|
45
|
+
private applyModuleExports;
|
|
46
|
+
dispose(): void;
|
|
47
|
+
private createRunnerProcess;
|
|
48
|
+
private attachRunnerListeners;
|
|
49
|
+
private ensureRunner;
|
|
50
|
+
private initIsolatedRunner;
|
|
51
|
+
private replaceRunner;
|
|
52
|
+
private getStableInitHash;
|
|
53
|
+
private initRunner;
|
|
54
|
+
private getRunnerFeatures;
|
|
55
|
+
private getInitTimeoutMs;
|
|
56
|
+
private warnHappyDomDisabledOnce;
|
|
57
|
+
private onData;
|
|
58
|
+
private handleMessage;
|
|
59
|
+
private handleRunnerStderr;
|
|
60
|
+
private handleWarn;
|
|
61
|
+
private handleResolve;
|
|
62
|
+
private normalizeResolvedId;
|
|
63
|
+
private resolveImport;
|
|
64
|
+
private getResolveStack;
|
|
65
|
+
private resolveImportImpl;
|
|
66
|
+
private finalizeResolvedImport;
|
|
67
|
+
private emitDependency;
|
|
68
|
+
private trackRuntimeDependency;
|
|
69
|
+
private trackImporterDependency;
|
|
70
|
+
private collectEntrypointDependencies;
|
|
71
|
+
private applyImportOverrides;
|
|
72
|
+
private resolveWithNodeFallback;
|
|
73
|
+
private maybeWarnNodeFallback;
|
|
74
|
+
private handleLoad;
|
|
75
|
+
private loadModule;
|
|
76
|
+
private loadModuleImpl;
|
|
77
|
+
private sendLoadResult;
|
|
78
|
+
private sendMessage;
|
|
79
|
+
private handleSendMessageError;
|
|
80
|
+
private request;
|
|
81
|
+
private resolvePending;
|
|
82
|
+
private rejectPending;
|
|
83
|
+
private rejectAllPending;
|
|
84
|
+
private mergeKnownDependencyOnly;
|
|
85
|
+
}
|
|
86
|
+
export declare const disposeEvalBroker: (cache: Services["cache"]) => void;
|
|
87
|
+
export declare const getEvalBroker: (services: Services, asyncResolve: (what: string, importer: string, stack: string[]) => Promise<string | null>, cacheKey: string) => EvalBroker;
|
|
88
|
+
export {};
|