@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unwrapExpression.js","names":["t","unwrapOnce","node","isTSAsExpression","expression","isTSTypeAssertion","isTSNonNullExpression","isParenthesizedExpression","unwrapExpression","current","next"],"sources":["../../src/utils/unwrapExpression.ts"],"sourcesContent":["import type { Expression } from '@babel/types';\nimport * as t from '@babel/types';\n\nconst unwrapOnce = (node: Expression): Expression => {\n if (t.isTSAsExpression(node)) return node.expression;\n if (t.isTSTypeAssertion(node)) return node.expression;\n if (t.isTSNonNullExpression(node)) return node.expression;\n if (t.isParenthesizedExpression(node)) return node.expression;\n return node;\n};\n\nexport function unwrapExpression(node: Expression): Expression {\n let current = node;\n let next = unwrapOnce(current);\n\n while (next !== current) {\n current = next;\n next = unwrapOnce(current);\n }\n\n return current;\n}\n"],"mappings":"AACA,OAAO,KAAKA,CAAC,MAAM,cAAc;AAEjC,MAAMC,UAAU,GAAIC,IAAgB,IAAiB;EACnD,IAAIF,CAAC,CAACG,gBAAgB,CAACD,IAAI,CAAC,EAAE,OAAOA,IAAI,CAACE,UAAU;EACpD,IAAIJ,CAAC,CAACK,iBAAiB,CAACH,IAAI,CAAC,EAAE,OAAOA,IAAI,CAACE,UAAU;EACrD,IAAIJ,CAAC,CAACM,qBAAqB,CAACJ,IAAI,CAAC,EAAE,OAAOA,IAAI,CAACE,UAAU;EACzD,IAAIJ,CAAC,CAACO,yBAAyB,CAACL,IAAI,CAAC,EAAE,OAAOA,IAAI,CAACE,UAAU;EAC7D,OAAOF,IAAI;AACb,CAAC;AAED,OAAO,SAASM,gBAAgBA,CAACN,IAAgB,EAAc;EAC7D,IAAIO,OAAO,GAAGP,IAAI;EAClB,IAAIQ,IAAI,GAAGT,UAAU,CAACQ,OAAO,CAAC;EAE9B,OAAOC,IAAI,KAAKD,OAAO,EAAE;IACvBA,OAAO,GAAGC,IAAI;IACdA,IAAI,GAAGT,UAAU,CAACQ,OAAO,CAAC;EAC5B;EAEA,OAAOA,OAAO;AAChB","ignoreList":[]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* If expression is a sequence like `(a, b, c)`, returns `c`
|
|
3
|
-
* otherwise returns an original expression
|
|
4
|
-
* @param path
|
|
5
|
-
*/
|
|
6
|
-
export function unwrapSequence(path) {
|
|
7
|
-
if (path.isSequenceExpression()) {
|
|
8
|
-
const [...expressions] = path.get('expressions');
|
|
9
|
-
const lastExpression = expressions.pop();
|
|
10
|
-
return lastExpression ? unwrapSequence(lastExpression) : undefined;
|
|
11
|
-
}
|
|
12
|
-
return path;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=unwrapSequence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unwrapSequence.js","names":["unwrapSequence","path","isSequenceExpression","expressions","get","lastExpression","pop","undefined"],"sources":["../../src/utils/unwrapSequence.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type { Expression, V8IntrinsicIdentifier } from '@babel/types';\n\n/**\n * If expression is a sequence like `(a, b, c)`, returns `c`\n * otherwise returns an original expression\n * @param path\n */\nexport function unwrapSequence(\n path: NodePath<Expression | V8IntrinsicIdentifier>\n): NodePath<Expression | V8IntrinsicIdentifier> | undefined {\n if (path.isSequenceExpression()) {\n const [...expressions] = path.get('expressions');\n const lastExpression = expressions.pop();\n return lastExpression ? unwrapSequence(lastExpression) : undefined;\n }\n\n return path;\n}\n"],"mappings":"AAGA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,cAAcA,CAC5BC,IAAkD,EACQ;EAC1D,IAAIA,IAAI,CAACC,oBAAoB,CAAC,CAAC,EAAE;IAC/B,MAAM,CAAC,GAAGC,WAAW,CAAC,GAAGF,IAAI,CAACG,GAAG,CAAC,aAAa,CAAC;IAChD,MAAMC,cAAc,GAAGF,WAAW,CAACG,GAAG,CAAC,CAAC;IACxC,OAAOD,cAAc,GAAGL,cAAc,CAACK,cAAc,CAAC,GAAGE,SAAS;EACpE;EAEA,OAAON,IAAI;AACb","ignoreList":[]}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { getSource } from './getSource';
|
|
2
|
-
import { isSerializable } from './isSerializable';
|
|
3
|
-
export function valueToLiteral(value, ex) {
|
|
4
|
-
if (value === undefined) {
|
|
5
|
-
return {
|
|
6
|
-
type: 'Identifier',
|
|
7
|
-
name: 'undefined'
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
if (isSerializable(value)) {
|
|
11
|
-
if (value === null) {
|
|
12
|
-
return {
|
|
13
|
-
type: 'NullLiteral'
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
if (typeof value === 'string') {
|
|
17
|
-
return {
|
|
18
|
-
type: 'StringLiteral',
|
|
19
|
-
value
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
if (typeof value === 'number') {
|
|
23
|
-
return {
|
|
24
|
-
type: 'NumericLiteral',
|
|
25
|
-
value
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
if (typeof value === 'boolean') {
|
|
29
|
-
return {
|
|
30
|
-
type: 'BooleanLiteral',
|
|
31
|
-
value
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
if (Array.isArray(value)) {
|
|
35
|
-
return {
|
|
36
|
-
type: 'ArrayExpression',
|
|
37
|
-
elements: value.map(v => valueToLiteral(v, ex))
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
type: 'ObjectExpression',
|
|
42
|
-
properties: Object.entries(value).map(([key, v]) => ({
|
|
43
|
-
type: 'ObjectProperty',
|
|
44
|
-
key: key.match(/^[a-zA-Z]\w*$/) ? {
|
|
45
|
-
type: 'Identifier',
|
|
46
|
-
name: key
|
|
47
|
-
} : {
|
|
48
|
-
type: 'StringLiteral',
|
|
49
|
-
value: key
|
|
50
|
-
},
|
|
51
|
-
value: valueToLiteral(v, ex),
|
|
52
|
-
computed: false,
|
|
53
|
-
shorthand: false
|
|
54
|
-
}))
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
throw ex.buildCodeFrameError(`The expression evaluated to '${value}', which is probably a mistake. If you want it to be inserted into CSS, explicitly cast or transform the value to a string, e.g. - 'String(${getSource(ex)})'.`);
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=valueToLiteral.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"valueToLiteral.js","names":["getSource","isSerializable","valueToLiteral","value","ex","undefined","type","name","Array","isArray","elements","map","v","properties","Object","entries","key","match","computed","shorthand","buildCodeFrameError"],"sources":["../../src/utils/valueToLiteral.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type { Expression } from '@babel/types';\n\nimport { getSource } from './getSource';\nimport { isSerializable } from './isSerializable';\n\nexport function valueToLiteral(value: unknown, ex: NodePath): Expression {\n if (value === undefined) {\n return {\n type: 'Identifier',\n name: 'undefined',\n };\n }\n\n if (isSerializable(value)) {\n if (value === null) {\n return {\n type: 'NullLiteral',\n };\n }\n\n if (typeof value === 'string') {\n return {\n type: 'StringLiteral',\n value,\n };\n }\n\n if (typeof value === 'number') {\n return {\n type: 'NumericLiteral',\n value,\n };\n }\n\n if (typeof value === 'boolean') {\n return {\n type: 'BooleanLiteral',\n value,\n };\n }\n\n if (Array.isArray(value)) {\n return {\n type: 'ArrayExpression',\n elements: value.map((v) => valueToLiteral(v, ex)),\n };\n }\n\n return {\n type: 'ObjectExpression',\n properties: Object.entries(value).map(([key, v]) => ({\n type: 'ObjectProperty',\n key: key.match(/^[a-zA-Z]\\w*$/)\n ? {\n type: 'Identifier',\n name: key,\n }\n : {\n type: 'StringLiteral',\n value: key,\n },\n value: valueToLiteral(v, ex),\n computed: false,\n shorthand: false,\n })),\n };\n }\n\n throw ex.buildCodeFrameError(\n `The expression evaluated to '${value}', which is probably a mistake. If you want it to be inserted into CSS, explicitly cast or transform the value to a string, e.g. - 'String(${getSource(\n ex\n )})'.`\n );\n}\n"],"mappings":"AAGA,SAASA,SAAS,QAAQ,aAAa;AACvC,SAASC,cAAc,QAAQ,kBAAkB;AAEjD,OAAO,SAASC,cAAcA,CAACC,KAAc,EAAEC,EAAY,EAAc;EACvE,IAAID,KAAK,KAAKE,SAAS,EAAE;IACvB,OAAO;MACLC,IAAI,EAAE,YAAY;MAClBC,IAAI,EAAE;IACR,CAAC;EACH;EAEA,IAAIN,cAAc,CAACE,KAAK,CAAC,EAAE;IACzB,IAAIA,KAAK,KAAK,IAAI,EAAE;MAClB,OAAO;QACLG,IAAI,EAAE;MACR,CAAC;IACH;IAEA,IAAI,OAAOH,KAAK,KAAK,QAAQ,EAAE;MAC7B,OAAO;QACLG,IAAI,EAAE,eAAe;QACrBH;MACF,CAAC;IACH;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,OAAO;QACLG,IAAI,EAAE,gBAAgB;QACtBH;MACF,CAAC;IACH;IAEA,IAAI,OAAOA,KAAK,KAAK,SAAS,EAAE;MAC9B,OAAO;QACLG,IAAI,EAAE,gBAAgB;QACtBH;MACF,CAAC;IACH;IAEA,IAAIK,KAAK,CAACC,OAAO,CAACN,KAAK,CAAC,EAAE;MACxB,OAAO;QACLG,IAAI,EAAE,iBAAiB;QACvBI,QAAQ,EAAEP,KAAK,CAACQ,GAAG,CAAEC,CAAC,IAAKV,cAAc,CAACU,CAAC,EAAER,EAAE,CAAC;MAClD,CAAC;IACH;IAEA,OAAO;MACLE,IAAI,EAAE,kBAAkB;MACxBO,UAAU,EAAEC,MAAM,CAACC,OAAO,CAACZ,KAAK,CAAC,CAACQ,GAAG,CAAC,CAAC,CAACK,GAAG,EAAEJ,CAAC,CAAC,MAAM;QACnDN,IAAI,EAAE,gBAAgB;QACtBU,GAAG,EAAEA,GAAG,CAACC,KAAK,CAAC,eAAe,CAAC,GAC3B;UACEX,IAAI,EAAE,YAAY;UAClBC,IAAI,EAAES;QACR,CAAC,GACD;UACEV,IAAI,EAAE,eAAe;UACrBH,KAAK,EAAEa;QACT,CAAC;QACLb,KAAK,EAAED,cAAc,CAACU,CAAC,EAAER,EAAE,CAAC;QAC5Bc,QAAQ,EAAE,KAAK;QACfC,SAAS,EAAE;MACb,CAAC,CAAC;IACJ,CAAC;EACH;EAEA,MAAMf,EAAE,CAACgB,mBAAmB,CAC1B,gCAAgCjB,KAAK,8IAA8IH,SAAS,CAC1LI,EACF,CAAC,KACH,CAAC;AACH","ignoreList":[]}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { types as t } from '@babel/core';
|
|
2
|
-
import { getScope } from '../getScope';
|
|
3
|
-
import { mutate } from '../scopeHelpers';
|
|
4
|
-
function getFunctionName(path) {
|
|
5
|
-
if (path.isClassMethod() && t.isIdentifier(path.node.key)) {
|
|
6
|
-
return path.node.key.name;
|
|
7
|
-
}
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
export function JSXElementsRemover(path) {
|
|
11
|
-
// JSX can be safely replaced with null because it is unnecessary for styles
|
|
12
|
-
const nullLiteral = t.nullLiteral();
|
|
13
|
-
|
|
14
|
-
// We can do even more
|
|
15
|
-
// If that JSX is a result of a function, we can replace the function body.
|
|
16
|
-
const functionScope = getScope(path).getFunctionParent();
|
|
17
|
-
const scopePath = functionScope?.path;
|
|
18
|
-
if (scopePath?.isFunction()) {
|
|
19
|
-
const emptyBody = t.blockStatement([t.returnStatement(nullLiteral)]);
|
|
20
|
-
|
|
21
|
-
// Is it not just a function, but a method `render`?
|
|
22
|
-
if (getFunctionName(scopePath) === 'render') {
|
|
23
|
-
const decl = scopePath.findParent(p => p.isClassDeclaration());
|
|
24
|
-
|
|
25
|
-
// Replace the whole component
|
|
26
|
-
if (decl?.isClassDeclaration()) {
|
|
27
|
-
mutate(decl, p => {
|
|
28
|
-
p.replaceWith(t.functionDeclaration(decl.node.id, [], emptyBody));
|
|
29
|
-
});
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
const body = scopePath.get('body');
|
|
34
|
-
if (Array.isArray(body)) {
|
|
35
|
-
throw new Error("A body of a function is expected to be a single element but an array was returned. It's possible if JS syntax has been changed since that code was written.");
|
|
36
|
-
}
|
|
37
|
-
const node = {
|
|
38
|
-
...scopePath.node,
|
|
39
|
-
body: emptyBody,
|
|
40
|
-
params: []
|
|
41
|
-
};
|
|
42
|
-
mutate(scopePath, p => {
|
|
43
|
-
p.replaceWith(node);
|
|
44
|
-
});
|
|
45
|
-
} else {
|
|
46
|
-
mutate(path, p => {
|
|
47
|
-
p.replaceWith(nullLiteral);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=JSXElementsRemover.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JSXElementsRemover.js","names":["types","t","getScope","mutate","getFunctionName","path","isClassMethod","isIdentifier","node","key","name","JSXElementsRemover","nullLiteral","functionScope","getFunctionParent","scopePath","isFunction","emptyBody","blockStatement","returnStatement","decl","findParent","p","isClassDeclaration","replaceWith","functionDeclaration","id","body","get","Array","isArray","Error","params"],"sources":["../../../src/utils/visitors/JSXElementsRemover.ts"],"sourcesContent":["import { types as t } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport type {\n CallExpression,\n Function as FunctionNode,\n JSX,\n} from '@babel/types';\n\nimport { getScope } from '../getScope';\nimport { mutate } from '../scopeHelpers';\n\nfunction getFunctionName(path: NodePath<FunctionNode>): string | null {\n if (path.isClassMethod() && t.isIdentifier(path.node.key)) {\n return path.node.key.name;\n }\n\n return null;\n}\n\nexport function JSXElementsRemover(path: NodePath<JSX | CallExpression>) {\n // JSX can be safely replaced with null because it is unnecessary for styles\n const nullLiteral = t.nullLiteral();\n\n // We can do even more\n // If that JSX is a result of a function, we can replace the function body.\n const functionScope = getScope(path).getFunctionParent();\n const scopePath = functionScope?.path;\n if (scopePath?.isFunction()) {\n const emptyBody = t.blockStatement([t.returnStatement(nullLiteral)]);\n\n // Is it not just a function, but a method `render`?\n if (getFunctionName(scopePath) === 'render') {\n const decl = scopePath.findParent((p) => p.isClassDeclaration());\n\n // Replace the whole component\n if (decl?.isClassDeclaration()) {\n mutate(decl, (p) => {\n p.replaceWith(t.functionDeclaration(decl.node.id, [], emptyBody));\n });\n\n return;\n }\n }\n\n const body = scopePath.get('body');\n if (Array.isArray(body)) {\n throw new Error(\n \"A body of a function is expected to be a single element but an array was returned. It's possible if JS syntax has been changed since that code was written.\"\n );\n }\n\n const node: typeof scopePath.node = {\n ...scopePath.node,\n body: emptyBody,\n params: [],\n };\n\n mutate(scopePath, (p) => {\n p.replaceWith(node);\n });\n } else {\n mutate(path, (p) => {\n p.replaceWith(nullLiteral);\n });\n }\n}\n"],"mappings":"AAAA,SAASA,KAAK,IAAIC,CAAC,QAAQ,aAAa;AAQxC,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,MAAM,QAAQ,iBAAiB;AAExC,SAASC,eAAeA,CAACC,IAA4B,EAAiB;EACpE,IAAIA,IAAI,CAACC,aAAa,CAAC,CAAC,IAAIL,CAAC,CAACM,YAAY,CAACF,IAAI,CAACG,IAAI,CAACC,GAAG,CAAC,EAAE;IACzD,OAAOJ,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,IAAI;EAC3B;EAEA,OAAO,IAAI;AACb;AAEA,OAAO,SAASC,kBAAkBA,CAACN,IAAoC,EAAE;EACvE;EACA,MAAMO,WAAW,GAAGX,CAAC,CAACW,WAAW,CAAC,CAAC;;EAEnC;EACA;EACA,MAAMC,aAAa,GAAGX,QAAQ,CAACG,IAAI,CAAC,CAACS,iBAAiB,CAAC,CAAC;EACxD,MAAMC,SAAS,GAAGF,aAAa,EAAER,IAAI;EACrC,IAAIU,SAAS,EAAEC,UAAU,CAAC,CAAC,EAAE;IAC3B,MAAMC,SAAS,GAAGhB,CAAC,CAACiB,cAAc,CAAC,CAACjB,CAAC,CAACkB,eAAe,CAACP,WAAW,CAAC,CAAC,CAAC;;IAEpE;IACA,IAAIR,eAAe,CAACW,SAAS,CAAC,KAAK,QAAQ,EAAE;MAC3C,MAAMK,IAAI,GAAGL,SAAS,CAACM,UAAU,CAAEC,CAAC,IAAKA,CAAC,CAACC,kBAAkB,CAAC,CAAC,CAAC;;MAEhE;MACA,IAAIH,IAAI,EAAEG,kBAAkB,CAAC,CAAC,EAAE;QAC9BpB,MAAM,CAACiB,IAAI,EAAGE,CAAC,IAAK;UAClBA,CAAC,CAACE,WAAW,CAACvB,CAAC,CAACwB,mBAAmB,CAACL,IAAI,CAACZ,IAAI,CAACkB,EAAE,EAAE,EAAE,EAAET,SAAS,CAAC,CAAC;QACnE,CAAC,CAAC;QAEF;MACF;IACF;IAEA,MAAMU,IAAI,GAAGZ,SAAS,CAACa,GAAG,CAAC,MAAM,CAAC;IAClC,IAAIC,KAAK,CAACC,OAAO,CAACH,IAAI,CAAC,EAAE;MACvB,MAAM,IAAII,KAAK,CACb,6JACF,CAAC;IACH;IAEA,MAAMvB,IAA2B,GAAG;MAClC,GAAGO,SAAS,CAACP,IAAI;MACjBmB,IAAI,EAAEV,SAAS;MACfe,MAAM,EAAE;IACV,CAAC;IAED7B,MAAM,CAACY,SAAS,EAAGO,CAAC,IAAK;MACvBA,CAAC,CAACE,WAAW,CAAChB,IAAI,CAAC;IACrB,CAAC,CAAC;EACJ,CAAC,MAAM;IACLL,MAAM,CAACE,IAAI,EAAGiB,CAAC,IAAK;MAClBA,CAAC,CAACE,WAAW,CAACZ,WAAW,CAAC;IAC5B,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
|
package/lib/babel.js
DELETED
package/lib/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":[]}
|
package/lib/cache.js
DELETED
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.TransformCacheCollection = void 0;
|
|
7
|
-
var _crypto = require("crypto");
|
|
8
|
-
var _nodeFs = _interopRequireDefault(require("node:fs"));
|
|
9
|
-
var _shared = require("@wyw-in-js/shared");
|
|
10
|
-
var _getFileIdx = require("./utils/getFileIdx");
|
|
11
|
-
var _parseRequest = require("./utils/parseRequest");
|
|
12
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
-
function hashContent(content) {
|
|
14
|
-
return (0, _crypto.createHash)('sha256').update(content).digest('hex');
|
|
15
|
-
}
|
|
16
|
-
function isMissingFileError(error) {
|
|
17
|
-
if (!error || typeof error !== 'object') {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
const {
|
|
21
|
-
code
|
|
22
|
-
} = error;
|
|
23
|
-
return code === 'ENOENT' || code === 'ENOTDIR';
|
|
24
|
-
}
|
|
25
|
-
const cacheLogger = _shared.logger.extend('cache');
|
|
26
|
-
const cacheNames = ['barrelManifests', 'entrypoints', 'exports'];
|
|
27
|
-
const loggers = cacheNames.reduce((acc, key) => ({
|
|
28
|
-
...acc,
|
|
29
|
-
[key]: cacheLogger.extend(key)
|
|
30
|
-
}), {});
|
|
31
|
-
class TransformCacheCollection {
|
|
32
|
-
barrelManifestDependencies = new Map();
|
|
33
|
-
contentHashes = new Map();
|
|
34
|
-
fileMtimes = new Map();
|
|
35
|
-
exportDependencies = new Map();
|
|
36
|
-
constructor(caches = {}) {
|
|
37
|
-
this.barrelManifests = caches.barrelManifests || new Map();
|
|
38
|
-
this.entrypoints = caches.entrypoints || new Map();
|
|
39
|
-
this.exports = caches.exports || new Map();
|
|
40
|
-
}
|
|
41
|
-
add(cacheName, key, value) {
|
|
42
|
-
const cache = this[cacheName];
|
|
43
|
-
loggers[cacheName]('%s:add %s %f', (0, _getFileIdx.getFileIdx)(key), key, () => {
|
|
44
|
-
if (value === undefined) {
|
|
45
|
-
return cache.has(key) ? 'removed' : 'noop';
|
|
46
|
-
}
|
|
47
|
-
if (!cache.has(key)) {
|
|
48
|
-
return 'added';
|
|
49
|
-
}
|
|
50
|
-
return cache.get(key) === value ? 'unchanged' : 'updated';
|
|
51
|
-
});
|
|
52
|
-
if (value === undefined) {
|
|
53
|
-
cache.delete(key);
|
|
54
|
-
this.contentHashes.delete(key);
|
|
55
|
-
this.clearCacheDependencies(cacheName, key);
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
this.clearCacheDependencies(cacheName, key);
|
|
59
|
-
cache.set(key, value);
|
|
60
|
-
if ('initialCode' in value) {
|
|
61
|
-
const maybeOriginalCode = value.originalCode;
|
|
62
|
-
const isLoaded = typeof value.initialCode === 'string';
|
|
63
|
-
const source = isLoaded ? 'loaded' : 'fs';
|
|
64
|
-
let resolvedCode;
|
|
65
|
-
if (isLoaded) {
|
|
66
|
-
resolvedCode = value.initialCode;
|
|
67
|
-
} else if (typeof maybeOriginalCode === 'string') {
|
|
68
|
-
resolvedCode = maybeOriginalCode;
|
|
69
|
-
}
|
|
70
|
-
if (resolvedCode !== undefined) {
|
|
71
|
-
this.setContentHash(key, source, hashContent(resolvedCode));
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
try {
|
|
75
|
-
const fileContent = _nodeFs.default.readFileSync((0, _parseRequest.stripQueryAndHash)(key), 'utf8');
|
|
76
|
-
this.setContentHash(key, source, hashContent(fileContent));
|
|
77
|
-
} catch {
|
|
78
|
-
this.setContentHash(key, source, hashContent(''));
|
|
79
|
-
}
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
if (cacheName === 'barrelManifests') {
|
|
83
|
-
try {
|
|
84
|
-
const fileContent = _nodeFs.default.readFileSync((0, _parseRequest.stripQueryAndHash)(key), 'utf8');
|
|
85
|
-
this.setContentHash(key, 'fs', hashContent(fileContent));
|
|
86
|
-
} catch {
|
|
87
|
-
this.setContentHash(key, 'fs', hashContent(''));
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
clear(cacheName) {
|
|
92
|
-
if (cacheName === 'all') {
|
|
93
|
-
cacheNames.forEach(name => {
|
|
94
|
-
this.clear(name);
|
|
95
|
-
});
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
loggers[cacheName]('clear');
|
|
99
|
-
const cache = this[cacheName];
|
|
100
|
-
cache.clear();
|
|
101
|
-
this.clearCacheDependencies(cacheName);
|
|
102
|
-
}
|
|
103
|
-
delete(cacheName, key) {
|
|
104
|
-
this.invalidate(cacheName, key);
|
|
105
|
-
}
|
|
106
|
-
get(cacheName, key) {
|
|
107
|
-
const cache = this[cacheName];
|
|
108
|
-
const res = cache.get(key);
|
|
109
|
-
loggers[cacheName]('get', key, res === undefined ? 'miss' : 'hit');
|
|
110
|
-
return res;
|
|
111
|
-
}
|
|
112
|
-
has(cacheName, key) {
|
|
113
|
-
const cache = this[cacheName];
|
|
114
|
-
const res = cache.has(key);
|
|
115
|
-
loggers[cacheName]('has', key, res);
|
|
116
|
-
return res;
|
|
117
|
-
}
|
|
118
|
-
invalidate(cacheName, key) {
|
|
119
|
-
const cache = this[cacheName];
|
|
120
|
-
if (!cache.has(key)) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
loggers[cacheName]('invalidate', key);
|
|
124
|
-
cache.delete(key);
|
|
125
|
-
this.clearCacheDependencies(cacheName, key);
|
|
126
|
-
}
|
|
127
|
-
invalidateForFile(filename) {
|
|
128
|
-
cacheNames.forEach(cacheName => {
|
|
129
|
-
this.invalidate(cacheName, filename);
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
invalidateIfChanged(filename, content, previousVisitedFiles, source = 'loaded', changedFiles = new Set()) {
|
|
133
|
-
if (changedFiles.has(filename)) {
|
|
134
|
-
return true;
|
|
135
|
-
}
|
|
136
|
-
const visitedFiles = new Set(previousVisitedFiles);
|
|
137
|
-
const fileEntrypoint = this.get('entrypoints', filename);
|
|
138
|
-
let anyDepChanged = false;
|
|
139
|
-
|
|
140
|
-
// We need to check all dependencies of the file
|
|
141
|
-
// because they might have changed as well.
|
|
142
|
-
if (!visitedFiles.has(filename) && (fileEntrypoint || this.hasCachedDependencies(filename))) {
|
|
143
|
-
visitedFiles.add(filename);
|
|
144
|
-
const invalidateOnDependencyChange = fileEntrypoint === null || fileEntrypoint === void 0 ? void 0 : fileEntrypoint.invalidateOnDependencyChange;
|
|
145
|
-
const dependenciesToCheck = new Map();
|
|
146
|
-
for (const [key, dependency] of (_fileEntrypoint$depen = fileEntrypoint === null || fileEntrypoint === void 0 ? void 0 : fileEntrypoint.dependencies) !== null && _fileEntrypoint$depen !== void 0 ? _fileEntrypoint$depen : []) {
|
|
147
|
-
var _fileEntrypoint$depen;
|
|
148
|
-
dependenciesToCheck.set(key, dependency);
|
|
149
|
-
}
|
|
150
|
-
for (const [key, dependency] of (_fileEntrypoint$inval = fileEntrypoint === null || fileEntrypoint === void 0 ? void 0 : fileEntrypoint.invalidationDependencies) !== null && _fileEntrypoint$inval !== void 0 ? _fileEntrypoint$inval : []) {
|
|
151
|
-
var _fileEntrypoint$inval;
|
|
152
|
-
if (!dependenciesToCheck.has(key)) {
|
|
153
|
-
dependenciesToCheck.set(key, dependency);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
for (const dependencyFilename of this.getCachedDependencies(filename)) {
|
|
157
|
-
if (![...dependenciesToCheck.values()].some(dependency => dependency.resolved === dependencyFilename)) {
|
|
158
|
-
dependenciesToCheck.set(dependencyFilename, {
|
|
159
|
-
resolved: dependencyFilename
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
for (const [, dependency] of dependenciesToCheck) {
|
|
164
|
-
const dependencyFilename = dependency.resolved;
|
|
165
|
-
if (dependencyFilename) {
|
|
166
|
-
let dependencyContent;
|
|
167
|
-
try {
|
|
168
|
-
dependencyContent = _nodeFs.default.readFileSync((0, _parseRequest.stripQueryAndHash)(dependencyFilename), 'utf8');
|
|
169
|
-
} catch (error) {
|
|
170
|
-
if (!isMissingFileError(error)) {
|
|
171
|
-
throw error;
|
|
172
|
-
}
|
|
173
|
-
this.invalidateForFile(dependencyFilename);
|
|
174
|
-
anyDepChanged = true;
|
|
175
|
-
// eslint-disable-next-line no-continue
|
|
176
|
-
continue;
|
|
177
|
-
}
|
|
178
|
-
const dependencyChanged = this.invalidateIfChanged(dependencyFilename, dependencyContent, visitedFiles, 'fs', changedFiles);
|
|
179
|
-
if (dependencyChanged && invalidateOnDependencyChange !== null && invalidateOnDependencyChange !== void 0 && invalidateOnDependencyChange.has(dependencyFilename)) {
|
|
180
|
-
cacheLogger('dependency affecting output has changed, invalidate all for %s', filename);
|
|
181
|
-
this.invalidateForFile(filename);
|
|
182
|
-
changedFiles.add(filename);
|
|
183
|
-
return true;
|
|
184
|
-
}
|
|
185
|
-
if (dependencyChanged) {
|
|
186
|
-
anyDepChanged = true;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
const existing = this.contentHashes.get(filename);
|
|
192
|
-
const previousHash = existing === null || existing === void 0 ? void 0 : existing[source];
|
|
193
|
-
const newHash = hashContent(content);
|
|
194
|
-
if (previousHash === undefined) {
|
|
195
|
-
const otherSource = source === 'fs' ? 'loaded' : 'fs';
|
|
196
|
-
const otherHash = existing === null || existing === void 0 ? void 0 : existing[otherSource];
|
|
197
|
-
if (otherHash !== undefined && otherHash !== newHash || anyDepChanged) {
|
|
198
|
-
cacheLogger('content has changed, invalidate all for %s', filename);
|
|
199
|
-
this.setContentHash(filename, source, newHash);
|
|
200
|
-
this.invalidateForFile(filename);
|
|
201
|
-
changedFiles.add(filename);
|
|
202
|
-
return true;
|
|
203
|
-
}
|
|
204
|
-
this.setContentHash(filename, source, newHash);
|
|
205
|
-
if (anyDepChanged) {
|
|
206
|
-
this.invalidateForFile(filename);
|
|
207
|
-
changedFiles.add(filename);
|
|
208
|
-
return true;
|
|
209
|
-
}
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
if (previousHash !== newHash || anyDepChanged) {
|
|
213
|
-
cacheLogger('content has changed, invalidate all for %s', filename);
|
|
214
|
-
this.setContentHash(filename, source, newHash);
|
|
215
|
-
this.invalidateForFile(filename);
|
|
216
|
-
changedFiles.add(filename);
|
|
217
|
-
return true;
|
|
218
|
-
}
|
|
219
|
-
return false;
|
|
220
|
-
}
|
|
221
|
-
setCacheDependencies(cacheName, key, dependencies) {
|
|
222
|
-
const cache = this.getDependencyCache(cacheName);
|
|
223
|
-
const nextDependencies = new Set([...dependencies].filter(dependency => dependency.length > 0));
|
|
224
|
-
if (nextDependencies.size === 0) {
|
|
225
|
-
cache.delete(key);
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
cache.set(key, nextDependencies);
|
|
229
|
-
}
|
|
230
|
-
clearCacheDependencies(cacheName, key) {
|
|
231
|
-
if (cacheName === 'all') {
|
|
232
|
-
this.barrelManifestDependencies.clear();
|
|
233
|
-
this.exportDependencies.clear();
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
if (cacheName === 'barrelManifests') {
|
|
237
|
-
if (key === undefined) {
|
|
238
|
-
this.barrelManifestDependencies.clear();
|
|
239
|
-
} else {
|
|
240
|
-
this.barrelManifestDependencies.delete(key);
|
|
241
|
-
}
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
if (cacheName === 'exports') {
|
|
245
|
-
if (key === undefined) {
|
|
246
|
-
this.exportDependencies.clear();
|
|
247
|
-
} else {
|
|
248
|
-
this.exportDependencies.delete(key);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
getCachedDependencies(filename) {
|
|
253
|
-
var _this$barrelManifestD, _this$exportDependenc;
|
|
254
|
-
return new Set([...((_this$barrelManifestD = this.barrelManifestDependencies.get(filename)) !== null && _this$barrelManifestD !== void 0 ? _this$barrelManifestD : []), ...((_this$exportDependenc = this.exportDependencies.get(filename)) !== null && _this$exportDependenc !== void 0 ? _this$exportDependenc : [])]);
|
|
255
|
-
}
|
|
256
|
-
getDependencyCache(cacheName) {
|
|
257
|
-
return cacheName === 'barrelManifests' ? this.barrelManifestDependencies : this.exportDependencies;
|
|
258
|
-
}
|
|
259
|
-
hasCachedDependencies(filename) {
|
|
260
|
-
return this.getCachedDependencies(filename).size > 0;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
/**
|
|
264
|
-
* Fast check if a file changed on disk since last seen.
|
|
265
|
-
* Uses mtime as a fast path — only reads the file if mtime differs.
|
|
266
|
-
* Returns true if the file changed (cache was invalidated).
|
|
267
|
-
*/
|
|
268
|
-
checkFreshness(filename, strippedFilename) {
|
|
269
|
-
try {
|
|
270
|
-
const currentMtime = _nodeFs.default.statSync(strippedFilename).mtimeMs;
|
|
271
|
-
const cachedMtime = this.fileMtimes.get(filename);
|
|
272
|
-
if (cachedMtime !== undefined && currentMtime === cachedMtime) {
|
|
273
|
-
return false;
|
|
274
|
-
}
|
|
275
|
-
const content = _nodeFs.default.readFileSync(strippedFilename, 'utf-8');
|
|
276
|
-
this.fileMtimes.set(filename, currentMtime);
|
|
277
|
-
if (this.invalidateIfChanged(filename, content, undefined, 'fs')) {
|
|
278
|
-
return true;
|
|
279
|
-
}
|
|
280
|
-
return false;
|
|
281
|
-
} catch (error) {
|
|
282
|
-
if (!isMissingFileError(error)) {
|
|
283
|
-
throw error;
|
|
284
|
-
}
|
|
285
|
-
this.invalidateForFile(filename);
|
|
286
|
-
return true;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
setContentHash(filename, source, hash) {
|
|
290
|
-
const current = this.contentHashes.get(filename);
|
|
291
|
-
if (current) {
|
|
292
|
-
current[source] = hash;
|
|
293
|
-
} else {
|
|
294
|
-
this.contentHashes.set(filename, {
|
|
295
|
-
[source]: hash
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
if (source === 'fs') {
|
|
299
|
-
try {
|
|
300
|
-
this.fileMtimes.set(filename, _nodeFs.default.statSync((0, _parseRequest.stripQueryAndHash)(filename)).mtimeMs);
|
|
301
|
-
} catch {
|
|
302
|
-
// ignore
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
exports.TransformCacheCollection = TransformCacheCollection;
|
|
308
|
-
//# sourceMappingURL=cache.js.map
|
package/lib/cache.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","names":["_crypto","require","_nodeFs","_interopRequireDefault","_shared","_getFileIdx","_parseRequest","e","__esModule","default","hashContent","content","createHash","update","digest","isMissingFileError","error","code","cacheLogger","logger","extend","cacheNames","loggers","reduce","acc","key","TransformCacheCollection","barrelManifestDependencies","Map","contentHashes","fileMtimes","exportDependencies","constructor","caches","barrelManifests","entrypoints","exports","add","cacheName","value","cache","getFileIdx","undefined","has","get","delete","clearCacheDependencies","set","maybeOriginalCode","originalCode","isLoaded","initialCode","source","resolvedCode","setContentHash","fileContent","fs","readFileSync","stripQueryAndHash","clear","forEach","name","invalidate","res","invalidateForFile","filename","invalidateIfChanged","previousVisitedFiles","changedFiles","Set","visitedFiles","fileEntrypoint","anyDepChanged","hasCachedDependencies","invalidateOnDependencyChange","dependenciesToCheck","dependency","_fileEntrypoint$depen","dependencies","_fileEntrypoint$inval","invalidationDependencies","dependencyFilename","getCachedDependencies","values","some","resolved","dependencyContent","dependencyChanged","existing","previousHash","newHash","otherSource","otherHash","setCacheDependencies","getDependencyCache","nextDependencies","filter","length","size","_this$barrelManifestD","_this$exportDependenc","checkFreshness","strippedFilename","currentMtime","statSync","mtimeMs","cachedMtime","hash","current"],"sources":["../src/cache.ts"],"sourcesContent":["import { createHash } from 'crypto';\nimport fs from 'node:fs';\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { BarrelManifestCacheEntry } from './transform/barrelManifest';\nimport type { Entrypoint } from './transform/Entrypoint';\nimport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nimport { getFileIdx } from './utils/getFileIdx';\nimport { stripQueryAndHash } from './utils/parseRequest';\n\nfunction hashContent(content: string) {\n return createHash('sha256').update(content).digest('hex');\n}\n\nfunction isMissingFileError(error: unknown): boolean {\n if (!error || typeof error !== 'object') {\n return false;\n }\n\n const { code } = error as NodeJS.ErrnoException;\n return code === 'ENOENT' || code === 'ENOTDIR';\n}\n\ninterface IBaseCachedEntrypoint {\n dependencies: Map<string, { resolved: string | null }>;\n initialCode?: string;\n invalidateOnDependencyChange?: Set<string>;\n invalidationDependencies?: Map<string, { resolved: string | null }>;\n}\n\ninterface ICaches<TEntrypoint extends IBaseCachedEntrypoint> {\n barrelManifests: Map<string, BarrelManifestCacheEntry>;\n entrypoints: Map<string, TEntrypoint>;\n exports: Map<string, string[]>;\n}\n\ntype MapValue<T> = T extends Map<string, infer V> ? V : never;\n\nconst cacheLogger = logger.extend('cache');\n\nconst cacheNames = ['barrelManifests', 'entrypoints', 'exports'] as const;\ntype CacheNames = (typeof cacheNames)[number];\n\nconst loggers = cacheNames.reduce(\n (acc, key) => ({\n ...acc,\n [key]: cacheLogger.extend(key),\n }),\n {} as Record<CacheNames, typeof logger>\n);\n\nexport class TransformCacheCollection<\n TEntrypoint extends IBaseCachedEntrypoint = Entrypoint | IEvaluatedEntrypoint,\n> {\n public readonly barrelManifests: Map<string, BarrelManifestCacheEntry>;\n\n public readonly entrypoints: Map<string, TEntrypoint>;\n\n public readonly exports: Map<string, string[]>;\n\n private readonly barrelManifestDependencies = new Map<string, Set<string>>();\n\n private contentHashes = new Map<string, { fs?: string; loaded?: string }>();\n\n private fileMtimes = new Map<string, number>();\n\n private readonly exportDependencies = new Map<string, Set<string>>();\n\n constructor(caches: Partial<ICaches<TEntrypoint>> = {}) {\n this.barrelManifests = caches.barrelManifests || new Map();\n this.entrypoints = caches.entrypoints || new Map();\n this.exports = caches.exports || new Map();\n }\n\n public add<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches<TEntrypoint>[TCache]>,\n >(cacheName: TCache, key: string, value: TValue): void {\n const cache = this[cacheName] as Map<string, TValue>;\n loggers[cacheName]('%s:add %s %f', getFileIdx(key), key, () => {\n if (value === undefined) {\n return cache.has(key) ? 'removed' : 'noop';\n }\n\n if (!cache.has(key)) {\n return 'added';\n }\n\n return cache.get(key) === value ? 'unchanged' : 'updated';\n });\n\n if (value === undefined) {\n cache.delete(key);\n this.contentHashes.delete(key);\n this.clearCacheDependencies(cacheName, key);\n return;\n }\n\n this.clearCacheDependencies(cacheName, key);\n cache.set(key, value);\n\n if ('initialCode' in value) {\n const maybeOriginalCode = (value as unknown as { originalCode?: unknown })\n .originalCode;\n const isLoaded = typeof value.initialCode === 'string';\n const source = isLoaded ? 'loaded' : 'fs';\n\n let resolvedCode: string | undefined;\n if (isLoaded) {\n resolvedCode = value.initialCode;\n } else if (typeof maybeOriginalCode === 'string') {\n resolvedCode = maybeOriginalCode;\n }\n\n if (resolvedCode !== undefined) {\n this.setContentHash(key, source, hashContent(resolvedCode));\n return;\n }\n\n try {\n const fileContent = fs.readFileSync(stripQueryAndHash(key), 'utf8');\n this.setContentHash(key, source, hashContent(fileContent));\n } catch {\n this.setContentHash(key, source, hashContent(''));\n }\n\n return;\n }\n\n if (cacheName === 'barrelManifests') {\n try {\n const fileContent = fs.readFileSync(stripQueryAndHash(key), 'utf8');\n this.setContentHash(key, 'fs', hashContent(fileContent));\n } catch {\n this.setContentHash(key, 'fs', hashContent(''));\n }\n }\n }\n\n public clear(cacheName: CacheNames | 'all'): void {\n if (cacheName === 'all') {\n cacheNames.forEach((name) => {\n this.clear(name);\n });\n\n return;\n }\n\n loggers[cacheName]('clear');\n const cache = this[cacheName] as Map<string, unknown>;\n\n cache.clear();\n this.clearCacheDependencies(cacheName);\n }\n\n public delete(cacheName: CacheNames, key: string): void {\n this.invalidate(cacheName, key);\n }\n\n public get<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches<TEntrypoint>[TCache]>,\n >(cacheName: TCache, key: string): TValue | undefined {\n const cache = this[cacheName] as Map<string, TValue>;\n\n const res = cache.get(key);\n loggers[cacheName]('get', key, res === undefined ? 'miss' : 'hit');\n return res;\n }\n\n public has(cacheName: CacheNames, key: string): boolean {\n const cache = this[cacheName] as Map<string, unknown>;\n\n const res = cache.has(key);\n loggers[cacheName]('has', key, res);\n return res;\n }\n\n public invalidate(cacheName: CacheNames, key: string): void {\n const cache = this[cacheName] as Map<string, unknown>;\n if (!cache.has(key)) {\n return;\n }\n\n loggers[cacheName]('invalidate', key);\n\n cache.delete(key);\n this.clearCacheDependencies(cacheName, key);\n }\n\n public invalidateForFile(filename: string) {\n cacheNames.forEach((cacheName) => {\n this.invalidate(cacheName, filename);\n });\n }\n\n public invalidateIfChanged(\n filename: string,\n content: string,\n previousVisitedFiles?: Set<string>,\n source: 'fs' | 'loaded' = 'loaded',\n changedFiles = new Set<string>()\n ) {\n if (changedFiles.has(filename)) {\n return true;\n }\n\n const visitedFiles = new Set(previousVisitedFiles);\n const fileEntrypoint = this.get('entrypoints', filename);\n let anyDepChanged = false;\n\n // We need to check all dependencies of the file\n // because they might have changed as well.\n if (\n !visitedFiles.has(filename) &&\n (fileEntrypoint || this.hasCachedDependencies(filename))\n ) {\n visitedFiles.add(filename);\n const invalidateOnDependencyChange =\n fileEntrypoint?.invalidateOnDependencyChange;\n\n const dependenciesToCheck = new Map<\n string,\n { resolved: string | null }\n >();\n\n for (const [key, dependency] of fileEntrypoint?.dependencies ?? []) {\n dependenciesToCheck.set(key, dependency);\n }\n\n for (const [\n key,\n dependency,\n ] of fileEntrypoint?.invalidationDependencies ?? []) {\n if (!dependenciesToCheck.has(key)) {\n dependenciesToCheck.set(key, dependency);\n }\n }\n\n for (const dependencyFilename of this.getCachedDependencies(filename)) {\n if (\n ![...dependenciesToCheck.values()].some(\n (dependency) => dependency.resolved === dependencyFilename\n )\n ) {\n dependenciesToCheck.set(dependencyFilename, {\n resolved: dependencyFilename,\n });\n }\n }\n\n for (const [, dependency] of dependenciesToCheck) {\n const dependencyFilename = dependency.resolved;\n\n if (dependencyFilename) {\n let dependencyContent: string;\n try {\n dependencyContent = fs.readFileSync(\n stripQueryAndHash(dependencyFilename),\n 'utf8'\n );\n } catch (error) {\n if (!isMissingFileError(error)) {\n throw error;\n }\n\n this.invalidateForFile(dependencyFilename);\n anyDepChanged = true;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const dependencyChanged = this.invalidateIfChanged(\n dependencyFilename,\n dependencyContent,\n visitedFiles,\n 'fs',\n changedFiles\n );\n\n if (\n dependencyChanged &&\n invalidateOnDependencyChange?.has(dependencyFilename)\n ) {\n cacheLogger(\n 'dependency affecting output has changed, invalidate all for %s',\n filename\n );\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n\n return true;\n }\n\n if (dependencyChanged) {\n anyDepChanged = true;\n }\n }\n }\n }\n\n const existing = this.contentHashes.get(filename);\n const previousHash = existing?.[source];\n const newHash = hashContent(content);\n\n if (previousHash === undefined) {\n const otherSource = source === 'fs' ? 'loaded' : 'fs';\n const otherHash = existing?.[otherSource];\n\n if ((otherHash !== undefined && otherHash !== newHash) || anyDepChanged) {\n cacheLogger('content has changed, invalidate all for %s', filename);\n this.setContentHash(filename, source, newHash);\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n\n return true;\n }\n\n this.setContentHash(filename, source, newHash);\n if (anyDepChanged) {\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n return true;\n }\n return false;\n }\n\n if (previousHash !== newHash || anyDepChanged) {\n cacheLogger('content has changed, invalidate all for %s', filename);\n this.setContentHash(filename, source, newHash);\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n\n return true;\n }\n\n return false;\n }\n\n public setCacheDependencies(\n cacheName: 'barrelManifests' | 'exports',\n key: string,\n dependencies: Iterable<string>\n ): void {\n const cache = this.getDependencyCache(cacheName);\n const nextDependencies = new Set(\n [...dependencies].filter((dependency) => dependency.length > 0)\n );\n\n if (nextDependencies.size === 0) {\n cache.delete(key);\n return;\n }\n\n cache.set(key, nextDependencies);\n }\n\n private clearCacheDependencies(cacheName: CacheNames | 'all', key?: string) {\n if (cacheName === 'all') {\n this.barrelManifestDependencies.clear();\n this.exportDependencies.clear();\n return;\n }\n\n if (cacheName === 'barrelManifests') {\n if (key === undefined) {\n this.barrelManifestDependencies.clear();\n } else {\n this.barrelManifestDependencies.delete(key);\n }\n return;\n }\n\n if (cacheName === 'exports') {\n if (key === undefined) {\n this.exportDependencies.clear();\n } else {\n this.exportDependencies.delete(key);\n }\n }\n }\n\n private getCachedDependencies(filename: string): Set<string> {\n return new Set([\n ...(this.barrelManifestDependencies.get(filename) ?? []),\n ...(this.exportDependencies.get(filename) ?? []),\n ]);\n }\n\n private getDependencyCache(cacheName: 'barrelManifests' | 'exports') {\n return cacheName === 'barrelManifests'\n ? this.barrelManifestDependencies\n : this.exportDependencies;\n }\n\n private hasCachedDependencies(filename: string): boolean {\n return this.getCachedDependencies(filename).size > 0;\n }\n\n /**\n * Fast check if a file changed on disk since last seen.\n * Uses mtime as a fast path — only reads the file if mtime differs.\n * Returns true if the file changed (cache was invalidated).\n */\n public checkFreshness(filename: string, strippedFilename: string): boolean {\n try {\n const currentMtime = fs.statSync(strippedFilename).mtimeMs;\n const cachedMtime = this.fileMtimes.get(filename);\n\n if (cachedMtime !== undefined && currentMtime === cachedMtime) {\n return false;\n }\n\n const content = fs.readFileSync(strippedFilename, 'utf-8');\n this.fileMtimes.set(filename, currentMtime);\n\n if (this.invalidateIfChanged(filename, content, undefined, 'fs')) {\n return true;\n }\n\n return false;\n } catch (error) {\n if (!isMissingFileError(error)) {\n throw error;\n }\n\n this.invalidateForFile(filename);\n return true;\n }\n }\n\n private setContentHash(\n filename: string,\n source: 'fs' | 'loaded',\n hash: string\n ) {\n const current = this.contentHashes.get(filename);\n if (current) {\n current[source] = hash;\n } else {\n this.contentHashes.set(filename, { [source]: hash });\n }\n\n if (source === 'fs') {\n try {\n this.fileMtimes.set(\n filename,\n fs.statSync(stripQueryAndHash(filename)).mtimeMs\n );\n } catch {\n // ignore\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|