@atlaspack/core 2.16.2-canary.27 → 2.16.2-canary.270
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 +665 -0
- package/dist/AssetGraph.js +591 -0
- package/dist/Atlaspack.js +658 -0
- package/dist/AtlaspackConfig.js +324 -0
- package/dist/AtlaspackConfig.schema.js +108 -0
- package/dist/BundleGraph.js +1635 -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 +490 -0
- package/dist/UncommittedAsset.js +315 -0
- package/dist/Validation.js +196 -0
- package/dist/applyRuntimes.js +305 -0
- package/dist/assetUtils.js +168 -0
- package/dist/atlaspack-v3/AtlaspackV3.js +70 -0
- package/dist/atlaspack-v3/NapiWorkerPool.js +57 -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 +94 -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 +76 -0
- package/dist/atlaspack-v3/worker/compat/plugin-logger.js +26 -0
- package/dist/atlaspack-v3/worker/compat/plugin-options.js +122 -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/worker.js +297 -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 +359 -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 +429 -0
- package/dist/requests/AssetGraphRequestRust.js +262 -0
- package/dist/requests/AssetRequest.js +130 -0
- package/dist/requests/AtlaspackBuildRequest.js +65 -0
- package/dist/requests/AtlaspackConfigRequest.js +493 -0
- package/dist/requests/BundleGraphRequest.js +445 -0
- package/dist/requests/ConfigRequest.js +222 -0
- package/dist/requests/DevDepRequest.js +204 -0
- package/dist/requests/EntryRequest.js +314 -0
- package/dist/requests/PackageRequest.js +62 -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 +268 -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 +81 -37
- package/lib/AtlaspackConfig.js +15 -3
- package/lib/AtlaspackConfig.schema.js +7 -5
- package/lib/BundleGraph.js +90 -32
- package/lib/CommittedAsset.js +6 -0
- 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 +26 -10
- package/lib/UncommittedAsset.js +30 -9
- package/lib/Validation.js +18 -2
- package/lib/applyRuntimes.js +9 -1
- package/lib/assetUtils.js +7 -4
- package/lib/atlaspack-v3/AtlaspackV3.js +32 -7
- package/lib/atlaspack-v3/NapiWorkerPool.js +3 -0
- 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 +7 -6
- package/lib/atlaspack-v3/worker/compat/dependency.js +3 -0
- package/lib/atlaspack-v3/worker/compat/environment.js +10 -7
- package/lib/atlaspack-v3/worker/compat/mutable-asset.js +14 -9
- package/lib/atlaspack-v3/worker/compat/plugin-config.js +8 -10
- package/lib/atlaspack-v3/worker/compat/plugin-options.js +1 -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/worker.js +43 -7
- 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 +10 -4
- 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 +42 -5
- package/lib/requests/AssetGraphRequestRust.js +126 -62
- package/lib/requests/AssetRequest.js +23 -6
- package/lib/requests/AtlaspackBuildRequest.js +10 -4
- package/lib/requests/AtlaspackConfigRequest.js +27 -16
- package/lib/requests/BundleGraphRequest.js +34 -19
- package/lib/requests/ConfigRequest.js +28 -4
- package/lib/requests/DevDepRequest.js +31 -5
- package/lib/requests/EntryRequest.js +2 -0
- package/lib/requests/PackageRequest.js +2 -1
- 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 +36 -10
- 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 +46 -0
- package/lib/types/BundleGraph.d.ts +182 -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 +24 -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 +26 -0
- package/lib/types/atlaspack-v3/NapiWorkerPool.d.ts +12 -0
- package/lib/types/atlaspack-v3/fs.d.ts +12 -0
- package/lib/types/atlaspack-v3/index.d.ts +5 -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 +15 -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 +37 -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 +22 -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/worker.d.ts +60 -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 +70 -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 +74 -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 +59 -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 +493 -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 +29 -13
- package/package.json +24 -34
- package/src/{AssetGraph.js → AssetGraph.ts} +156 -52
- package/src/{Atlaspack.js → Atlaspack.ts} +114 -61
- package/src/{AtlaspackConfig.schema.js → AtlaspackConfig.schema.ts} +16 -19
- package/src/{AtlaspackConfig.js → AtlaspackConfig.ts} +78 -54
- package/src/{BundleGraph.js → BundleGraph.ts} +231 -140
- package/src/{CommittedAsset.js → CommittedAsset.ts} +14 -12
- 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} +178 -86
- 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} +71 -62
- package/src/{UncommittedAsset.js → UncommittedAsset.ts} +57 -36
- package/src/{Validation.js → Validation.ts} +32 -17
- package/src/{applyRuntimes.js → applyRuntimes.ts} +35 -26
- package/src/{assetUtils.js → assetUtils.ts} +47 -35
- package/src/atlaspack-v3/AtlaspackV3.ts +122 -0
- package/src/atlaspack-v3/{NapiWorkerPool.js → NapiWorkerPool.ts} +10 -5
- package/src/atlaspack-v3/{fs.js → fs.ts} +3 -4
- package/src/atlaspack-v3/{index.js → index.ts} +2 -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.js → bitflags.ts} +9 -10
- package/src/atlaspack-v3/worker/compat/{dependency.js → dependency.ts} +12 -12
- 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} +20 -19
- package/src/atlaspack-v3/worker/compat/{plugin-config.js → plugin-config.ts} +27 -26
- 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} +4 -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/{worker.js → worker.ts} +102 -66
- 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} +40 -27
- package/src/public/{Bundle.js → Bundle.ts} +28 -29
- package/src/public/{BundleGraph.js → BundleGraph.ts} +81 -50
- 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} +84 -49
- package/src/requests/AssetGraphRequestRust.ts +352 -0
- package/src/requests/{AssetRequest.js → AssetRequest.ts} +24 -18
- package/src/requests/{AtlaspackBuildRequest.js → AtlaspackBuildRequest.ts} +46 -32
- package/src/requests/{AtlaspackConfigRequest.js → AtlaspackConfigRequest.ts} +72 -58
- package/src/requests/{BundleGraphRequest.js → BundleGraphRequest.ts} +71 -58
- package/src/requests/{ConfigRequest.js → ConfigRequest.ts} +71 -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} +20 -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} +56 -24
- 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 +647 -0
- package/src/{utils.js → utils.ts} +52 -21
- package/src/{worker.js → worker.ts} +49 -41
- 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} +75 -15
- 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.js → AssetGraphRequestRust.test.ts} +164 -134
- 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 +57 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/index.d.ts +0 -30
- package/src/atlaspack-v3/AtlaspackV3.js +0 -87
- package/src/atlaspack-v3/jsCallable.js +0 -18
- package/src/index.js +0 -13
- package/src/requests/AssetGraphRequestRust.js +0 -263
- 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
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// @flow strict-local
|
|
2
|
-
|
|
3
1
|
import type {
|
|
4
2
|
Asset as IAsset,
|
|
5
3
|
Bundle as IBundle,
|
|
@@ -10,9 +8,9 @@ import type {
|
|
|
10
8
|
ExportSymbolResolution,
|
|
11
9
|
FilePath,
|
|
12
10
|
GraphVisitor,
|
|
13
|
-
Symbol,
|
|
14
11
|
NamedBundle,
|
|
15
12
|
SymbolResolution,
|
|
13
|
+
Symbol,
|
|
16
14
|
Target,
|
|
17
15
|
} from '@atlaspack/types';
|
|
18
16
|
import type {Bundle as InternalBundle, AtlaspackOptions} from '../types';
|
|
@@ -36,7 +34,7 @@ import BundleGroup, {bundleGroupToInternalBundleGroup} from './BundleGroup';
|
|
|
36
34
|
// to the internal bundle.
|
|
37
35
|
const _bundleGraphToInternalBundleGraph: WeakMap<
|
|
38
36
|
IBundleGraph<IBundle>,
|
|
39
|
-
InternalBundleGraph
|
|
37
|
+
InternalBundleGraph
|
|
40
38
|
> = new WeakMap();
|
|
41
39
|
export function bundleGraphToInternalBundleGraph(
|
|
42
40
|
bundleGraph: IBundleGraph<IBundle>,
|
|
@@ -44,13 +42,13 @@ export function bundleGraphToInternalBundleGraph(
|
|
|
44
42
|
return nullthrows(_bundleGraphToInternalBundleGraph.get(bundleGraph));
|
|
45
43
|
}
|
|
46
44
|
|
|
47
|
-
type BundleFactory<TBundle
|
|
48
|
-
InternalBundle,
|
|
49
|
-
InternalBundleGraph,
|
|
50
|
-
AtlaspackOptions,
|
|
45
|
+
type BundleFactory<TBundle extends IBundle> = (
|
|
46
|
+
arg1: InternalBundle,
|
|
47
|
+
arg2: InternalBundleGraph,
|
|
48
|
+
arg3: AtlaspackOptions,
|
|
51
49
|
) => TBundle;
|
|
52
50
|
|
|
53
|
-
export default class BundleGraph<TBundle
|
|
51
|
+
export default class BundleGraph<TBundle extends IBundle>
|
|
54
52
|
implements IBundleGraph<TBundle>
|
|
55
53
|
{
|
|
56
54
|
#graph: InternalBundleGraph;
|
|
@@ -65,7 +63,6 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
65
63
|
this.#graph = graph;
|
|
66
64
|
this.#options = options;
|
|
67
65
|
this.#createBundle = createBundle;
|
|
68
|
-
// $FlowFixMe
|
|
69
66
|
_bundleGraphToInternalBundleGraph.set(this, graph);
|
|
70
67
|
}
|
|
71
68
|
|
|
@@ -81,7 +78,10 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
81
78
|
return this.#graph.isDependencySkipped(dependencyToInternalDependency(dep));
|
|
82
79
|
}
|
|
83
80
|
|
|
84
|
-
getResolvedAsset(
|
|
81
|
+
getResolvedAsset(
|
|
82
|
+
dep: IDependency,
|
|
83
|
+
bundle?: IBundle | null,
|
|
84
|
+
): IAsset | null | undefined {
|
|
85
85
|
let resolution = this.#graph.getResolvedAsset(
|
|
86
86
|
dependencyToInternalDependency(dep),
|
|
87
87
|
bundle && bundleToInternalBundle(bundle),
|
|
@@ -97,7 +97,7 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
97
97
|
.map((dep) => getPublicDependency(dep, this.#options));
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
getAssetWithDependency(dep: IDependency):
|
|
100
|
+
getAssetWithDependency(dep: IDependency): IAsset | null | undefined {
|
|
101
101
|
let asset = this.#graph.getAssetWithDependency(
|
|
102
102
|
dependencyToInternalDependency(dep),
|
|
103
103
|
);
|
|
@@ -114,7 +114,10 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
114
114
|
|
|
115
115
|
getReferencedBundles(
|
|
116
116
|
bundle: IBundle,
|
|
117
|
-
opts?: {
|
|
117
|
+
opts?: {
|
|
118
|
+
recursive?: boolean;
|
|
119
|
+
includeInline?: boolean;
|
|
120
|
+
},
|
|
118
121
|
): Array<TBundle> {
|
|
119
122
|
return this.#graph
|
|
120
123
|
.getReferencedBundles(bundleToInternalBundle(bundle), opts)
|
|
@@ -129,11 +132,18 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
129
132
|
|
|
130
133
|
resolveAsyncDependency(
|
|
131
134
|
dependency: IDependency,
|
|
132
|
-
bundle
|
|
133
|
-
):
|
|
134
|
-
| {
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
bundle?: IBundle | null,
|
|
136
|
+
):
|
|
137
|
+
| {
|
|
138
|
+
type: 'bundle_group';
|
|
139
|
+
value: IBundleGroup;
|
|
140
|
+
}
|
|
141
|
+
| {
|
|
142
|
+
type: 'asset';
|
|
143
|
+
value: IAsset;
|
|
144
|
+
}
|
|
145
|
+
| null
|
|
146
|
+
| undefined {
|
|
137
147
|
let resolved = this.#graph.resolveAsyncDependency(
|
|
138
148
|
dependencyToInternalDependency(dependency),
|
|
139
149
|
bundle && bundleToInternalBundle(bundle),
|
|
@@ -154,7 +164,10 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
154
164
|
};
|
|
155
165
|
}
|
|
156
166
|
|
|
157
|
-
getReferencedBundle(
|
|
167
|
+
getReferencedBundle(
|
|
168
|
+
dependency: IDependency,
|
|
169
|
+
bundle: IBundle,
|
|
170
|
+
): TBundle | null | undefined {
|
|
158
171
|
let result = this.#graph.getReferencedBundle(
|
|
159
172
|
dependencyToInternalDependency(dependency),
|
|
160
173
|
bundleToInternalBundle(bundle),
|
|
@@ -194,7 +207,9 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
194
207
|
|
|
195
208
|
getBundlesInBundleGroup(
|
|
196
209
|
bundleGroup: IBundleGroup,
|
|
197
|
-
opts?: {
|
|
210
|
+
opts?: {
|
|
211
|
+
includeInline: boolean;
|
|
212
|
+
},
|
|
198
213
|
): Array<TBundle> {
|
|
199
214
|
return this.#graph
|
|
200
215
|
.getBundlesInBundleGroup(
|
|
@@ -204,7 +219,7 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
204
219
|
.map((bundle) => this.#createBundle(bundle, this.#graph, this.#options));
|
|
205
220
|
}
|
|
206
221
|
|
|
207
|
-
getBundles(opts?: {
|
|
222
|
+
getBundles(opts?: {includeInline: boolean}): Array<TBundle> {
|
|
208
223
|
return this.#graph
|
|
209
224
|
.getBundles(opts)
|
|
210
225
|
.map((bundle) => this.#createBundle(bundle, this.#graph, this.#options));
|
|
@@ -231,7 +246,7 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
231
246
|
getSymbolResolution(
|
|
232
247
|
asset: IAsset,
|
|
233
248
|
symbol: Symbol,
|
|
234
|
-
boundary
|
|
249
|
+
boundary?: IBundle | null,
|
|
235
250
|
): SymbolResolution {
|
|
236
251
|
let res = this.#graph.getSymbolResolution(
|
|
237
252
|
assetToAssetValue(asset),
|
|
@@ -248,7 +263,7 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
248
263
|
|
|
249
264
|
getExportedSymbols(
|
|
250
265
|
asset: IAsset,
|
|
251
|
-
boundary
|
|
266
|
+
boundary?: IBundle | null,
|
|
252
267
|
): Array<ExportSymbolResolution> {
|
|
253
268
|
let res = this.#graph.getExportedSymbols(
|
|
254
269
|
assetToAssetValue(asset),
|
|
@@ -265,10 +280,13 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
265
280
|
|
|
266
281
|
traverse<TContext>(
|
|
267
282
|
visit: GraphVisitor<BundleGraphTraversable, TContext>,
|
|
268
|
-
start?:
|
|
269
|
-
opts?:
|
|
270
|
-
|
|
283
|
+
start?: IAsset | null,
|
|
284
|
+
opts?: {
|
|
285
|
+
skipUnusedDependencies?: boolean;
|
|
286
|
+
} | null,
|
|
287
|
+
): TContext | null | undefined {
|
|
271
288
|
return this.#graph.traverse(
|
|
289
|
+
// @ts-expect-error TS2345
|
|
272
290
|
mapVisitor((node, actions) => {
|
|
273
291
|
// Skipping unused dependencies here is faster than doing an isDependencySkipped check inside the visitor
|
|
274
292
|
// because the node needs to be re-looked up by id from the hashmap.
|
|
@@ -293,8 +311,8 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
293
311
|
|
|
294
312
|
traverseBundles<TContext>(
|
|
295
313
|
visit: GraphVisitor<TBundle, TContext>,
|
|
296
|
-
startBundle
|
|
297
|
-
):
|
|
314
|
+
startBundle?: IBundle | null,
|
|
315
|
+
): TContext | null | undefined {
|
|
298
316
|
return this.#graph.traverseBundles(
|
|
299
317
|
mapVisitor(
|
|
300
318
|
(bundle) => this.#createBundle(bundle, this.#graph, this.#options),
|
|
@@ -316,7 +334,9 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
316
334
|
.map((bundle) => this.#createBundle(bundle, this.#graph, this.#options));
|
|
317
335
|
}
|
|
318
336
|
|
|
319
|
-
getUsedSymbols(
|
|
337
|
+
getUsedSymbols(
|
|
338
|
+
v: IAsset | IDependency,
|
|
339
|
+
): ReadonlySet<Symbol> | null | undefined {
|
|
320
340
|
if (v instanceof Asset) {
|
|
321
341
|
return this.#graph.getUsedSymbolsAsset(assetToAssetValue(v));
|
|
322
342
|
} else {
|
|
@@ -340,16 +360,16 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
340
360
|
getConditionsForDependencies(
|
|
341
361
|
deps: Array<IDependency>,
|
|
342
362
|
bundle: NamedBundle,
|
|
343
|
-
): Set<{
|
|
344
|
-
publicId: string
|
|
345
|
-
key: string
|
|
346
|
-
ifTrueDependency: IDependency
|
|
347
|
-
ifFalseDependency: IDependency
|
|
348
|
-
ifTrueBundles: Array<TBundle
|
|
349
|
-
ifFalseBundles: Array<TBundle
|
|
350
|
-
ifTrueAssetId: string
|
|
351
|
-
ifFalseAssetId: string
|
|
352
|
-
|
|
363
|
+
): Set<{
|
|
364
|
+
publicId: string;
|
|
365
|
+
key: string;
|
|
366
|
+
ifTrueDependency: IDependency;
|
|
367
|
+
ifFalseDependency: IDependency;
|
|
368
|
+
ifTrueBundles: Array<TBundle>;
|
|
369
|
+
ifFalseBundles: Array<TBundle>;
|
|
370
|
+
ifTrueAssetId: string;
|
|
371
|
+
ifFalseAssetId: string;
|
|
372
|
+
}> {
|
|
353
373
|
const conditions = new Set();
|
|
354
374
|
const depIds = deps.map((dep) => dep.id);
|
|
355
375
|
for (const condition of this.#graph._conditions.values()) {
|
|
@@ -437,6 +457,7 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
437
457
|
}
|
|
438
458
|
}
|
|
439
459
|
|
|
460
|
+
// @ts-expect-error TS2322
|
|
440
461
|
return conditions;
|
|
441
462
|
}
|
|
442
463
|
|
|
@@ -447,12 +468,12 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
447
468
|
string,
|
|
448
469
|
Map<
|
|
449
470
|
string,
|
|
450
|
-
{
|
|
451
|
-
bundle: TBundle
|
|
452
|
-
ifTrueBundles: Array<TBundle
|
|
453
|
-
ifFalseBundles: Array<TBundle
|
|
454
|
-
|
|
455
|
-
|
|
471
|
+
{
|
|
472
|
+
bundle: TBundle;
|
|
473
|
+
ifTrueBundles: Array<TBundle>;
|
|
474
|
+
ifFalseBundles: Array<TBundle>;
|
|
475
|
+
}
|
|
476
|
+
>
|
|
456
477
|
> {
|
|
457
478
|
let bundleConditions = new Map();
|
|
458
479
|
|
|
@@ -462,15 +483,15 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
462
483
|
nullthrows(this.getAssetById(asset.id)),
|
|
463
484
|
);
|
|
464
485
|
let bundles = new Set<TBundle>();
|
|
465
|
-
let ifTrueBundles = [];
|
|
466
|
-
let ifFalseBundles = [];
|
|
486
|
+
let ifTrueBundles: Array<TBundle> = [];
|
|
487
|
+
let ifFalseBundles: Array<TBundle> = [];
|
|
467
488
|
for (const asset of assets) {
|
|
468
489
|
const bundlesWithAsset = this.getBundlesWithAsset(asset);
|
|
469
490
|
for (const bundle of bundlesWithAsset) {
|
|
470
491
|
bundles.add(bundle);
|
|
471
492
|
}
|
|
472
493
|
const assetDeps = this.getDependencies(asset);
|
|
473
|
-
const depToBundles = (dep) => {
|
|
494
|
+
const depToBundles = (dep: Dependency) => {
|
|
474
495
|
const publicDep = nullthrows(
|
|
475
496
|
assetDeps.find((assetDep) => dep.id === assetDep.id),
|
|
476
497
|
);
|
|
@@ -482,17 +503,27 @@ export default class BundleGraph<TBundle: IBundle>
|
|
|
482
503
|
invariant(resolved.type === 'bundle_group');
|
|
483
504
|
return this.getBundlesInBundleGroup(resolved.value);
|
|
484
505
|
};
|
|
506
|
+
// @ts-expect-error TS2345
|
|
485
507
|
ifTrueBundles.push(...depToBundles(cond.ifTrueDependency));
|
|
508
|
+
// @ts-expect-error TS2345
|
|
486
509
|
ifFalseBundles.push(...depToBundles(cond.ifFalseDependency));
|
|
487
510
|
}
|
|
488
511
|
|
|
489
512
|
for (let bundle of bundles) {
|
|
490
513
|
const conditions = bundleConditions.get(bundle.id) ?? new Map();
|
|
491
514
|
|
|
515
|
+
const currentCondition = conditions.get(cond.key);
|
|
516
|
+
|
|
492
517
|
conditions.set(cond.key, {
|
|
493
518
|
bundle,
|
|
494
|
-
ifTrueBundles
|
|
495
|
-
|
|
519
|
+
ifTrueBundles: [
|
|
520
|
+
...(currentCondition?.ifTrueBundles ?? []),
|
|
521
|
+
...ifTrueBundles,
|
|
522
|
+
],
|
|
523
|
+
ifFalseBundles: [
|
|
524
|
+
...(currentCondition?.ifFalseBundles ?? []),
|
|
525
|
+
...ifFalseBundles,
|
|
526
|
+
],
|
|
496
527
|
});
|
|
497
528
|
|
|
498
529
|
bundleConditions.set(bundle.id, conditions);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @flow
|
|
2
1
|
import type {
|
|
3
2
|
BundleGroup as IBundleGroup,
|
|
4
3
|
Target as ITarget,
|
|
@@ -13,11 +12,11 @@ import Target from './Target';
|
|
|
13
12
|
|
|
14
13
|
const internalBundleGroupToBundleGroup: WeakMap<
|
|
15
14
|
InternalBundleGroup,
|
|
16
|
-
BundleGroup
|
|
15
|
+
BundleGroup
|
|
17
16
|
> = new WeakMap();
|
|
18
17
|
const _bundleGroupToInternalBundleGroup: WeakMap<
|
|
19
18
|
IBundleGroup,
|
|
20
|
-
InternalBundleGroup
|
|
19
|
+
InternalBundleGroup
|
|
21
20
|
> = new WeakMap();
|
|
22
21
|
export function bundleGroupToInternalBundleGroup(
|
|
23
22
|
target: IBundleGroup,
|
|
@@ -28,13 +27,12 @@ export function bundleGroupToInternalBundleGroup(
|
|
|
28
27
|
const inspect = Symbol.for('nodejs.util.inspect.custom');
|
|
29
28
|
|
|
30
29
|
export default class BundleGroup implements IBundleGroup {
|
|
31
|
-
|
|
32
|
-
#
|
|
30
|
+
// @ts-expect-error TS2564
|
|
31
|
+
#bundleGroup: InternalBundleGroup;
|
|
32
|
+
// @ts-expect-error TS2564
|
|
33
|
+
#options: AtlaspackOptions;
|
|
33
34
|
|
|
34
|
-
constructor(
|
|
35
|
-
bundleGroup: InternalBundleGroup,
|
|
36
|
-
options: AtlaspackOptions,
|
|
37
|
-
): BundleGroup {
|
|
35
|
+
constructor(bundleGroup: InternalBundleGroup, options: AtlaspackOptions) {
|
|
38
36
|
let existing = internalBundleGroupToBundleGroup.get(bundleGroup);
|
|
39
37
|
if (existing != null) {
|
|
40
38
|
return existing;
|
|
@@ -55,7 +53,6 @@ export default class BundleGroup implements IBundleGroup {
|
|
|
55
53
|
return this.#bundleGroup.entryAssetId;
|
|
56
54
|
}
|
|
57
55
|
|
|
58
|
-
// $FlowFixMe
|
|
59
56
|
[inspect]() {
|
|
60
57
|
return `BundleGroup(${this.entryAssetId})`;
|
|
61
58
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @flow strict-local
|
|
2
1
|
import type {
|
|
3
2
|
Config as IConfig,
|
|
4
3
|
ConfigResult,
|
|
@@ -20,19 +19,98 @@ import {
|
|
|
20
19
|
} from '@atlaspack/utils';
|
|
21
20
|
import Environment from './Environment';
|
|
22
21
|
import {fromProjectPath, toProjectPath} from '../projectPath';
|
|
22
|
+
import {fromEnvironmentId} from '../EnvironmentManager';
|
|
23
23
|
|
|
24
24
|
const internalConfigToConfig: DefaultWeakMap<
|
|
25
25
|
AtlaspackOptions,
|
|
26
|
-
WeakMap<Config, PublicConfig
|
|
26
|
+
WeakMap<Config, PublicConfig>
|
|
27
27
|
> = new DefaultWeakMap(() => new WeakMap());
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Implements read tracking over an object.
|
|
31
|
+
*
|
|
32
|
+
* Calling this function with a non-trivial object like a class instance will fail to work.
|
|
33
|
+
*
|
|
34
|
+
* We track reads to fields that resolve to:
|
|
35
|
+
*
|
|
36
|
+
* - primitive values
|
|
37
|
+
* - arrays
|
|
38
|
+
*
|
|
39
|
+
* That is, reading a nested field `a.b.c` will make a single call to `onRead` with the path
|
|
40
|
+
* `['a', 'b', 'c']`.
|
|
41
|
+
*
|
|
42
|
+
* In case the value is null or an array, we will track the read as well.
|
|
43
|
+
*
|
|
44
|
+
* Iterating over `Object.keys(obj.field)` will register a read for the `['field']` path.
|
|
45
|
+
* Other reads work normally.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
*
|
|
49
|
+
* const usedPaths = new Set();
|
|
50
|
+
* const onRead = (path) => {
|
|
51
|
+
* usedPaths.add(path);
|
|
52
|
+
* };
|
|
53
|
+
*
|
|
54
|
+
* const config = makeConfigProxy(onRead, {a: {b: {c: 'd'}}})
|
|
55
|
+
* console.log(config.a.b.c);
|
|
56
|
+
* console.log(Array.from(usedPaths));
|
|
57
|
+
* // We get a single read for the path
|
|
58
|
+
* // ['a', 'b', 'c']
|
|
59
|
+
*
|
|
60
|
+
*/
|
|
61
|
+
export function makeConfigProxy<T>(
|
|
62
|
+
onRead: (path: string[]) => void,
|
|
63
|
+
config: T,
|
|
64
|
+
): T {
|
|
65
|
+
const reportedPaths = new Set();
|
|
66
|
+
const reportPath = (path: Array<string>) => {
|
|
67
|
+
if (reportedPaths.has(path)) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
reportedPaths.add(path);
|
|
71
|
+
onRead(path);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const makeProxy = (target: T, path: Array<string>) => {
|
|
75
|
+
// @ts-expect-error TS2345
|
|
76
|
+
return new Proxy(target, {
|
|
77
|
+
ownKeys(target: T) {
|
|
78
|
+
reportPath(path);
|
|
79
|
+
|
|
80
|
+
return Object.getOwnPropertyNames(target);
|
|
81
|
+
},
|
|
82
|
+
get(target: T, prop: string) {
|
|
83
|
+
// @ts-expect-error TS7053
|
|
84
|
+
const value = target[prop];
|
|
85
|
+
|
|
86
|
+
if (
|
|
87
|
+
typeof value === 'object' &&
|
|
88
|
+
value != null &&
|
|
89
|
+
!Array.isArray(value)
|
|
90
|
+
) {
|
|
91
|
+
return makeProxy(value, [...path, prop]);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
reportPath([...path, prop]);
|
|
95
|
+
|
|
96
|
+
return value;
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
};
|
|
34
100
|
|
|
35
|
-
|
|
101
|
+
// @ts-expect-error TS2322
|
|
102
|
+
return makeProxy(config, []);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export default class PublicConfig implements IConfig {
|
|
106
|
+
// @ts-expect-error TS2564
|
|
107
|
+
#config: Config;
|
|
108
|
+
#pkg: PackageJSON | null | undefined;
|
|
109
|
+
#pkgFilePath: FilePath | null | undefined;
|
|
110
|
+
// @ts-expect-error TS2564
|
|
111
|
+
#options: AtlaspackOptions;
|
|
112
|
+
|
|
113
|
+
constructor(config: Config, options: AtlaspackOptions) {
|
|
36
114
|
let existing = internalConfigToConfig.get(options).get(config);
|
|
37
115
|
if (existing != null) {
|
|
38
116
|
return existing;
|
|
@@ -45,7 +123,7 @@ export default class PublicConfig implements IConfig {
|
|
|
45
123
|
}
|
|
46
124
|
|
|
47
125
|
get env(): Environment {
|
|
48
|
-
return new Environment(this.#config.env, this.#options);
|
|
126
|
+
return new Environment(fromEnvironmentId(this.#config.env), this.#options);
|
|
49
127
|
}
|
|
50
128
|
|
|
51
129
|
get searchPath(): FilePath {
|
|
@@ -60,7 +138,6 @@ export default class PublicConfig implements IConfig {
|
|
|
60
138
|
return this.#config.isSource;
|
|
61
139
|
}
|
|
62
140
|
|
|
63
|
-
// $FlowFixMe
|
|
64
141
|
setResult(result: any): void {
|
|
65
142
|
this.#config.result = result;
|
|
66
143
|
}
|
|
@@ -75,7 +152,7 @@ export default class PublicConfig implements IConfig {
|
|
|
75
152
|
);
|
|
76
153
|
}
|
|
77
154
|
|
|
78
|
-
invalidateOnConfigKeyChange(filePath: FilePath, configKey: string) {
|
|
155
|
+
invalidateOnConfigKeyChange(filePath: FilePath, configKey: string[]) {
|
|
79
156
|
this.#config.invalidateOnConfigKeyChange.push({
|
|
80
157
|
filePath: toProjectPath(this.#options.projectRoot, filePath),
|
|
81
158
|
configKey,
|
|
@@ -86,31 +163,43 @@ export default class PublicConfig implements IConfig {
|
|
|
86
163
|
this.#config.devDeps.push({
|
|
87
164
|
...devDep,
|
|
88
165
|
resolveFrom: toProjectPath(this.#options.projectRoot, devDep.resolveFrom),
|
|
89
|
-
additionalInvalidations: devDep.additionalInvalidations?.map(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
166
|
+
additionalInvalidations: devDep.additionalInvalidations?.map(
|
|
167
|
+
(i: {
|
|
168
|
+
// @ts-expect-error TS2304
|
|
169
|
+
range?: SemverRange | null | undefined;
|
|
170
|
+
resolveFrom: FilePath;
|
|
171
|
+
// @ts-expect-error TS2304
|
|
172
|
+
specifier: DependencySpecifier;
|
|
173
|
+
}) => ({
|
|
174
|
+
...i,
|
|
175
|
+
resolveFrom: toProjectPath(this.#options.projectRoot, i.resolveFrom),
|
|
176
|
+
}),
|
|
177
|
+
),
|
|
93
178
|
});
|
|
94
179
|
}
|
|
95
180
|
|
|
96
181
|
invalidateOnFileCreate(invalidation: FileCreateInvalidation) {
|
|
182
|
+
// @ts-expect-error TS2339
|
|
97
183
|
if (invalidation.glob != null) {
|
|
98
|
-
// $FlowFixMe
|
|
99
184
|
this.#config.invalidateOnFileCreate.push(invalidation);
|
|
185
|
+
// @ts-expect-error TS2339
|
|
100
186
|
} else if (invalidation.filePath != null) {
|
|
101
187
|
this.#config.invalidateOnFileCreate.push({
|
|
102
188
|
filePath: toProjectPath(
|
|
103
189
|
this.#options.projectRoot,
|
|
190
|
+
// @ts-expect-error TS2339
|
|
104
191
|
invalidation.filePath,
|
|
105
192
|
),
|
|
106
193
|
});
|
|
107
194
|
} else {
|
|
195
|
+
// @ts-expect-error TS2339
|
|
108
196
|
invariant(invalidation.aboveFilePath != null);
|
|
109
197
|
this.#config.invalidateOnFileCreate.push({
|
|
110
|
-
//
|
|
198
|
+
// @ts-expect-error TS2339
|
|
111
199
|
fileName: invalidation.fileName,
|
|
112
200
|
aboveFilePath: toProjectPath(
|
|
113
201
|
this.#options.projectRoot,
|
|
202
|
+
// @ts-expect-error TS2339
|
|
114
203
|
invalidation.aboveFilePath,
|
|
115
204
|
),
|
|
116
205
|
});
|
|
@@ -132,29 +221,69 @@ export default class PublicConfig implements IConfig {
|
|
|
132
221
|
async getConfigFrom<T>(
|
|
133
222
|
searchPath: FilePath,
|
|
134
223
|
fileNames: Array<string>,
|
|
135
|
-
options:
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
224
|
+
options:
|
|
225
|
+
| {
|
|
226
|
+
/**
|
|
227
|
+
* @deprecated Use `configKey` instead.
|
|
228
|
+
*/
|
|
229
|
+
packageKey?: string;
|
|
230
|
+
parse?: boolean;
|
|
231
|
+
exclude?: boolean;
|
|
232
|
+
}
|
|
233
|
+
| null
|
|
234
|
+
| undefined
|
|
235
|
+
| {
|
|
236
|
+
/**
|
|
237
|
+
* If specified, this function will return a proxy object that will track reads to
|
|
238
|
+
* config fields and only register invalidations for when those keys change.
|
|
239
|
+
*/
|
|
240
|
+
readTracking?: boolean;
|
|
241
|
+
}
|
|
242
|
+
| null
|
|
243
|
+
| undefined,
|
|
244
|
+
): Promise<ConfigResultWithFilePath<T> | null | undefined> {
|
|
245
|
+
// @ts-expect-error TS2339
|
|
141
246
|
let packageKey = options?.packageKey;
|
|
142
247
|
if (packageKey != null) {
|
|
143
248
|
let pkg = await this.getConfigFrom(searchPath, ['package.json'], {
|
|
144
249
|
exclude: true,
|
|
145
250
|
});
|
|
146
251
|
|
|
252
|
+
// @ts-expect-error TS18046
|
|
147
253
|
if (pkg && pkg.contents[packageKey]) {
|
|
148
254
|
// Invalidate only when the package key changes
|
|
149
|
-
this.invalidateOnConfigKeyChange(pkg.filePath, packageKey);
|
|
255
|
+
this.invalidateOnConfigKeyChange(pkg.filePath, [packageKey]);
|
|
150
256
|
|
|
151
257
|
return {
|
|
258
|
+
// @ts-expect-error TS18046
|
|
152
259
|
contents: pkg.contents[packageKey],
|
|
153
260
|
filePath: pkg.filePath,
|
|
154
261
|
};
|
|
155
262
|
}
|
|
156
263
|
}
|
|
157
264
|
|
|
265
|
+
// @ts-expect-error TS2339
|
|
266
|
+
const readTracking = options?.readTracking;
|
|
267
|
+
if (readTracking === true) {
|
|
268
|
+
for (let fileName of fileNames) {
|
|
269
|
+
const config = await this.getConfigFrom(searchPath, [fileName], {
|
|
270
|
+
exclude: true,
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
if (config != null) {
|
|
274
|
+
// @ts-expect-error TS2322
|
|
275
|
+
return Promise.resolve({
|
|
276
|
+
contents: makeConfigProxy((keyPath) => {
|
|
277
|
+
this.invalidateOnConfigKeyChange(config.filePath, keyPath);
|
|
278
|
+
}, config.contents),
|
|
279
|
+
filePath: config.filePath,
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// fall through so that file above invalidations are registered
|
|
285
|
+
}
|
|
286
|
+
|
|
158
287
|
if (fileNames.length === 0) {
|
|
159
288
|
return null;
|
|
160
289
|
}
|
|
@@ -167,6 +296,7 @@ export default class PublicConfig implements IConfig {
|
|
|
167
296
|
});
|
|
168
297
|
}
|
|
169
298
|
|
|
299
|
+
// @ts-expect-error TS2339
|
|
170
300
|
let parse = options && options.parse;
|
|
171
301
|
let configFilePath = await resolveConfig(
|
|
172
302
|
this.#options.inputFS,
|
|
@@ -178,6 +308,7 @@ export default class PublicConfig implements IConfig {
|
|
|
178
308
|
return null;
|
|
179
309
|
}
|
|
180
310
|
|
|
311
|
+
// @ts-expect-error TS2339
|
|
181
312
|
if (!options || !options.exclude) {
|
|
182
313
|
this.invalidateOnFileChange(configFilePath);
|
|
183
314
|
}
|
|
@@ -203,7 +334,6 @@ export default class PublicConfig implements IConfig {
|
|
|
203
334
|
);
|
|
204
335
|
|
|
205
336
|
if (
|
|
206
|
-
// $FlowFixMe
|
|
207
337
|
Object.prototype.toString.call(config) === '[object Module]' &&
|
|
208
338
|
config.default != null
|
|
209
339
|
) {
|
|
@@ -234,21 +364,29 @@ export default class PublicConfig implements IConfig {
|
|
|
234
364
|
|
|
235
365
|
getConfig<T>(
|
|
236
366
|
filePaths: Array<FilePath>,
|
|
237
|
-
options:
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
367
|
+
options:
|
|
368
|
+
| {
|
|
369
|
+
packageKey?: string;
|
|
370
|
+
parse?: boolean;
|
|
371
|
+
exclude?: boolean;
|
|
372
|
+
}
|
|
373
|
+
| null
|
|
374
|
+
| undefined
|
|
375
|
+
| {
|
|
376
|
+
readTracking?: boolean;
|
|
377
|
+
},
|
|
378
|
+
): Promise<ConfigResultWithFilePath<T> | null | undefined> {
|
|
243
379
|
return this.getConfigFrom(this.searchPath, filePaths, options);
|
|
244
380
|
}
|
|
245
381
|
|
|
246
|
-
async getPackage(): Promise
|
|
382
|
+
async getPackage(): Promise<PackageJSON | null | undefined> {
|
|
247
383
|
if (this.#pkg) {
|
|
248
384
|
return this.#pkg;
|
|
249
385
|
}
|
|
250
386
|
|
|
251
|
-
let pkgConfig = await this.getConfig<PackageJSON>(['package.json']
|
|
387
|
+
let pkgConfig = await this.getConfig<PackageJSON>(['package.json'], {
|
|
388
|
+
readTracking: true,
|
|
389
|
+
});
|
|
252
390
|
if (!pkgConfig) {
|
|
253
391
|
return null;
|
|
254
392
|
}
|