@atlaspack/core 2.16.2-canary.37 → 2.16.2-canary.371
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/CHANGELOG.md +941 -0
- package/dist/AssetGraph.js +591 -0
- package/dist/Atlaspack.js +666 -0
- package/dist/AtlaspackConfig.js +324 -0
- package/dist/AtlaspackConfig.schema.js +117 -0
- package/dist/BundleGraph.js +1740 -0
- package/dist/CommittedAsset.js +142 -0
- package/dist/Dependency.js +125 -0
- package/dist/Environment.js +132 -0
- package/dist/EnvironmentManager.js +108 -0
- package/dist/IdentifierRegistry.js +38 -0
- package/dist/InternalConfig.js +37 -0
- package/dist/PackagerRunner.js +545 -0
- package/dist/ReporterRunner.js +151 -0
- package/dist/RequestTracker.js +1360 -0
- package/dist/SymbolPropagation.js +620 -0
- package/dist/TargetDescriptor.schema.js +143 -0
- package/dist/Transformation.js +514 -0
- package/dist/UncommittedAsset.js +315 -0
- package/dist/Validation.js +196 -0
- package/dist/applyRuntimes.js +383 -0
- package/dist/assetUtils.js +169 -0
- package/dist/atlaspack-v3/AtlaspackV3.js +74 -0
- package/dist/atlaspack-v3/NapiWorkerPool.js +81 -0
- package/dist/atlaspack-v3/fs.js +52 -0
- package/dist/atlaspack-v3/index.js +25 -0
- package/dist/atlaspack-v3/jsCallable.js +16 -0
- package/dist/atlaspack-v3/worker/compat/asset-symbols.js +190 -0
- package/dist/atlaspack-v3/worker/compat/bitflags.js +98 -0
- package/dist/atlaspack-v3/worker/compat/dependency.js +43 -0
- package/dist/atlaspack-v3/worker/compat/environment.js +57 -0
- package/dist/atlaspack-v3/worker/compat/index.js +25 -0
- package/dist/atlaspack-v3/worker/compat/mutable-asset.js +152 -0
- package/dist/atlaspack-v3/worker/compat/plugin-config.js +64 -0
- package/dist/atlaspack-v3/worker/compat/plugin-logger.js +26 -0
- package/dist/atlaspack-v3/worker/compat/plugin-options.js +137 -0
- package/dist/atlaspack-v3/worker/compat/plugin-tracer.js +10 -0
- package/dist/atlaspack-v3/worker/compat/target.js +14 -0
- package/dist/atlaspack-v3/worker/side-effect-detector.js +243 -0
- package/dist/atlaspack-v3/worker/worker.js +381 -0
- package/dist/constants.js +17 -0
- package/dist/dumpGraphToGraphViz.js +281 -0
- package/dist/index.js +62 -0
- package/dist/loadAtlaspackPlugin.js +128 -0
- package/dist/loadDotEnv.js +41 -0
- package/dist/projectPath.js +83 -0
- package/dist/public/Asset.js +279 -0
- package/dist/public/Bundle.js +224 -0
- package/dist/public/BundleGraph.js +371 -0
- package/dist/public/BundleGroup.js +53 -0
- package/dist/public/Config.js +286 -0
- package/dist/public/Dependency.js +138 -0
- package/dist/public/Environment.js +278 -0
- package/dist/public/MutableBundleGraph.js +277 -0
- package/dist/public/PluginOptions.js +80 -0
- package/dist/public/Symbols.js +248 -0
- package/dist/public/Target.js +69 -0
- package/dist/registerCoreWithSerializer.js +38 -0
- package/dist/requests/AssetGraphRequest.js +439 -0
- package/dist/requests/AssetGraphRequestRust.js +273 -0
- package/dist/requests/AssetRequest.js +130 -0
- package/dist/requests/AtlaspackBuildRequest.js +92 -0
- package/dist/requests/AtlaspackConfigRequest.js +493 -0
- package/dist/requests/BundleGraphRequest.js +447 -0
- package/dist/requests/ConfigRequest.js +246 -0
- package/dist/requests/DevDepRequest.js +204 -0
- package/dist/requests/EntryRequest.js +314 -0
- package/dist/requests/PackageRequest.js +72 -0
- package/dist/requests/PathRequest.js +349 -0
- package/dist/requests/TargetRequest.js +1311 -0
- package/dist/requests/ValidationRequest.js +49 -0
- package/dist/requests/WriteBundleRequest.js +254 -0
- package/dist/requests/WriteBundlesRequest.js +184 -0
- package/dist/requests/asset-graph-diff.js +128 -0
- package/dist/requests/asset-graph-dot.js +131 -0
- package/dist/resolveOptions.js +269 -0
- package/dist/rustWorkerThreadDylibHack.js +19 -0
- package/dist/serializerCore.browser.js +43 -0
- package/dist/summarizeRequest.js +39 -0
- package/dist/types.js +31 -0
- package/dist/utils.js +172 -0
- package/dist/worker.js +123 -0
- package/lib/AssetGraph.js +111 -14
- package/lib/Atlaspack.js +94 -41
- package/lib/AtlaspackConfig.js +15 -3
- package/lib/AtlaspackConfig.schema.js +16 -5
- package/lib/BundleGraph.js +197 -32
- package/lib/CommittedAsset.js +7 -1
- package/lib/Dependency.js +8 -2
- package/lib/Environment.js +15 -8
- package/lib/EnvironmentManager.js +143 -0
- package/lib/IdentifierRegistry.js +1 -3
- package/lib/InternalConfig.js +3 -2
- package/lib/PackagerRunner.js +90 -27
- package/lib/ReporterRunner.js +6 -9
- package/lib/RequestTracker.js +266 -156
- package/lib/SymbolPropagation.js +42 -18
- package/lib/TargetDescriptor.schema.js +7 -1
- package/lib/Transformation.js +66 -15
- package/lib/UncommittedAsset.js +33 -12
- package/lib/Validation.js +18 -2
- package/lib/applyRuntimes.js +96 -4
- package/lib/assetUtils.js +15 -5
- package/lib/atlaspack-v3/AtlaspackV3.js +52 -14
- package/lib/atlaspack-v3/NapiWorkerPool.js +28 -1
- package/lib/atlaspack-v3/fs.js +3 -1
- package/lib/atlaspack-v3/index.js +28 -1
- package/lib/atlaspack-v3/jsCallable.js +0 -2
- package/lib/atlaspack-v3/worker/compat/asset-symbols.js +7 -4
- package/lib/atlaspack-v3/worker/compat/bitflags.js +31 -25
- package/lib/atlaspack-v3/worker/compat/dependency.js +4 -1
- package/lib/atlaspack-v3/worker/compat/environment.js +10 -7
- package/lib/atlaspack-v3/worker/compat/mutable-asset.js +15 -10
- package/lib/atlaspack-v3/worker/compat/plugin-config.js +13 -34
- package/lib/atlaspack-v3/worker/compat/plugin-options.js +16 -0
- package/lib/atlaspack-v3/worker/compat/plugin-tracer.js +3 -0
- package/lib/atlaspack-v3/worker/compat/target.js +2 -0
- package/lib/atlaspack-v3/worker/index.js +3 -0
- package/lib/atlaspack-v3/worker/side-effect-detector.js +215 -0
- package/lib/atlaspack-v3/worker/worker.js +199 -71
- package/lib/constants.js +0 -1
- package/lib/dumpGraphToGraphViz.js +71 -16
- package/lib/index.js +45 -1
- package/lib/loadDotEnv.js +4 -1
- package/lib/projectPath.js +5 -0
- package/lib/public/Asset.js +21 -11
- package/lib/public/Bundle.js +15 -16
- package/lib/public/BundleGraph.js +25 -22
- package/lib/public/BundleGroup.js +4 -5
- package/lib/public/Config.js +118 -17
- package/lib/public/Dependency.js +8 -6
- package/lib/public/Environment.js +12 -7
- package/lib/public/MutableBundleGraph.js +54 -12
- package/lib/public/PluginOptions.js +2 -2
- package/lib/public/Symbols.js +11 -11
- package/lib/public/Target.js +7 -6
- package/lib/registerCoreWithSerializer.js +5 -3
- package/lib/requests/AssetGraphRequest.js +74 -27
- package/lib/requests/AssetGraphRequestRust.js +140 -64
- package/lib/requests/AssetRequest.js +23 -6
- package/lib/requests/AtlaspackBuildRequest.js +43 -4
- package/lib/requests/AtlaspackConfigRequest.js +27 -16
- package/lib/requests/BundleGraphRequest.js +41 -24
- package/lib/requests/ConfigRequest.js +53 -4
- package/lib/requests/DevDepRequest.js +31 -5
- package/lib/requests/EntryRequest.js +2 -0
- package/lib/requests/PackageRequest.js +16 -2
- package/lib/requests/PathRequest.js +24 -3
- package/lib/requests/TargetRequest.js +122 -57
- package/lib/requests/ValidationRequest.js +5 -1
- package/lib/requests/WriteBundleRequest.js +39 -11
- package/lib/requests/WriteBundlesRequest.js +51 -4
- package/lib/requests/asset-graph-diff.js +12 -7
- package/lib/requests/asset-graph-dot.js +1 -7
- package/lib/resolveOptions.js +38 -11
- package/lib/rustWorkerThreadDylibHack.js +0 -1
- package/lib/types/AssetGraph.d.ts +80 -0
- package/lib/types/Atlaspack.d.ts +52 -0
- package/lib/types/AtlaspackConfig.d.ts +65 -0
- package/lib/types/AtlaspackConfig.schema.d.ts +53 -0
- package/lib/types/BundleGraph.d.ts +184 -0
- package/lib/types/CommittedAsset.d.ts +23 -0
- package/lib/types/Dependency.d.ts +44 -0
- package/lib/types/Environment.d.ts +11 -0
- package/lib/types/EnvironmentManager.d.ts +37 -0
- package/lib/types/IdentifierRegistry.d.ts +6 -0
- package/lib/types/InternalConfig.d.ts +23 -0
- package/lib/types/PackagerRunner.d.ts +85 -0
- package/lib/types/ReporterRunner.d.ts +25 -0
- package/lib/types/RequestTracker.d.ts +385 -0
- package/lib/types/SymbolPropagation.d.ts +11 -0
- package/lib/types/TargetDescriptor.schema.d.ts +5 -0
- package/lib/types/Transformation.d.ts +72 -0
- package/lib/types/UncommittedAsset.d.ts +61 -0
- package/lib/types/Validation.d.ts +37 -0
- package/lib/types/applyRuntimes.d.ts +25 -0
- package/lib/types/assetUtils.d.ts +42 -0
- package/lib/types/atlaspack-v3/AtlaspackV3.d.ts +34 -0
- package/lib/types/atlaspack-v3/NapiWorkerPool.d.ts +13 -0
- package/lib/types/atlaspack-v3/fs.d.ts +12 -0
- package/lib/types/atlaspack-v3/index.d.ts +6 -0
- package/lib/types/atlaspack-v3/jsCallable.d.ts +1 -0
- package/lib/types/atlaspack-v3/worker/compat/asset-symbols.d.ts +51 -0
- package/lib/types/atlaspack-v3/worker/compat/bitflags.d.ts +14 -0
- package/lib/types/atlaspack-v3/worker/compat/dependency.d.ts +25 -0
- package/lib/types/atlaspack-v3/worker/compat/environment.d.ts +27 -0
- package/{src/atlaspack-v3/worker/compat/index.js → lib/types/atlaspack-v3/worker/compat/index.d.ts} +0 -1
- package/lib/types/atlaspack-v3/worker/compat/mutable-asset.d.ts +49 -0
- package/lib/types/atlaspack-v3/worker/compat/plugin-config.d.ts +29 -0
- package/lib/types/atlaspack-v3/worker/compat/plugin-logger.d.ts +9 -0
- package/lib/types/atlaspack-v3/worker/compat/plugin-options.d.ts +23 -0
- package/lib/types/atlaspack-v3/worker/compat/plugin-tracer.d.ts +5 -0
- package/lib/types/atlaspack-v3/worker/compat/target.d.ts +11 -0
- package/lib/types/atlaspack-v3/worker/side-effect-detector.d.ts +76 -0
- package/lib/types/atlaspack-v3/worker/worker.d.ts +80 -0
- package/lib/types/constants.d.ts +13 -0
- package/lib/types/dumpGraphToGraphViz.d.ts +10 -0
- package/lib/types/index.d.ts +8 -0
- package/lib/types/loadAtlaspackPlugin.d.ts +8 -0
- package/lib/types/loadDotEnv.d.ts +3 -0
- package/lib/types/projectPath.d.ts +19 -0
- package/lib/types/public/Asset.d.ts +74 -0
- package/lib/types/public/Bundle.d.ts +45 -0
- package/lib/types/public/BundleGraph.d.ts +72 -0
- package/lib/types/public/BundleGroup.d.ts +12 -0
- package/lib/types/public/Config.d.ts +75 -0
- package/lib/types/public/Dependency.d.ts +32 -0
- package/lib/types/public/Environment.d.ts +34 -0
- package/lib/types/public/MutableBundleGraph.d.ts +26 -0
- package/lib/types/public/PluginOptions.d.ts +25 -0
- package/lib/types/public/Symbols.d.ts +81 -0
- package/lib/types/public/Target.d.ts +16 -0
- package/lib/types/registerCoreWithSerializer.d.ts +2 -0
- package/lib/types/requests/AssetGraphRequest.d.ts +76 -0
- package/lib/types/requests/AssetGraphRequestRust.d.ts +21 -0
- package/lib/types/requests/AssetRequest.d.ts +16 -0
- package/lib/types/requests/AtlaspackBuildRequest.d.ts +33 -0
- package/lib/types/requests/AtlaspackConfigRequest.d.ts +45 -0
- package/lib/types/requests/BundleGraphRequest.d.ts +28 -0
- package/lib/types/requests/ConfigRequest.d.ts +67 -0
- package/lib/types/requests/DevDepRequest.d.ts +30 -0
- package/lib/types/requests/EntryRequest.d.ts +36 -0
- package/lib/types/requests/PackageRequest.d.ts +27 -0
- package/lib/types/requests/PathRequest.d.ts +48 -0
- package/lib/types/requests/TargetRequest.d.ts +48 -0
- package/lib/types/requests/ValidationRequest.d.ts +20 -0
- package/lib/types/requests/WriteBundleRequest.d.ts +28 -0
- package/lib/types/requests/WriteBundlesRequest.d.ts +32 -0
- package/lib/types/requests/asset-graph-diff.d.ts +1 -0
- package/lib/types/requests/asset-graph-dot.d.ts +9 -0
- package/lib/types/resolveOptions.d.ts +3 -0
- package/lib/types/rustWorkerThreadDylibHack.d.ts +9 -0
- package/lib/types/serializerCore.browser.d.ts +3 -0
- package/lib/types/summarizeRequest.d.ts +10 -0
- package/lib/types/types.d.ts +495 -0
- package/lib/types/utils.d.ts +23 -0
- package/lib/types/worker.d.ts +44 -0
- package/lib/types.js +8 -1
- package/lib/utils.js +17 -2
- package/lib/worker.js +30 -14
- package/package.json +25 -35
- package/src/{AssetGraph.js → AssetGraph.ts} +156 -52
- package/src/{Atlaspack.js → Atlaspack.ts} +134 -67
- package/src/{AtlaspackConfig.schema.js → AtlaspackConfig.schema.ts} +25 -19
- package/src/{AtlaspackConfig.js → AtlaspackConfig.ts} +78 -54
- package/src/{BundleGraph.js → BundleGraph.ts} +383 -140
- package/src/{CommittedAsset.js → CommittedAsset.ts} +15 -13
- package/src/{Dependency.js → Dependency.ts} +59 -42
- package/src/{Environment.js → Environment.ts} +24 -15
- package/src/EnvironmentManager.ts +154 -0
- package/src/{IdentifierRegistry.js → IdentifierRegistry.ts} +1 -4
- package/src/{InternalConfig.js → InternalConfig.ts} +22 -23
- package/src/{PackagerRunner.js → PackagerRunner.ts} +179 -87
- package/src/{ReporterRunner.js → ReporterRunner.ts} +13 -18
- package/src/{RequestTracker.js → RequestTracker.ts} +572 -357
- package/src/{SymbolPropagation.js → SymbolPropagation.ts} +165 -57
- package/src/{TargetDescriptor.schema.js → TargetDescriptor.schema.ts} +7 -1
- package/src/{Transformation.js → Transformation.ts} +110 -65
- package/src/{UncommittedAsset.js → UncommittedAsset.ts} +60 -39
- package/src/{Validation.js → Validation.ts} +32 -17
- package/src/{applyRuntimes.js → applyRuntimes.ts} +133 -26
- package/src/{assetUtils.js → assetUtils.ts} +49 -36
- package/src/atlaspack-v3/AtlaspackV3.ts +143 -0
- package/src/atlaspack-v3/NapiWorkerPool.ts +91 -0
- package/src/atlaspack-v3/{fs.js → fs.ts} +3 -4
- package/src/atlaspack-v3/{index.js → index.ts} +3 -4
- package/src/atlaspack-v3/jsCallable.ts +14 -0
- package/src/atlaspack-v3/worker/compat/{asset-symbols.js → asset-symbols.ts} +40 -30
- package/src/atlaspack-v3/worker/compat/bitflags.ts +102 -0
- package/src/atlaspack-v3/worker/compat/{dependency.js → dependency.ts} +13 -13
- package/src/atlaspack-v3/worker/compat/{environment.js → environment.ts} +13 -9
- package/src/atlaspack-v3/worker/compat/index.ts +9 -0
- package/src/atlaspack-v3/worker/compat/{mutable-asset.js → mutable-asset.ts} +21 -20
- package/src/atlaspack-v3/worker/compat/{plugin-config.js → plugin-config.ts} +25 -56
- package/src/atlaspack-v3/worker/compat/{plugin-logger.js → plugin-logger.ts} +0 -2
- package/src/atlaspack-v3/worker/compat/{plugin-options.js → plugin-options.ts} +19 -5
- package/src/atlaspack-v3/worker/compat/{plugin-tracer.js → plugin-tracer.ts} +2 -2
- package/src/atlaspack-v3/worker/compat/{target.js → target.ts} +3 -4
- package/src/atlaspack-v3/worker/index.js +2 -1
- package/src/atlaspack-v3/worker/side-effect-detector.ts +298 -0
- package/src/atlaspack-v3/worker/worker.ts +531 -0
- package/src/{constants.js → constants.ts} +0 -3
- package/src/{dumpGraphToGraphViz.js → dumpGraphToGraphViz.ts} +73 -28
- package/src/index.ts +18 -0
- package/src/{loadAtlaspackPlugin.js → loadAtlaspackPlugin.ts} +8 -9
- package/src/{loadDotEnv.js → loadDotEnv.ts} +2 -2
- package/src/{projectPath.js → projectPath.ts} +20 -9
- package/src/public/{Asset.js → Asset.ts} +41 -28
- package/src/public/{Bundle.js → Bundle.ts} +28 -29
- package/src/public/{BundleGraph.js → BundleGraph.ts} +103 -68
- package/src/public/{BundleGroup.js → BundleGroup.ts} +7 -10
- package/src/public/{Config.js → Config.ts} +171 -33
- package/src/public/{Dependency.js → Dependency.ts} +20 -17
- package/src/public/{Environment.js → Environment.ts} +28 -17
- package/src/public/{MutableBundleGraph.js → MutableBundleGraph.ts} +55 -24
- package/src/public/{PluginOptions.js → PluginOptions.ts} +6 -6
- package/src/public/{Symbols.js → Symbols.ts} +75 -36
- package/src/public/{Target.js → Target.ts} +10 -8
- package/src/{registerCoreWithSerializer.js → registerCoreWithSerializer.ts} +9 -7
- package/src/requests/{AssetGraphRequest.js → AssetGraphRequest.ts} +129 -80
- package/src/requests/AssetGraphRequestRust.ts +364 -0
- package/src/requests/{AssetRequest.js → AssetRequest.ts} +24 -18
- package/src/requests/AtlaspackBuildRequest.ts +163 -0
- package/src/requests/{AtlaspackConfigRequest.js → AtlaspackConfigRequest.ts} +72 -58
- package/src/requests/{BundleGraphRequest.js → BundleGraphRequest.ts} +97 -79
- package/src/requests/{ConfigRequest.js → ConfigRequest.ts} +110 -50
- package/src/requests/{DevDepRequest.js → DevDepRequest.ts} +60 -35
- package/src/requests/{EntryRequest.js → EntryRequest.ts} +36 -31
- package/src/requests/{PackageRequest.js → PackageRequest.ts} +34 -22
- package/src/requests/{PathRequest.js → PathRequest.ts} +47 -37
- package/src/requests/{TargetRequest.js → TargetRequest.ts} +260 -179
- package/src/requests/{ValidationRequest.js → ValidationRequest.ts} +18 -17
- package/src/requests/{WriteBundleRequest.js → WriteBundleRequest.ts} +77 -49
- package/src/requests/{WriteBundlesRequest.js → WriteBundlesRequest.ts} +109 -37
- package/src/requests/{asset-graph-diff.js → asset-graph-diff.ts} +25 -21
- package/src/requests/{asset-graph-dot.js → asset-graph-dot.ts} +8 -12
- package/src/{resolveOptions.js → resolveOptions.ts} +59 -25
- package/src/{rustWorkerThreadDylibHack.js → rustWorkerThreadDylibHack.ts} +1 -4
- package/src/{serializerCore.browser.js → serializerCore.browser.ts} +2 -3
- package/src/{summarizeRequest.js → summarizeRequest.ts} +17 -5
- package/src/types.ts +650 -0
- package/src/{utils.js → utils.ts} +52 -21
- package/src/{worker.js → worker.ts} +50 -42
- package/test/{AssetGraph.test.js → AssetGraph.test.ts} +37 -8
- package/test/{Atlaspack.test.js → Atlaspack.test.ts} +5 -10
- package/test/{AtlaspackConfig.test.js → AtlaspackConfig.test.ts} +0 -5
- package/test/{AtlaspackConfigRequest.test.js → AtlaspackConfigRequest.test.ts} +76 -16
- package/test/{BundleGraph.test.js → BundleGraph.test.ts} +8 -13
- package/test/{Dependency.test.js → Dependency.test.ts} +2 -3
- package/test/{EntryRequest.test.js → EntryRequest.test.ts} +1 -6
- package/test/Environment.test.ts +153 -0
- package/test/EnvironmentManager.test.ts +188 -0
- package/test/{IdentifierRegistry.test.js → IdentifierRegistry.test.ts} +2 -4
- package/test/{InternalAsset.test.js → InternalAsset.test.ts} +2 -7
- package/test/PackagerRunner.test.ts +0 -0
- package/test/{PublicAsset.test.js → PublicAsset.test.ts} +2 -7
- package/test/{PublicBundle.test.js → PublicBundle.test.ts} +1 -2
- package/test/{PublicDependency.test.js → PublicDependency.test.ts} +0 -2
- package/test/PublicEnvironment.test.ts +49 -0
- package/test/{PublicMutableBundleGraph.test.js → PublicMutableBundleGraph.test.ts} +6 -11
- package/test/{RequestTracker.test.js → RequestTracker.test.ts} +314 -59
- package/test/{SymbolPropagation.test.js → SymbolPropagation.test.ts} +124 -74
- package/test/{TargetRequest.test.js → TargetRequest.test.ts} +66 -92
- package/test/fixtures/config-with-reporters/.parcelrc +7 -0
- package/test/fixtures/custom-targets/package.json +6 -0
- package/test/public/Config.test.ts +104 -0
- package/test/requests/AssetGraphRequestRust.test.ts +443 -0
- package/test/requests/{ConfigRequest.test.js → ConfigRequest.test.ts} +202 -13
- package/test/requests/{DevDepRequest.test.js → DevDepRequest.test.ts} +0 -2
- package/test/{test-utils.js → test-utils.ts} +4 -11
- package/test/{utils.test.js → utils.test.ts} +1 -3
- package/tsconfig.json +60 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/index.d.ts +0 -30
- package/src/atlaspack-v3/AtlaspackV3.js +0 -87
- package/src/atlaspack-v3/NapiWorkerPool.js +0 -53
- package/src/atlaspack-v3/jsCallable.js +0 -18
- package/src/atlaspack-v3/worker/compat/bitflags.js +0 -100
- package/src/atlaspack-v3/worker/worker.js +0 -362
- package/src/index.js +0 -13
- package/src/requests/AssetGraphRequestRust.js +0 -263
- package/src/requests/AtlaspackBuildRequest.js +0 -111
- package/src/types.js +0 -600
- package/test/Environment.test.js +0 -119
- package/test/PackagerRunner.test.js +0 -27
- package/test/PublicEnvironment.test.js +0 -27
- package/test/requests/AssetGraphRequestRust.test.js +0 -411
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import {
|
|
2
|
+
atlaspackNapiCreate,
|
|
3
|
+
atlaspackNapiBuildAssetGraph,
|
|
4
|
+
atlaspackNapiRespondToFsEvents,
|
|
5
|
+
atlaspackNapiCompleteSession,
|
|
6
|
+
atlaspackNapiLoadBundleGraph,
|
|
7
|
+
atlaspackNapiPackage,
|
|
8
|
+
AtlaspackNapi,
|
|
9
|
+
Lmdb,
|
|
10
|
+
AtlaspackNapiOptions,
|
|
11
|
+
CacheStats,
|
|
12
|
+
} from '@atlaspack/rust';
|
|
13
|
+
import {NapiWorkerPool} from './NapiWorkerPool';
|
|
14
|
+
import ThrowableDiagnostic from '@atlaspack/diagnostic';
|
|
15
|
+
import type {Event} from '@parcel/watcher';
|
|
16
|
+
import type {NapiWorkerPool as INapiWorkerPool} from '@atlaspack/types';
|
|
17
|
+
import {BundleGraphNode} from '../types';
|
|
18
|
+
import invariant from 'assert';
|
|
19
|
+
import {BundleGraphEdgeType} from '../BundleGraph';
|
|
20
|
+
|
|
21
|
+
export type AtlaspackV3Options = {
|
|
22
|
+
fs?: AtlaspackNapiOptions['fs'];
|
|
23
|
+
packageManager?: AtlaspackNapiOptions['packageManager'];
|
|
24
|
+
threads?: number;
|
|
25
|
+
/**
|
|
26
|
+
* A reference to LMDB lite's rust object
|
|
27
|
+
*/
|
|
28
|
+
lmdb: Lmdb;
|
|
29
|
+
featureFlags?: {
|
|
30
|
+
[key: string]: string | boolean;
|
|
31
|
+
};
|
|
32
|
+
napiWorkerPool?: INapiWorkerPool;
|
|
33
|
+
} & AtlaspackNapiOptions['options'];
|
|
34
|
+
|
|
35
|
+
export class AtlaspackV3 {
|
|
36
|
+
_atlaspack_napi: AtlaspackNapi;
|
|
37
|
+
_napiWorkerPool: INapiWorkerPool;
|
|
38
|
+
_isDefaultNapiWorkerPool: boolean;
|
|
39
|
+
|
|
40
|
+
constructor(
|
|
41
|
+
atlaspack_napi: AtlaspackNapi,
|
|
42
|
+
napiWorkerPool: INapiWorkerPool,
|
|
43
|
+
isDefaultNapiWorkerPool: boolean,
|
|
44
|
+
) {
|
|
45
|
+
this._atlaspack_napi = atlaspack_napi;
|
|
46
|
+
this._napiWorkerPool = napiWorkerPool;
|
|
47
|
+
this._isDefaultNapiWorkerPool = isDefaultNapiWorkerPool;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
static async create({
|
|
51
|
+
fs,
|
|
52
|
+
packageManager,
|
|
53
|
+
threads,
|
|
54
|
+
lmdb,
|
|
55
|
+
napiWorkerPool,
|
|
56
|
+
...options
|
|
57
|
+
}: AtlaspackV3Options): Promise<AtlaspackV3> {
|
|
58
|
+
// @ts-expect-error TS2339
|
|
59
|
+
options.logLevel = options.logLevel || 'error';
|
|
60
|
+
// @ts-expect-error TS2339
|
|
61
|
+
options.defaultTargetOptions = options.defaultTargetOptions || {};
|
|
62
|
+
// @ts-expect-error TS2339
|
|
63
|
+
options.defaultTargetOptions.engines =
|
|
64
|
+
// @ts-expect-error TS2339
|
|
65
|
+
options.defaultTargetOptions.engines || {};
|
|
66
|
+
|
|
67
|
+
let isDefaultNapiWorkerPool = false;
|
|
68
|
+
if (!napiWorkerPool) {
|
|
69
|
+
napiWorkerPool = new NapiWorkerPool();
|
|
70
|
+
isDefaultNapiWorkerPool = true;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// @ts-expect-error TS2488
|
|
74
|
+
const [internal, error] = await atlaspackNapiCreate(
|
|
75
|
+
{
|
|
76
|
+
fs,
|
|
77
|
+
packageManager,
|
|
78
|
+
threads,
|
|
79
|
+
options,
|
|
80
|
+
napiWorkerPool,
|
|
81
|
+
},
|
|
82
|
+
lmdb,
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
if (error !== null) {
|
|
86
|
+
throw new ThrowableDiagnostic({
|
|
87
|
+
diagnostic: error,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return new AtlaspackV3(internal, napiWorkerPool, isDefaultNapiWorkerPool);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
end(): void {
|
|
95
|
+
// If the worker pool was provided to us, don't shut it down, it's up to the provider.
|
|
96
|
+
if (this._isDefaultNapiWorkerPool) {
|
|
97
|
+
this._napiWorkerPool.shutdown();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
buildAssetGraph(): Promise<any> {
|
|
102
|
+
return atlaspackNapiBuildAssetGraph(this._atlaspack_napi) as Promise<any>;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
loadBundleGraph({
|
|
106
|
+
nodes,
|
|
107
|
+
edges,
|
|
108
|
+
}: {
|
|
109
|
+
nodes: BundleGraphNode[];
|
|
110
|
+
edges: [number, number, BundleGraphEdgeType][];
|
|
111
|
+
}): Promise<any> {
|
|
112
|
+
invariant(nodes.length > 0, 'Bundle graph must have at least one node');
|
|
113
|
+
return atlaspackNapiLoadBundleGraph(
|
|
114
|
+
this._atlaspack_napi,
|
|
115
|
+
nodes,
|
|
116
|
+
edges,
|
|
117
|
+
) as Promise<any>;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
package(): Promise<any> {
|
|
121
|
+
return atlaspackNapiPackage(this._atlaspack_napi) as Promise<any>;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
async respondToFsEvents(events: Array<Event>): Promise<boolean> {
|
|
125
|
+
// @ts-expect-error TS2488
|
|
126
|
+
let [needsRebuild, error] = await atlaspackNapiRespondToFsEvents(
|
|
127
|
+
this._atlaspack_napi,
|
|
128
|
+
events,
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
if (error) {
|
|
132
|
+
throw new Error(error);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return needsRebuild;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
async completeCacheSession(): Promise<CacheStats> {
|
|
139
|
+
return (await atlaspackNapiCompleteSession(
|
|
140
|
+
this._atlaspack_napi,
|
|
141
|
+
)) as CacheStats;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type {NapiWorkerPool as INapiWorkerPool} from '@atlaspack/types';
|
|
2
|
+
import {Worker} from 'worker_threads';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import process from 'process';
|
|
5
|
+
// @ts-expect-error TS2724
|
|
6
|
+
import type {Transferable} from '@atlaspack/rust';
|
|
7
|
+
import {getAvailableThreads} from '@atlaspack/rust';
|
|
8
|
+
|
|
9
|
+
const WORKER_PATH = path.join(__dirname, 'worker', 'index.js');
|
|
10
|
+
const ATLASPACK_NAPI_WORKERS =
|
|
11
|
+
process.env.ATLASPACK_NAPI_WORKERS &&
|
|
12
|
+
parseInt(process.env.ATLASPACK_NAPI_WORKERS, 10);
|
|
13
|
+
|
|
14
|
+
export type NapiWorkerPoolOptions = {
|
|
15
|
+
workerCount?: number;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export class NapiWorkerPool implements INapiWorkerPool {
|
|
19
|
+
#workers: Worker[];
|
|
20
|
+
#napiWorkers: Array<Promise<Transferable>>;
|
|
21
|
+
#workerCount: number;
|
|
22
|
+
|
|
23
|
+
constructor({workerCount}: NapiWorkerPoolOptions = {workerCount: undefined}) {
|
|
24
|
+
// @ts-expect-error TS2322
|
|
25
|
+
this.#workerCount =
|
|
26
|
+
workerCount ??
|
|
27
|
+
ATLASPACK_NAPI_WORKERS ??
|
|
28
|
+
// Default to a maximum of 4 workers as performance worsens beyond that
|
|
29
|
+
// point in most cases
|
|
30
|
+
Math.min(getAvailableThreads(), 4);
|
|
31
|
+
if (!this.#workerCount) {
|
|
32
|
+
// TODO use main thread if workerCount is 0
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
this.#workers = [];
|
|
36
|
+
this.#napiWorkers = [];
|
|
37
|
+
|
|
38
|
+
for (let i = 0; i < this.#workerCount; i++) {
|
|
39
|
+
let worker = new Worker(WORKER_PATH);
|
|
40
|
+
this.#workers.push(worker);
|
|
41
|
+
this.#napiWorkers.push(
|
|
42
|
+
new Promise((res: (result: Promise<never>) => void) =>
|
|
43
|
+
worker.once('message', res),
|
|
44
|
+
),
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
clearAllWorkerState(): Promise<void[]> {
|
|
50
|
+
return Promise.all(
|
|
51
|
+
this.#workers.map(
|
|
52
|
+
(worker) =>
|
|
53
|
+
new Promise<void>((res) => {
|
|
54
|
+
worker.postMessage('clearState');
|
|
55
|
+
|
|
56
|
+
// Set up a message handler that only resolves on 'stateCleared'
|
|
57
|
+
// and ignores all other messages (like the initial napiWorker Transferable)
|
|
58
|
+
const messageHandler = (message: unknown) => {
|
|
59
|
+
if (message === 'stateCleared') {
|
|
60
|
+
worker.removeListener('message', messageHandler);
|
|
61
|
+
res();
|
|
62
|
+
} else {
|
|
63
|
+
// Log unexpected messages for debugging
|
|
64
|
+
// eslint-disable-next-line no-console
|
|
65
|
+
console.warn(
|
|
66
|
+
`[NapiWorkerPool] Received unexpected message during clearAllWorkerState: ${JSON.stringify(message)} (type: ${typeof message})`,
|
|
67
|
+
);
|
|
68
|
+
// Keep listening for 'stateCleared' - don't remove the listener
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
worker.on('message', messageHandler);
|
|
73
|
+
}),
|
|
74
|
+
),
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
workerCount(): number {
|
|
79
|
+
return this.#workerCount;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
getWorkers(): Promise<Array<Transferable>> {
|
|
83
|
+
return Promise.all(this.#napiWorkers);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
shutdown(): void {
|
|
87
|
+
for (const worker of this.#workers) {
|
|
88
|
+
worker.terminate();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
// @
|
|
2
|
-
|
|
1
|
+
// @ts-expect-error TS2305
|
|
3
2
|
import type {FileSystem, JsCallable} from '@atlaspack/rust';
|
|
4
3
|
import type {
|
|
5
4
|
Encoding,
|
|
@@ -9,6 +8,7 @@ import type {
|
|
|
9
8
|
|
|
10
9
|
import {jsCallable} from './jsCallable';
|
|
11
10
|
|
|
11
|
+
// @ts-expect-error TS2420
|
|
12
12
|
export class FileSystemV3 implements FileSystem {
|
|
13
13
|
#fs: IFileSystem;
|
|
14
14
|
|
|
@@ -20,7 +20,7 @@ export class FileSystemV3 implements FileSystem {
|
|
|
20
20
|
(path: FilePath) => this.#fs.realpathSync(path),
|
|
21
21
|
);
|
|
22
22
|
|
|
23
|
-
createDirectory: JsCallable<[FilePath], Promise<
|
|
23
|
+
createDirectory: JsCallable<[FilePath], Promise<undefined>> = jsCallable(
|
|
24
24
|
(path: FilePath) => this.#fs.mkdirp(path),
|
|
25
25
|
);
|
|
26
26
|
|
|
@@ -45,7 +45,6 @@ export class FileSystemV3 implements FileSystem {
|
|
|
45
45
|
readFile: JsCallable<[FilePath, Encoding], string> = jsCallable(
|
|
46
46
|
(path: string, encoding?: Encoding) => {
|
|
47
47
|
if (!encoding) {
|
|
48
|
-
// $FlowFixMe
|
|
49
48
|
return [...this.#fs.readFileSync(path)];
|
|
50
49
|
} else {
|
|
51
50
|
return this.#fs.readFileSync(path, encoding);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
1
|
export {FileSystemV3} from './fs';
|
|
4
2
|
export {AtlaspackV3} from './AtlaspackV3';
|
|
5
3
|
export {NapiWorkerPool} from './NapiWorkerPool';
|
|
6
|
-
export
|
|
7
|
-
export
|
|
4
|
+
export * from './AtlaspackV3';
|
|
5
|
+
export * from './NapiWorkerPool';
|
|
6
|
+
export type {CacheStats} from '@atlaspack/rust';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function jsCallable<Args extends ReadonlyArray<unknown>, Return>(
|
|
2
|
+
fn: (...rest: Args) => Return | Promise<Return>,
|
|
3
|
+
): (...rest: Args) => Promise<Return> {
|
|
4
|
+
return async (...args: Args): Promise<Return> => {
|
|
5
|
+
try {
|
|
6
|
+
// Promises and is safe to use on non-promises
|
|
7
|
+
return await fn(...args);
|
|
8
|
+
} catch (error: any) {
|
|
9
|
+
// eslint-disable-next-line no-console
|
|
10
|
+
console.error(error);
|
|
11
|
+
throw error;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
1
|
import type {Symbol as NapiSymbol} from '@atlaspack/rust';
|
|
4
2
|
import type {
|
|
5
3
|
AssetSymbols as IAssetSymbols,
|
|
@@ -18,7 +16,7 @@ export class MutableDependencySymbols implements IMutableDependencySymbols {
|
|
|
18
16
|
return this.#symbols.size === 0;
|
|
19
17
|
}
|
|
20
18
|
|
|
21
|
-
constructor(inner:
|
|
19
|
+
constructor(inner: NapiSymbol[] | null | undefined | null) {
|
|
22
20
|
this.#symbols = new Map();
|
|
23
21
|
this.#locals = new Set();
|
|
24
22
|
for (const {exported, local, loc, isWeak} of inner || []) {
|
|
@@ -30,7 +28,7 @@ export class MutableDependencySymbols implements IMutableDependencySymbols {
|
|
|
30
28
|
throw new Error('MutableDependencySymbols.ensure()');
|
|
31
29
|
}
|
|
32
30
|
|
|
33
|
-
get(exportSymbol: Symbol):
|
|
31
|
+
get(exportSymbol: Symbol): DependencyAssetSymbol | null | undefined {
|
|
34
32
|
return this.#symbols.get(exportSymbol);
|
|
35
33
|
}
|
|
36
34
|
|
|
@@ -49,8 +47,8 @@ export class MutableDependencySymbols implements IMutableDependencySymbols {
|
|
|
49
47
|
set(
|
|
50
48
|
exportSymbol: Symbol,
|
|
51
49
|
local: Symbol,
|
|
52
|
-
loc
|
|
53
|
-
isWeak
|
|
50
|
+
loc?: SourceLocation | null,
|
|
51
|
+
isWeak?: boolean | null,
|
|
54
52
|
): void {
|
|
55
53
|
this.#locals.add(local);
|
|
56
54
|
this.#symbols.set(exportSymbol, {
|
|
@@ -69,7 +67,7 @@ export class MutableDependencySymbols implements IMutableDependencySymbols {
|
|
|
69
67
|
}
|
|
70
68
|
|
|
71
69
|
/*:: @@iterator(): Iterator<[Symbol, DependencyAssetSymbol]> { return ({}: any); } */
|
|
72
|
-
//
|
|
70
|
+
// @ts-expect-error TS2416
|
|
73
71
|
[Symbol.iterator]() {
|
|
74
72
|
return this.#symbols.values();
|
|
75
73
|
}
|
|
@@ -83,7 +81,7 @@ export class AssetSymbols implements IAssetSymbols {
|
|
|
83
81
|
return this.#symbols.size === 0;
|
|
84
82
|
}
|
|
85
83
|
|
|
86
|
-
constructor(inner:
|
|
84
|
+
constructor(inner: NapiSymbol[] | null | undefined | null) {
|
|
87
85
|
this.#symbols = new Map();
|
|
88
86
|
this.#locals = new Set();
|
|
89
87
|
for (const {exported, local, loc} of inner || []) {
|
|
@@ -91,7 +89,11 @@ export class AssetSymbols implements IAssetSymbols {
|
|
|
91
89
|
}
|
|
92
90
|
}
|
|
93
91
|
|
|
94
|
-
#set(
|
|
92
|
+
#set(
|
|
93
|
+
exportSymbol: Symbol,
|
|
94
|
+
local: Symbol,
|
|
95
|
+
loc?: SourceLocation | null,
|
|
96
|
+
): undefined {
|
|
95
97
|
this.#locals.add(local);
|
|
96
98
|
this.#symbols.set(exportSymbol, {
|
|
97
99
|
local,
|
|
@@ -100,7 +102,7 @@ export class AssetSymbols implements IAssetSymbols {
|
|
|
100
102
|
});
|
|
101
103
|
}
|
|
102
104
|
|
|
103
|
-
get(exportSymbol: Symbol):
|
|
105
|
+
get(exportSymbol: Symbol): AssetSymbol | null | undefined {
|
|
104
106
|
return this.#symbols.get(exportSymbol);
|
|
105
107
|
}
|
|
106
108
|
|
|
@@ -121,7 +123,7 @@ export class AssetSymbols implements IAssetSymbols {
|
|
|
121
123
|
}
|
|
122
124
|
|
|
123
125
|
/*:: @@iterator(): Iterator<[Symbol, AssetSymbol]> { return ({}: any); } */
|
|
124
|
-
//
|
|
126
|
+
// @ts-expect-error TS2416
|
|
125
127
|
[Symbol.iterator]() {
|
|
126
128
|
return this.#symbols.values();
|
|
127
129
|
}
|
|
@@ -135,13 +137,20 @@ export class MutableAssetSymbols implements IMutableAssetSymbols {
|
|
|
135
137
|
return this.#symbols.size === 0;
|
|
136
138
|
}
|
|
137
139
|
|
|
138
|
-
constructor(inner:
|
|
140
|
+
constructor(inner: NapiSymbol[] | null | undefined | null) {
|
|
139
141
|
this.#symbols = new Map();
|
|
140
142
|
this.#locals = new Set();
|
|
141
|
-
for (const {
|
|
142
|
-
|
|
143
|
+
for (const {
|
|
144
|
+
exported,
|
|
145
|
+
loc,
|
|
146
|
+
local,
|
|
147
|
+
isEsmExport,
|
|
148
|
+
selfReferenced,
|
|
149
|
+
isStaticBindingSafe,
|
|
150
|
+
} of inner || []) {
|
|
143
151
|
this.set(exported, local, loc, {
|
|
144
152
|
isEsm: isEsmExport,
|
|
153
|
+
isStaticBindingSafe,
|
|
145
154
|
selfReferenced,
|
|
146
155
|
});
|
|
147
156
|
}
|
|
@@ -167,6 +176,7 @@ export class MutableAssetSymbols implements IMutableAssetSymbols {
|
|
|
167
176
|
}
|
|
168
177
|
: undefined,
|
|
169
178
|
isEsmExport: Boolean(meta?.isEsm),
|
|
179
|
+
isStaticBindingSafe: Boolean(meta?.isStaticBindingSafe),
|
|
170
180
|
isWeak: false,
|
|
171
181
|
selfReferenced: Boolean(meta?.selfReferenced),
|
|
172
182
|
});
|
|
@@ -181,8 +191,8 @@ export class MutableAssetSymbols implements IMutableAssetSymbols {
|
|
|
181
191
|
set(
|
|
182
192
|
exportSymbol: Symbol,
|
|
183
193
|
local: Symbol,
|
|
184
|
-
loc
|
|
185
|
-
meta
|
|
194
|
+
loc?: SourceLocation | null,
|
|
195
|
+
meta?: Meta | null,
|
|
186
196
|
): void {
|
|
187
197
|
this.#locals.add(local);
|
|
188
198
|
this.#symbols.set(exportSymbol, {
|
|
@@ -192,7 +202,7 @@ export class MutableAssetSymbols implements IMutableAssetSymbols {
|
|
|
192
202
|
});
|
|
193
203
|
}
|
|
194
204
|
|
|
195
|
-
get(exportSymbol: Symbol):
|
|
205
|
+
get(exportSymbol: Symbol): AssetSymbol | null | undefined {
|
|
196
206
|
return this.#symbols.get(exportSymbol);
|
|
197
207
|
}
|
|
198
208
|
|
|
@@ -216,21 +226,21 @@ export class MutableAssetSymbols implements IMutableAssetSymbols {
|
|
|
216
226
|
}
|
|
217
227
|
|
|
218
228
|
/*:: @@iterator(): Iterator<[Symbol, AssetSymbol]> { return ({}: any); } */
|
|
219
|
-
//
|
|
229
|
+
// @ts-expect-error TS2416
|
|
220
230
|
[Symbol.iterator]() {
|
|
221
231
|
return this.#symbols.values();
|
|
222
232
|
}
|
|
223
233
|
}
|
|
224
234
|
|
|
225
|
-
export type AssetSymbol = {
|
|
226
|
-
local: Symbol
|
|
227
|
-
loc:
|
|
228
|
-
meta?:
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
export type DependencyAssetSymbol = {
|
|
232
|
-
local: Symbol
|
|
233
|
-
loc:
|
|
234
|
-
meta?:
|
|
235
|
-
isWeak: boolean
|
|
236
|
-
|
|
235
|
+
export type AssetSymbol = {
|
|
236
|
+
local: Symbol;
|
|
237
|
+
loc: SourceLocation | null | undefined;
|
|
238
|
+
meta?: Meta | null | undefined;
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
export type DependencyAssetSymbol = {
|
|
242
|
+
local: Symbol;
|
|
243
|
+
loc: SourceLocation | null | undefined;
|
|
244
|
+
meta?: Meta | null | undefined;
|
|
245
|
+
isWeak: boolean;
|
|
246
|
+
};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
BundleBehavior,
|
|
3
|
+
DependencyPriority,
|
|
4
|
+
SpecifierType,
|
|
5
|
+
} from '@atlaspack/types';
|
|
6
|
+
|
|
7
|
+
/// BitFlags is used to map number/string types from napi types
|
|
8
|
+
export class BitFlags<K> {
|
|
9
|
+
// @ts-expect-error TS2344
|
|
10
|
+
#kv: Partial<Record<K, number>>;
|
|
11
|
+
#vk: Partial<Record<number, K>>;
|
|
12
|
+
|
|
13
|
+
// @ts-expect-error TS2344
|
|
14
|
+
constructor(source: Partial<Record<K, number>>) {
|
|
15
|
+
this.#kv = source;
|
|
16
|
+
this.#vk = Object.fromEntries(
|
|
17
|
+
Object.entries(source).map((a) => a.reverse()),
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
into(key: K): number {
|
|
22
|
+
const found = this.#kv[key];
|
|
23
|
+
if (found === undefined) {
|
|
24
|
+
throw new Error(`Invalid BundleBehavior(${key})`);
|
|
25
|
+
}
|
|
26
|
+
return found;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
intoNullable(key?: K | null): number | null | undefined {
|
|
30
|
+
if (key === undefined || key === null) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
return this.into(key);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
from(key: number): K {
|
|
37
|
+
const found = this.#vk[key];
|
|
38
|
+
if (found === undefined) {
|
|
39
|
+
throw new Error(`Invalid BundleBehavior(${key})`);
|
|
40
|
+
}
|
|
41
|
+
return found;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
fromNullable(key?: number | null): K | null | undefined {
|
|
45
|
+
if (key === undefined || key === null) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
return this.from(key);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
toArray(keys: number): K[] {
|
|
52
|
+
let values = [];
|
|
53
|
+
for (let [key, value] of Object.entries(this.#kv) as [K, number][]) {
|
|
54
|
+
if ((keys & value) !== 0) {
|
|
55
|
+
values.push(key);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return values;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export const bundleBehaviorMap: BitFlags<BundleBehavior> = new BitFlags({
|
|
64
|
+
inline: 0,
|
|
65
|
+
isolated: 1,
|
|
66
|
+
inlineIsolated: 2,
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
export const dependencyPriorityMap: BitFlags<DependencyPriority> = new BitFlags(
|
|
70
|
+
{
|
|
71
|
+
sync: 0,
|
|
72
|
+
parallel: 1,
|
|
73
|
+
lazy: 2,
|
|
74
|
+
conditional: 3,
|
|
75
|
+
},
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
// Note: The bitflags must match the bitflags in the Rust code.
|
|
79
|
+
// crates/atlaspack_core/src/types/package_json.rs
|
|
80
|
+
export const packageConditionsMap: BitFlags<string> = new BitFlags({
|
|
81
|
+
import: 1 << 0,
|
|
82
|
+
require: 1 << 1,
|
|
83
|
+
module: 1 << 2,
|
|
84
|
+
node: 1 << 3,
|
|
85
|
+
browser: 1 << 4,
|
|
86
|
+
worker: 1 << 5,
|
|
87
|
+
worklet: 1 << 6,
|
|
88
|
+
electron: 1 << 7,
|
|
89
|
+
development: 1 << 8,
|
|
90
|
+
production: 1 << 9,
|
|
91
|
+
types: 1 << 10,
|
|
92
|
+
default: 1 << 11,
|
|
93
|
+
style: 1 << 12,
|
|
94
|
+
sass: 1 << 13,
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
export const specifierTypeMap: BitFlags<SpecifierType> = new BitFlags({
|
|
98
|
+
esm: 0,
|
|
99
|
+
commonjs: 1,
|
|
100
|
+
url: 2,
|
|
101
|
+
custom: 3,
|
|
102
|
+
});
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
// @
|
|
2
|
-
|
|
1
|
+
// @ts-expect-error TS2305
|
|
3
2
|
import type {Dependency as NapiDependency} from '@atlaspack/rust';
|
|
4
3
|
import type {
|
|
5
4
|
Dependency as IDependency,
|
|
@@ -27,23 +26,23 @@ import {
|
|
|
27
26
|
export class Dependency implements IDependency {
|
|
28
27
|
env: IEnvironment;
|
|
29
28
|
meta: Meta;
|
|
30
|
-
target:
|
|
29
|
+
target: ITarget | null | undefined;
|
|
31
30
|
symbols: IMutableDependencySymbols;
|
|
32
31
|
specifier: DependencySpecifier;
|
|
33
32
|
specifierType: SpecifierType;
|
|
34
33
|
priority: DependencyPriority;
|
|
35
|
-
bundleBehavior:
|
|
34
|
+
bundleBehavior: BundleBehavior | null | undefined;
|
|
36
35
|
needsStableName: boolean;
|
|
37
36
|
isOptional: boolean;
|
|
38
37
|
isEntry: boolean;
|
|
39
|
-
loc:
|
|
40
|
-
packageConditions:
|
|
41
|
-
sourceAssetId:
|
|
42
|
-
sourcePath:
|
|
43
|
-
sourceAssetType:
|
|
44
|
-
resolveFrom:
|
|
45
|
-
range:
|
|
46
|
-
pipeline:
|
|
38
|
+
loc: SourceLocation | null | undefined;
|
|
39
|
+
packageConditions: Array<string> | null | undefined;
|
|
40
|
+
sourceAssetId: string | null | undefined;
|
|
41
|
+
sourcePath: FilePath | null | undefined;
|
|
42
|
+
sourceAssetType: string | null | undefined;
|
|
43
|
+
resolveFrom: FilePath | null | undefined;
|
|
44
|
+
range: SemverRange | null | undefined;
|
|
45
|
+
pipeline: string | null | undefined;
|
|
47
46
|
|
|
48
47
|
get id(): string {
|
|
49
48
|
throw new Error('Dependency.id');
|
|
@@ -62,6 +61,7 @@ export class Dependency implements IDependency {
|
|
|
62
61
|
this.bundleBehavior = bundleBehaviorMap.from(inner.bundleBehavior);
|
|
63
62
|
}
|
|
64
63
|
this.bundleBehavior = undefined;
|
|
64
|
+
// @ts-expect-error TS2322
|
|
65
65
|
this.symbols = new MutableDependencySymbols(inner.symbols || []);
|
|
66
66
|
this.specifier = inner.specifier;
|
|
67
67
|
this.specifierType = specifierTypeMap.from(inner.specifierType);
|
|
@@ -70,7 +70,7 @@ export class Dependency implements IDependency {
|
|
|
70
70
|
this.isOptional = inner.isOptional;
|
|
71
71
|
this.isEntry = inner.isEntry;
|
|
72
72
|
this.loc = inner.loc;
|
|
73
|
-
this.packageConditions = packageConditionsMap.
|
|
73
|
+
this.packageConditions = packageConditionsMap.toArray(
|
|
74
74
|
inner.packageConditions || [],
|
|
75
75
|
);
|
|
76
76
|
this.sourceAssetId = inner.sourceAssetId;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
// @
|
|
2
|
-
|
|
1
|
+
// @ts-expect-error TS2724
|
|
3
2
|
import type {Environment as NapiEnvironment} from '@atlaspack/rust';
|
|
4
3
|
import type {
|
|
5
4
|
Environment as IEnvironment,
|
|
@@ -12,6 +11,7 @@ import type {
|
|
|
12
11
|
SourceLocation,
|
|
13
12
|
VersionMap,
|
|
14
13
|
EnvironmentFeature,
|
|
14
|
+
EnvMap,
|
|
15
15
|
} from '@atlaspack/types';
|
|
16
16
|
|
|
17
17
|
export class Environment implements IEnvironment {
|
|
@@ -19,7 +19,7 @@ export class Environment implements IEnvironment {
|
|
|
19
19
|
includeNodeModules:
|
|
20
20
|
| boolean
|
|
21
21
|
| Array<PackageName>
|
|
22
|
-
|
|
|
22
|
+
| Partial<Record<PackageName, boolean>>;
|
|
23
23
|
context: EnvironmentContext;
|
|
24
24
|
engines: Engines;
|
|
25
25
|
outputFormat: OutputFormat;
|
|
@@ -27,20 +27,18 @@ export class Environment implements IEnvironment {
|
|
|
27
27
|
isLibrary: boolean;
|
|
28
28
|
shouldOptimize: boolean;
|
|
29
29
|
shouldScopeHoist: boolean;
|
|
30
|
-
sourceMap:
|
|
31
|
-
loc:
|
|
30
|
+
sourceMap: TargetSourceMapOptions | null | undefined;
|
|
31
|
+
loc: SourceLocation | null | undefined;
|
|
32
32
|
unstableSingleFileOutput: boolean;
|
|
33
|
+
customEnv: EnvMap | null | undefined;
|
|
33
34
|
|
|
34
35
|
constructor(inner: NapiEnvironment) {
|
|
35
36
|
// TODO
|
|
36
37
|
this.id = '';
|
|
37
38
|
this.includeNodeModules = inner.includeNodeModules;
|
|
38
|
-
// $FlowFixMe
|
|
39
39
|
this.context = inner.context;
|
|
40
40
|
this.engines = inner.engines;
|
|
41
|
-
// $FlowFixMe
|
|
42
41
|
this.outputFormat = inner.outputFormat;
|
|
43
|
-
// $FlowFixMe
|
|
44
42
|
this.sourceType = inner.sourceType;
|
|
45
43
|
this.isLibrary = inner.isLibrary;
|
|
46
44
|
this.shouldOptimize = inner.shouldOptimize;
|
|
@@ -48,12 +46,14 @@ export class Environment implements IEnvironment {
|
|
|
48
46
|
this.sourceMap = inner.sourceMap;
|
|
49
47
|
this.loc = inner.loc;
|
|
50
48
|
this.unstableSingleFileOutput = false;
|
|
49
|
+
this.customEnv = inner.customEnv;
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
isBrowser(): boolean {
|
|
54
53
|
return (
|
|
55
54
|
this.context === 'browser' ||
|
|
56
55
|
this.isWorker() ||
|
|
56
|
+
this.isTesseract() ||
|
|
57
57
|
this.isWorklet() ||
|
|
58
58
|
this.context === 'electron-renderer'
|
|
59
59
|
);
|
|
@@ -77,8 +77,12 @@ export class Environment implements IEnvironment {
|
|
|
77
77
|
return this.context === 'worklet';
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
isTesseract(): boolean {
|
|
81
|
+
return this.context === 'tesseract';
|
|
82
|
+
}
|
|
83
|
+
|
|
80
84
|
isIsolated(): boolean {
|
|
81
|
-
return this.isWorker() || this.isWorklet();
|
|
85
|
+
return this.isWorker() || this.isTesseract() || this.isWorklet();
|
|
82
86
|
}
|
|
83
87
|
|
|
84
88
|
// TODO
|