@softarc/native-federation 3.5.5 → 4.0.0-RC10
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/package.json +33 -5
- package/src/config.d.ts +4 -1
- package/src/config.js +4 -6
- package/src/domain.d.ts +2 -0
- package/src/domain.js +2 -0
- package/src/index.d.ts +10 -1
- package/src/index.js +10 -5
- package/src/internal.d.ts +13 -0
- package/src/internal.js +10 -0
- package/src/lib/config/configuration-context.js +3 -9
- package/src/lib/config/default-skip-list.d.ts +4 -0
- package/src/lib/config/default-skip-list.js +31 -0
- package/src/lib/config/remove-unused-deps.d.ts +3 -0
- package/src/lib/config/remove-unused-deps.js +10 -0
- package/src/lib/config/share-utils.d.ts +6 -18
- package/src/lib/config/share-utils.js +49 -128
- package/src/lib/config/with-native-federation.d.ts +1 -1
- package/src/lib/config/with-native-federation.js +48 -75
- package/src/lib/core/build-adapter.d.ts +3 -28
- package/src/lib/core/build-adapter.js +8 -13
- package/src/lib/core/build-for-federation.d.ts +4 -10
- package/src/lib/core/build-for-federation.js +84 -79
- package/src/lib/core/bundle-exposed-and-mappings.d.ts +6 -10
- package/src/lib/core/bundle-exposed-and-mappings.js +78 -60
- package/src/lib/core/bundle-shared.d.ts +11 -6
- package/src/lib/core/bundle-shared.js +88 -72
- package/src/lib/core/default-external-list.js +1 -8
- package/src/lib/core/federation-builder.d.ts +11 -6
- package/src/lib/core/federation-builder.js +27 -21
- package/src/lib/core/federation-cache.d.ts +8 -0
- package/src/lib/core/federation-cache.js +11 -0
- package/src/lib/core/get-externals.d.ts +1 -1
- package/src/lib/core/get-externals.js +2 -6
- package/src/lib/core/normalize-options.d.ts +12 -0
- package/src/lib/core/normalize-options.js +57 -0
- package/src/lib/core/rebuild-for-federation.d.ts +4 -0
- package/src/lib/core/rebuild-for-federation.js +37 -0
- package/src/lib/core/write-federation-info.d.ts +2 -2
- package/src/lib/core/write-federation-info.js +3 -8
- package/src/lib/core/write-import-map.d.ts +6 -3
- package/src/lib/core/write-import-map.js +13 -9
- package/src/lib/domain/config/external-config.contract.d.ts +43 -0
- package/src/lib/domain/config/external-config.contract.js +1 -0
- package/src/lib/domain/config/federation-config.contract.d.ts +35 -0
- package/src/lib/domain/config/federation-config.contract.js +1 -0
- package/src/lib/domain/config/index.d.ts +3 -0
- package/src/lib/domain/config/index.js +1 -0
- package/src/lib/{core/default-skip-list.d.ts → domain/config/skip-list.contract.d.ts} +0 -3
- package/src/lib/domain/config/skip-list.contract.js +1 -0
- package/src/lib/domain/config/with-native-federation.contract.d.ts +2 -0
- package/src/lib/domain/config/with-native-federation.contract.js +1 -0
- package/src/lib/domain/core/build-adapter.contract.d.ts +40 -0
- package/src/lib/domain/core/build-adapter.contract.js +1 -0
- package/src/lib/domain/core/build-notification-options.contract.d.ts +9 -0
- package/src/lib/domain/core/build-notification-options.contract.js +6 -0
- package/src/lib/domain/core/chunk.d.ts +2 -0
- package/src/lib/domain/core/chunk.js +8 -0
- package/src/lib/domain/core/federation-cache.contract.d.ts +7 -0
- package/src/lib/domain/core/federation-cache.contract.js +1 -0
- package/src/lib/domain/core/federation-info.contract.d.ts +33 -0
- package/src/lib/domain/core/federation-info.contract.js +1 -0
- package/src/lib/domain/core/federation-options.contract.d.ts +21 -0
- package/src/lib/domain/core/federation-options.contract.js +1 -0
- package/src/lib/domain/core/index.d.ts +6 -0
- package/src/lib/domain/core/index.js +2 -0
- package/src/lib/domain/utils/index.d.ts +2 -0
- package/src/lib/domain/utils/index.js +1 -0
- package/src/lib/domain/utils/keyvaluepair.contract.d.ts +4 -0
- package/src/lib/domain/utils/keyvaluepair.contract.js +1 -0
- package/src/lib/domain/utils/mapped-path.contract.d.ts +1 -0
- package/src/lib/domain/utils/mapped-path.contract.js +5 -0
- package/src/lib/domain/utils/used-dependencies.contract.d.ts +5 -0
- package/src/lib/domain/utils/used-dependencies.contract.js +1 -0
- package/src/lib/utils/build-result-map.d.ts +3 -2
- package/src/lib/utils/build-result-map.js +14 -13
- package/src/lib/utils/{bundle-caching.d.ts → cache-persistence.d.ts} +6 -4
- package/src/lib/utils/cache-persistence.js +66 -0
- package/src/lib/utils/errors.js +1 -6
- package/src/lib/utils/get-external-imports.js +5 -10
- package/src/lib/utils/get-used-dependencies.d.ts +7 -0
- package/src/lib/utils/get-used-dependencies.js +123 -0
- package/src/lib/utils/hash-file.js +3 -8
- package/src/lib/utils/logger.js +10 -16
- package/src/lib/utils/mapped-paths.d.ts +7 -10
- package/src/lib/utils/mapped-paths.js +18 -37
- package/src/lib/utils/normalize.js +2 -7
- package/src/lib/utils/package-info.js +36 -47
- package/src/lib/utils/rebuild-queue.d.ts +14 -1
- package/src/lib/utils/rebuild-queue.js +36 -21
- package/src/lib/utils/resolve-glob.js +7 -12
- package/src/lib/utils/resolve-wildcard-keys.js +9 -15
- package/src/lib/utils/rewrite-chunk-imports.d.ts +0 -2
- package/src/lib/utils/rewrite-chunk-imports.js +13 -29
- package/LICENSE +0 -8
- package/README.md +0 -509
- package/build.d.ts +0 -1
- package/build.js +0 -5
- package/build.js.map +0 -1
- package/src/build.d.ts +0 -19
- package/src/build.js +0 -38
- package/src/build.js.map +0 -1
- package/src/config.js.map +0 -1
- package/src/index.js.map +0 -1
- package/src/lib/config/configuration-context.js.map +0 -1
- package/src/lib/config/federation-config.d.ts +0 -55
- package/src/lib/config/federation-config.js +0 -3
- package/src/lib/config/federation-config.js.map +0 -1
- package/src/lib/config/share-utils.js.map +0 -1
- package/src/lib/config/with-native-federation.js.map +0 -1
- package/src/lib/core/build-adapter.js.map +0 -1
- package/src/lib/core/build-for-federation.js.map +0 -1
- package/src/lib/core/bundle-exposed-and-mappings.js.map +0 -1
- package/src/lib/core/bundle-shared.js.map +0 -1
- package/src/lib/core/default-external-list.js.map +0 -1
- package/src/lib/core/default-server-deps-list.d.ts +0 -2
- package/src/lib/core/default-server-deps-list.js +0 -10
- package/src/lib/core/default-server-deps-list.js.map +0 -1
- package/src/lib/core/default-skip-list.js +0 -49
- package/src/lib/core/default-skip-list.js.map +0 -1
- package/src/lib/core/federation-builder.js.map +0 -1
- package/src/lib/core/federation-options.d.ts +0 -14
- package/src/lib/core/federation-options.js +0 -3
- package/src/lib/core/federation-options.js.map +0 -1
- package/src/lib/core/get-externals.js.map +0 -1
- package/src/lib/core/load-federation-config.d.ts +0 -3
- package/src/lib/core/load-federation-config.js +0 -24
- package/src/lib/core/load-federation-config.js.map +0 -1
- package/src/lib/core/remove-unused-deps.d.ts +0 -2
- package/src/lib/core/remove-unused-deps.js +0 -98
- package/src/lib/core/remove-unused-deps.js.map +0 -1
- package/src/lib/core/write-federation-info.js.map +0 -1
- package/src/lib/core/write-import-map.js.map +0 -1
- package/src/lib/utils/build-result-map.js.map +0 -1
- package/src/lib/utils/build-utils.d.ts +0 -2
- package/src/lib/utils/build-utils.js +0 -9
- package/src/lib/utils/build-utils.js.map +0 -1
- package/src/lib/utils/bundle-caching.js +0 -78
- package/src/lib/utils/bundle-caching.js.map +0 -1
- package/src/lib/utils/config-utils.d.ts +0 -2
- package/src/lib/utils/config-utils.js +0 -13
- package/src/lib/utils/config-utils.js.map +0 -1
- package/src/lib/utils/errors.js.map +0 -1
- package/src/lib/utils/get-external-imports.js.map +0 -1
- package/src/lib/utils/hash-file.js.map +0 -1
- package/src/lib/utils/logger.js.map +0 -1
- package/src/lib/utils/mapped-paths.js.map +0 -1
- package/src/lib/utils/normalize.js.map +0 -1
- package/src/lib/utils/package-info.js.map +0 -1
- package/src/lib/utils/rebuild-queue.js.map +0 -1
- package/src/lib/utils/resolve-glob.js.map +0 -1
- package/src/lib/utils/resolve-wildcard-keys.js.map +0 -1
- package/src/lib/utils/rewrite-chunk-imports.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,15 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softarc/native-federation",
|
|
3
|
-
"version": "
|
|
4
|
-
"type": "
|
|
3
|
+
"version": "4.0.0-RC10",
|
|
4
|
+
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"
|
|
7
|
+
"@softarc/sheriff-core": "^0.19.6",
|
|
8
8
|
"chalk": "^5.6.2",
|
|
9
|
-
"@softarc/native-federation-runtime": "~3.5.4",
|
|
10
9
|
"fast-glob": "^3.3.3",
|
|
11
|
-
"
|
|
10
|
+
"json5": "^2.2.3",
|
|
11
|
+
"esbuild": "^0.28.0"
|
|
12
12
|
},
|
|
13
|
+
"exports": {
|
|
14
|
+
"./package.json": "./package.json",
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./src/index.d.ts",
|
|
17
|
+
"import": "./src/index.js",
|
|
18
|
+
"default": "./src/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./config": {
|
|
21
|
+
"types": "./src/config.d.ts",
|
|
22
|
+
"import": "./src/config.js",
|
|
23
|
+
"default": "./src/config.js"
|
|
24
|
+
},
|
|
25
|
+
"./domain": {
|
|
26
|
+
"types": "./src/domain.d.ts",
|
|
27
|
+
"import": "./src/domain.js",
|
|
28
|
+
"default": "./src/domain.js"
|
|
29
|
+
},
|
|
30
|
+
"./internal": {
|
|
31
|
+
"types": "./src/internal.d.ts",
|
|
32
|
+
"import": "./src/internal.js",
|
|
33
|
+
"default": "./src/internal.js"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"src",
|
|
38
|
+
"!**/*.tsbuildinfo"
|
|
39
|
+
],
|
|
13
40
|
"types": "./src/index.d.ts",
|
|
41
|
+
"module": "./src/index.js",
|
|
14
42
|
"main": "./src/index.js"
|
|
15
43
|
}
|
package/src/config.d.ts
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './lib/domain/config/index.js';
|
|
2
|
+
export { withNativeFederation } from './lib/config/with-native-federation.js';
|
|
3
|
+
export { findRootTsConfigJson, share, shareAll } from './lib/config/share-utils.js';
|
|
4
|
+
export { DEFAULT_SKIP_LIST } from './lib/config/default-skip-list.js';
|
package/src/config.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
tslib_1.__exportStar(require("./build"), exports);
|
|
6
|
-
//# sourceMappingURL=config.js.map
|
|
1
|
+
export * from './lib/domain/config/index.js';
|
|
2
|
+
export { withNativeFederation } from './lib/config/with-native-federation.js';
|
|
3
|
+
export { findRootTsConfigJson, share, shareAll } from './lib/config/share-utils.js';
|
|
4
|
+
export { DEFAULT_SKIP_LIST } from './lib/config/default-skip-list.js';
|
package/src/domain.d.ts
ADDED
package/src/domain.js
ADDED
package/src/index.d.ts
CHANGED
|
@@ -1 +1,10 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { setBuildAdapter } from './lib/core/build-adapter.js';
|
|
2
|
+
export { buildForFederation } from './lib/core/build-for-federation.js';
|
|
3
|
+
export { rebuildForFederation } from './lib/core/rebuild-for-federation.js';
|
|
4
|
+
export { createFederationCache } from './lib/core/federation-cache.js';
|
|
5
|
+
export { bundleExposedAndMappings } from './lib/core/bundle-exposed-and-mappings.js';
|
|
6
|
+
export { getExternals } from './lib/core/get-externals.js';
|
|
7
|
+
export { normalizeFederationOptions } from './lib/core/normalize-options.js';
|
|
8
|
+
export { writeFederationInfo } from './lib/core/write-federation-info.js';
|
|
9
|
+
export { type BuildHelperParams, federationBuilder } from './lib/core/federation-builder.js';
|
|
10
|
+
export * from './domain.js';
|
package/src/index.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
export { setBuildAdapter } from './lib/core/build-adapter.js';
|
|
2
|
+
export { buildForFederation } from './lib/core/build-for-federation.js';
|
|
3
|
+
export { rebuildForFederation } from './lib/core/rebuild-for-federation.js';
|
|
4
|
+
export { createFederationCache } from './lib/core/federation-cache.js';
|
|
5
|
+
export { bundleExposedAndMappings } from './lib/core/bundle-exposed-and-mappings.js';
|
|
6
|
+
export { getExternals } from './lib/core/get-externals.js';
|
|
7
|
+
export { normalizeFederationOptions } from './lib/core/normalize-options.js';
|
|
8
|
+
export { writeFederationInfo } from './lib/core/write-federation-info.js';
|
|
9
|
+
export { federationBuilder } from './lib/core/federation-builder.js';
|
|
10
|
+
export * from './domain.js';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from './lib/utils/build-result-map.js';
|
|
2
|
+
export { hashFile } from './lib/utils/hash-file.js';
|
|
3
|
+
export * from './lib/utils/errors.js';
|
|
4
|
+
export { logger, setLogLevel } from './lib/utils/logger.js';
|
|
5
|
+
export type { PathToImport } from './lib/domain/utils/mapped-path.contract.js';
|
|
6
|
+
export { RebuildQueue, type TrackResult } from './lib/utils/rebuild-queue.js';
|
|
7
|
+
export { AbortedError } from './lib/utils/errors.js';
|
|
8
|
+
export { createBuildResultMap, lookupInResultMap, popFromResultMap, } from './lib/utils/build-result-map.js';
|
|
9
|
+
export { writeImportMap } from './lib/core/write-import-map.js';
|
|
10
|
+
export type { NormalizedExternalConfig, NormalizedSharedExternalsConfig, } from './lib/domain/config/external-config.contract.js';
|
|
11
|
+
export type { NormalizedFederationConfig } from './lib/domain/config/federation-config.contract.js';
|
|
12
|
+
export { getDefaultCachePath, getChecksum } from './lib/utils/cache-persistence.js';
|
|
13
|
+
export { isInSkipList, prepareSkipList } from './lib/config/default-skip-list.js';
|
package/src/internal.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './lib/utils/build-result-map.js';
|
|
2
|
+
export { hashFile } from './lib/utils/hash-file.js';
|
|
3
|
+
export * from './lib/utils/errors.js';
|
|
4
|
+
export { logger, setLogLevel } from './lib/utils/logger.js';
|
|
5
|
+
export { RebuildQueue } from './lib/utils/rebuild-queue.js';
|
|
6
|
+
export { AbortedError } from './lib/utils/errors.js';
|
|
7
|
+
export { createBuildResultMap, lookupInResultMap, popFromResultMap, } from './lib/utils/build-result-map.js';
|
|
8
|
+
export { writeImportMap } from './lib/core/write-import-map.js';
|
|
9
|
+
export { getDefaultCachePath, getChecksum } from './lib/utils/cache-persistence.js';
|
|
10
|
+
export { isInSkipList, prepareSkipList } from './lib/config/default-skip-list.js';
|
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useWorkspace = useWorkspace;
|
|
4
|
-
exports.usePackageJson = usePackageJson;
|
|
5
|
-
exports.getConfigContext = getConfigContext;
|
|
6
1
|
let _context = {};
|
|
7
|
-
function useWorkspace(workspaceRoot) {
|
|
2
|
+
export function useWorkspace(workspaceRoot) {
|
|
8
3
|
_context = { ..._context, workspaceRoot };
|
|
9
4
|
}
|
|
10
|
-
function usePackageJson(packageJson) {
|
|
5
|
+
export function usePackageJson(packageJson) {
|
|
11
6
|
_context = { ..._context, packageJson };
|
|
12
7
|
}
|
|
13
|
-
function getConfigContext() {
|
|
8
|
+
export function getConfigContext() {
|
|
14
9
|
return _context;
|
|
15
10
|
}
|
|
16
|
-
//# sourceMappingURL=configuration-context.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PreparedSkipList, SkipList } from '../domain/config/skip-list.contract.js';
|
|
2
|
+
export declare const DEFAULT_SKIP_LIST: SkipList;
|
|
3
|
+
export declare function prepareSkipList(skipList: SkipList): PreparedSkipList;
|
|
4
|
+
export declare function isInSkipList(entry: string, skipList: PreparedSkipList): boolean;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const DEFAULT_SKIP_LIST = [
|
|
2
|
+
'@softarc/native-federation',
|
|
3
|
+
'@softarc/native-federation-core',
|
|
4
|
+
'@softarc/native-federation-node',
|
|
5
|
+
'@softarc/native-federation-esbuild',
|
|
6
|
+
'@softarc/native-federation-runtime',
|
|
7
|
+
'@softarc/native-federation-orchestrator',
|
|
8
|
+
'vanilla-native-federation',
|
|
9
|
+
'es-module-shims',
|
|
10
|
+
'tslib/',
|
|
11
|
+
pkg => pkg.startsWith('@types/'),
|
|
12
|
+
];
|
|
13
|
+
export function prepareSkipList(skipList) {
|
|
14
|
+
return {
|
|
15
|
+
strings: new Set(skipList.filter(e => typeof e === 'string')),
|
|
16
|
+
functions: skipList.filter(e => typeof e === 'function'),
|
|
17
|
+
regexps: skipList.filter(e => typeof e === 'object'),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function isInSkipList(entry, skipList) {
|
|
21
|
+
if (skipList.strings.has(entry)) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
if (skipList.functions.find(f => f(entry))) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
if (skipList.regexps.find(r => r.test(entry))) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { NormalizedFederationConfig } from '../domain/config/federation-config.contract.js';
|
|
2
|
+
import type { UsedDependencies } from '../domain/utils/used-dependencies.contract.js';
|
|
3
|
+
export declare function removeUnusedDeps(usedDependencies: UsedDependencies, config: NormalizedFederationConfig): NormalizedFederationConfig;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function removeUnusedDeps(usedDependencies, config) {
|
|
2
|
+
const filteredDependencies = Object.entries(config.shared)
|
|
3
|
+
.filter(([shared, meta]) => !!meta.includeSecondaries || usedDependencies.external.has(shared))
|
|
4
|
+
.reduce((acc, [shared, meta]) => ({ ...acc, [shared]: meta }), {});
|
|
5
|
+
return {
|
|
6
|
+
...config,
|
|
7
|
+
shared: filteredDependencies,
|
|
8
|
+
sharedMappings: usedDependencies.internal,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
@@ -1,22 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export declare const DEFAULT_SECONDARIES_SKIP_LIST: string[];
|
|
4
|
-
type IncludeSecondariesOptions = {
|
|
5
|
-
skip: string | string[];
|
|
6
|
-
resolveGlob?: boolean;
|
|
7
|
-
keepAll?: boolean;
|
|
8
|
-
} | boolean;
|
|
9
|
-
type CustomSharedConfig = SharedConfig & {
|
|
10
|
-
includeSecondaries?: IncludeSecondariesOptions;
|
|
11
|
-
};
|
|
12
|
-
type ConfigObject = Record<string, CustomSharedConfig>;
|
|
13
|
-
type Config = (string | ConfigObject)[] | ConfigObject;
|
|
1
|
+
import { type SkipList } from '../domain/config/skip-list.contract.js';
|
|
2
|
+
import type { ShareAllExternalsOptions, ShareExternalsOptions } from '../domain/config/external-config.contract.js';
|
|
14
3
|
export declare function findRootTsConfigJson(): string;
|
|
15
|
-
export declare function shareAll(config
|
|
4
|
+
export declare function shareAll(config: ShareAllExternalsOptions, opts?: {
|
|
16
5
|
skipList?: SkipList;
|
|
17
6
|
projectPath?: string;
|
|
18
|
-
overrides?:
|
|
19
|
-
}):
|
|
7
|
+
overrides?: ShareExternalsOptions;
|
|
8
|
+
}): ShareExternalsOptions | null;
|
|
20
9
|
export declare function setInferVersion(infer: boolean): void;
|
|
21
|
-
export declare function share(configuredShareObjects:
|
|
22
|
-
export {};
|
|
10
|
+
export declare function share(configuredShareObjects: ShareExternalsOptions, projectPath?: string, skipList?: SkipList): ShareExternalsOptions;
|
|
@@ -1,25 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const fs = require("fs");
|
|
10
|
-
const process_1 = require("process");
|
|
11
|
-
const default_skip_list_1 = require("../core/default-skip-list");
|
|
12
|
-
const package_info_1 = require("../utils/package-info");
|
|
13
|
-
const configuration_context_1 = require("./configuration-context");
|
|
14
|
-
const logger_1 = require("../utils/logger");
|
|
15
|
-
const resolve_wildcard_keys_1 = require("../utils/resolve-wildcard-keys");
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import { cwd } from 'process';
|
|
4
|
+
import { DEFAULT_SKIP_LIST, isInSkipList, prepareSkipList } from './default-skip-list.js';
|
|
5
|
+
import { findDepPackageJson, getVersionMaps } from '../utils/package-info.js';
|
|
6
|
+
import { getConfigContext } from './configuration-context.js';
|
|
7
|
+
import { logger } from '../utils/logger.js';
|
|
8
|
+
import { resolvePackageJsonExportsWildcard } from '../utils/resolve-wildcard-keys.js';
|
|
16
9
|
let inferVersion = false;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
'@angular/common/upgrade',
|
|
20
|
-
];
|
|
21
|
-
function findRootTsConfigJson() {
|
|
22
|
-
const packageJson = findPackageJson((0, process_1.cwd)());
|
|
10
|
+
export function findRootTsConfigJson() {
|
|
11
|
+
const packageJson = findPackageJson(cwd());
|
|
23
12
|
const projectRoot = path.dirname(packageJson);
|
|
24
13
|
const tsConfigBaseJson = path.join(projectRoot, 'tsconfig.base.json');
|
|
25
14
|
const tsConfigJson = path.join(projectRoot, 'tsconfig.json');
|
|
@@ -32,19 +21,17 @@ function findRootTsConfigJson() {
|
|
|
32
21
|
throw new Error('Neither a tsconfig.json nor a tsconfig.base.json was found');
|
|
33
22
|
}
|
|
34
23
|
function findPackageJson(folder) {
|
|
35
|
-
while (!fs.existsSync(path.join(folder, 'package.json')) &&
|
|
36
|
-
path.dirname(folder) !== folder) {
|
|
24
|
+
while (!fs.existsSync(path.join(folder, 'package.json')) && path.dirname(folder) !== folder) {
|
|
37
25
|
folder = path.dirname(folder);
|
|
38
26
|
}
|
|
39
27
|
const filePath = path.join(folder, 'package.json');
|
|
40
28
|
if (fs.existsSync(filePath)) {
|
|
41
29
|
return filePath;
|
|
42
30
|
}
|
|
43
|
-
throw new Error('no package.json found. Searched the following folder and all parents: ' +
|
|
44
|
-
folder);
|
|
31
|
+
throw new Error('no package.json found. Searched the following folder and all parents: ' + folder);
|
|
45
32
|
}
|
|
46
33
|
function lookupVersion(key, workspaceRoot) {
|
|
47
|
-
const versionMaps =
|
|
34
|
+
const versionMaps = getVersionMaps(workspaceRoot, workspaceRoot);
|
|
48
35
|
for (const versionMap of versionMaps) {
|
|
49
36
|
const version = lookupVersionInMap(key, versionMap);
|
|
50
37
|
if (version) {
|
|
@@ -61,9 +48,6 @@ function lookupVersionInMap(key, versions) {
|
|
|
61
48
|
else {
|
|
62
49
|
key = parts[0];
|
|
63
50
|
}
|
|
64
|
-
if (key.toLowerCase() === '@angular-architects/module-federation-runtime') {
|
|
65
|
-
key = '@angular-architects/module-federation';
|
|
66
|
-
}
|
|
67
51
|
if (!versions[key]) {
|
|
68
52
|
return null;
|
|
69
53
|
}
|
|
@@ -72,18 +56,15 @@ function lookupVersionInMap(key, versions) {
|
|
|
72
56
|
function _findSecondaries(libPath, excludes, shareObject, acc, preparedSkipList) {
|
|
73
57
|
const files = fs.readdirSync(libPath);
|
|
74
58
|
const secondaries = files
|
|
75
|
-
.map(
|
|
76
|
-
.filter(
|
|
59
|
+
.map(f => path.join(libPath, f))
|
|
60
|
+
.filter(f => fs.lstatSync(f).isDirectory() && !f.endsWith('node_modules'));
|
|
77
61
|
for (const s of secondaries) {
|
|
78
62
|
if (fs.existsSync(path.join(s, 'package.json'))) {
|
|
79
|
-
const secondaryLibName = s
|
|
80
|
-
|
|
81
|
-
.replace(/^.*node_modules[/]/, '');
|
|
82
|
-
const inCustomSkipList = excludes.some((e) => e === secondaryLibName ||
|
|
83
|
-
(e.endsWith('*') && secondaryLibName.startsWith(e.slice(0, -1))));
|
|
63
|
+
const secondaryLibName = s.replace(/\\/g, '/').replace(/^.*node_modules[/]/, '');
|
|
64
|
+
const inCustomSkipList = excludes.some(e => e === secondaryLibName || (e.endsWith('*') && secondaryLibName.startsWith(e.slice(0, -1))));
|
|
84
65
|
if (inCustomSkipList)
|
|
85
66
|
continue;
|
|
86
|
-
if (
|
|
67
|
+
if (isInSkipList(secondaryLibName, preparedSkipList)) {
|
|
87
68
|
continue;
|
|
88
69
|
}
|
|
89
70
|
acc[secondaryLibName] = { ...shareObject };
|
|
@@ -97,7 +78,7 @@ function findSecondaries(libPath, excludes, shareObject, preparedSkipList) {
|
|
|
97
78
|
return acc;
|
|
98
79
|
}
|
|
99
80
|
function getSecondaries(includeSecondaries, libPath, key, shareObject, preparedSkipList) {
|
|
100
|
-
let exclude = [
|
|
81
|
+
let exclude = [];
|
|
101
82
|
let resolveGlob = false;
|
|
102
83
|
if (typeof includeSecondaries === 'object') {
|
|
103
84
|
if (Array.isArray(includeSecondaries.skip)) {
|
|
@@ -132,21 +113,18 @@ function readConfiguredSecondaries(parent, libPath, exclude, shareObject, prepar
|
|
|
132
113
|
if (!exports) {
|
|
133
114
|
return null;
|
|
134
115
|
}
|
|
135
|
-
const keys = Object.keys(exports).filter(
|
|
136
|
-
key
|
|
116
|
+
const keys = Object.keys(exports).filter(key => key !== '.' &&
|
|
117
|
+
key !== './package.json' &&
|
|
137
118
|
key.startsWith('./') &&
|
|
138
|
-
(exports[key]['default'] ||
|
|
139
|
-
exports[key]['import'] ||
|
|
140
|
-
typeof exports[key] === 'string'));
|
|
119
|
+
(exports[key]?.['default'] || exports[key]?.['import'] || typeof exports[key] === 'string'));
|
|
141
120
|
const result = {};
|
|
142
121
|
const discoveredFiles = new Set();
|
|
143
122
|
for (const key of keys) {
|
|
144
123
|
const secondaryName = path.join(parent, key).replace(/\\/g, '/');
|
|
145
|
-
const inCustomSkipList = exclude.some(
|
|
146
|
-
(e.endsWith('*') && secondaryName.startsWith(e.slice(0, -1))));
|
|
124
|
+
const inCustomSkipList = exclude.some(e => e === secondaryName || (e.endsWith('*') && secondaryName.startsWith(e.slice(0, -1))));
|
|
147
125
|
if (inCustomSkipList)
|
|
148
126
|
continue;
|
|
149
|
-
if (
|
|
127
|
+
if (isInSkipList(secondaryName, preparedSkipList)) {
|
|
150
128
|
continue;
|
|
151
129
|
}
|
|
152
130
|
const entry = getDefaultEntry(exports, key);
|
|
@@ -154,13 +132,11 @@ function readConfiguredSecondaries(parent, libPath, exclude, shareObject, prepar
|
|
|
154
132
|
console.log('No entry point found for ' + secondaryName);
|
|
155
133
|
continue;
|
|
156
134
|
}
|
|
157
|
-
if (!entry?.endsWith('.js') &&
|
|
158
|
-
!entry?.endsWith('.mjs') &&
|
|
159
|
-
!entry?.endsWith('.cjs')) {
|
|
135
|
+
if (!entry?.endsWith('.js') && !entry?.endsWith('.mjs') && !entry?.endsWith('.cjs')) {
|
|
160
136
|
continue;
|
|
161
137
|
}
|
|
162
138
|
const items = resolveGlobSecondaries(key, libPath, parent, secondaryName, entry, { discovered: discoveredFiles, skip: exclude }, resolveGlob);
|
|
163
|
-
items.forEach(
|
|
139
|
+
items.forEach(e => discoveredFiles.add(typeof e === 'string' ? e : e.value));
|
|
164
140
|
for (const item of items) {
|
|
165
141
|
if (typeof item === 'object') {
|
|
166
142
|
result[item.key] = {
|
|
@@ -186,14 +162,14 @@ function resolveGlobSecondaries(key, libPath, parent, secondaryName, entry, excl
|
|
|
186
162
|
if (key.includes('*')) {
|
|
187
163
|
if (!resolveGlob)
|
|
188
164
|
return items;
|
|
189
|
-
const expanded =
|
|
165
|
+
const expanded = resolvePackageJsonExportsWildcard(key, entry, libPath);
|
|
190
166
|
items = expanded
|
|
191
|
-
.map(
|
|
167
|
+
.map(e => ({
|
|
192
168
|
key: path.join(parent, e.key),
|
|
193
169
|
value: path.join(libPath, e.value),
|
|
194
170
|
}))
|
|
195
|
-
.filter(
|
|
196
|
-
if (excludes.skip.some(
|
|
171
|
+
.filter(i => {
|
|
172
|
+
if (excludes.skip.some(e => e.endsWith('*') ? i.key.startsWith(e.slice(0, -1)) : e === i.key)) {
|
|
197
173
|
return false;
|
|
198
174
|
}
|
|
199
175
|
if (excludes.discovered.has(i.value)) {
|
|
@@ -232,110 +208,56 @@ function getDefaultEntry(exports, key) {
|
|
|
232
208
|
}
|
|
233
209
|
return entry;
|
|
234
210
|
}
|
|
235
|
-
function shareAll(config
|
|
211
|
+
export function shareAll(config, opts = {}) {
|
|
236
212
|
// let workspacePath: string | undefined = undefined;
|
|
237
213
|
const projectPath = inferProjectPath(opts.projectPath);
|
|
238
214
|
// workspacePath = getConfigContext().workspaceRoot ?? '';
|
|
239
215
|
// if (!workspacePath) {
|
|
240
216
|
// workspacePath = projectPath;
|
|
241
217
|
// }
|
|
242
|
-
const versionMaps =
|
|
218
|
+
const versionMaps = getVersionMaps(projectPath, projectPath);
|
|
243
219
|
const sharedExternals = {};
|
|
244
|
-
const
|
|
220
|
+
const skipList = opts.skipList ?? DEFAULT_SKIP_LIST;
|
|
245
221
|
for (const versions of versionMaps) {
|
|
246
222
|
for (const key in versions) {
|
|
247
|
-
if (
|
|
223
|
+
if (isInSkipList(key, prepareSkipList(skipList))) {
|
|
248
224
|
continue;
|
|
249
225
|
}
|
|
250
|
-
if (!!opts.overrides &&
|
|
251
|
-
Object.keys(opts.overrides).some((o) => key.startsWith(o))) {
|
|
226
|
+
if (!!opts.overrides && Object.keys(opts.overrides).some(o => key.startsWith(o))) {
|
|
252
227
|
continue;
|
|
253
228
|
}
|
|
254
229
|
const inferVersion = !config.requiredVersion || config.requiredVersion === 'auto';
|
|
255
|
-
const requiredVersion = inferVersion
|
|
256
|
-
? versions[key]
|
|
257
|
-
: config.requiredVersion;
|
|
230
|
+
const requiredVersion = inferVersion ? versions[key] : config.requiredVersion;
|
|
258
231
|
if (!sharedExternals[key]) {
|
|
259
232
|
sharedExternals[key] = { ...config, requiredVersion };
|
|
260
233
|
}
|
|
261
234
|
}
|
|
262
235
|
}
|
|
263
236
|
return {
|
|
264
|
-
...share(sharedExternals, opts.projectPath,
|
|
265
|
-
...(!opts.overrides
|
|
266
|
-
? {}
|
|
267
|
-
: share(opts.overrides, opts.projectPath, opts.skipList ?? default_skip_list_1.DEFAULT_SKIP_LIST)),
|
|
237
|
+
...share(sharedExternals, opts.projectPath, skipList),
|
|
238
|
+
...(!opts.overrides ? {} : share(opts.overrides, opts.projectPath, skipList)),
|
|
268
239
|
};
|
|
269
240
|
}
|
|
270
241
|
function inferProjectPath(projectPath) {
|
|
271
|
-
if (!projectPath &&
|
|
272
|
-
projectPath = path.dirname(
|
|
242
|
+
if (!projectPath && getConfigContext().packageJson) {
|
|
243
|
+
projectPath = path.dirname(getConfigContext().packageJson || '');
|
|
273
244
|
}
|
|
274
|
-
if (!projectPath &&
|
|
275
|
-
projectPath =
|
|
245
|
+
if (!projectPath && getConfigContext().workspaceRoot) {
|
|
246
|
+
projectPath = getConfigContext().workspaceRoot || '';
|
|
276
247
|
}
|
|
277
248
|
if (!projectPath) {
|
|
278
|
-
projectPath =
|
|
249
|
+
projectPath = cwd();
|
|
279
250
|
}
|
|
280
251
|
return projectPath;
|
|
281
252
|
}
|
|
282
|
-
function setInferVersion(infer) {
|
|
253
|
+
export function setInferVersion(infer) {
|
|
283
254
|
inferVersion = infer;
|
|
284
255
|
}
|
|
285
|
-
function
|
|
286
|
-
const discovered = new Set();
|
|
287
|
-
const result = [];
|
|
288
|
-
const packageNames = Object.keys(configuredShareObjects);
|
|
289
|
-
for (const packageName of packageNames) {
|
|
290
|
-
const shareConfig = configuredShareObjects[packageName];
|
|
291
|
-
if (typeof shareConfig === 'object' && shareConfig.transient) {
|
|
292
|
-
logger_1.logger.warn('PLEASE NOTE: The transient flag in your federation.config.js');
|
|
293
|
-
logger_1.logger.warn('is deprecated. Please remove it. Meanwhile, Native Federation');
|
|
294
|
-
logger_1.logger.warn('uses the underlying bundler for splitting transient');
|
|
295
|
-
logger_1.logger.warn('dependencies into separate chunks, _when_ necessary.');
|
|
296
|
-
const packagePath = path.join(projectRoot, 'node_modules', packageName, 'package.json');
|
|
297
|
-
_findTransientDeps(packagePath, projectRoot, preparedSkipList, discovered, result);
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
return result;
|
|
301
|
-
}
|
|
302
|
-
function _findTransientDeps(packagePath, projectRoot, preparedSkipList, discovered, result) {
|
|
303
|
-
if (!fs.existsSync(packagePath)) {
|
|
304
|
-
return;
|
|
305
|
-
}
|
|
306
|
-
const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf-8'));
|
|
307
|
-
const deps = Object.keys(packageJson.dependencies ?? {});
|
|
308
|
-
for (const dep of deps) {
|
|
309
|
-
const depPackageJson = path.join(projectRoot, 'node_modules', dep, 'package.json');
|
|
310
|
-
const depPath = path.dirname(depPackageJson);
|
|
311
|
-
if (!discovered.has(depPackageJson) &&
|
|
312
|
-
!(0, default_skip_list_1.isInSkipList)(dep, preparedSkipList) &&
|
|
313
|
-
fs.existsSync(depPackageJson)) {
|
|
314
|
-
discovered.add(depPackageJson);
|
|
315
|
-
const version = packageJson.dependencies[dep];
|
|
316
|
-
result.push({
|
|
317
|
-
packageName: dep,
|
|
318
|
-
requiredVersion: version,
|
|
319
|
-
packagePath: depPath,
|
|
320
|
-
});
|
|
321
|
-
_findTransientDeps(depPackageJson, projectRoot, preparedSkipList, discovered, result);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
function share(configuredShareObjects, projectPath = '', skipList = default_skip_list_1.DEFAULT_SKIP_LIST) {
|
|
256
|
+
export function share(configuredShareObjects, projectPath = '', skipList = DEFAULT_SKIP_LIST) {
|
|
326
257
|
projectPath = inferProjectPath(projectPath);
|
|
327
258
|
const packagePath = findPackageJson(projectPath);
|
|
328
|
-
const
|
|
329
|
-
const
|
|
330
|
-
const transientDeps = findTransientDeps(configuredShareObjects, packageDirectory, preparedSkipList);
|
|
331
|
-
const transientShareObject = transientDeps.reduce((acc, curr) => ({
|
|
332
|
-
...acc,
|
|
333
|
-
[curr.packageName]: { path: curr.packagePath },
|
|
334
|
-
}), {});
|
|
335
|
-
const shareObjects = {
|
|
336
|
-
...configuredShareObjects,
|
|
337
|
-
...transientShareObject,
|
|
338
|
-
};
|
|
259
|
+
const preparedSkipList = prepareSkipList(skipList);
|
|
260
|
+
const shareObjects = { ...configuredShareObjects };
|
|
339
261
|
const result = {};
|
|
340
262
|
let includeSecondaries;
|
|
341
263
|
for (const key in shareObjects) {
|
|
@@ -358,9 +280,9 @@ function share(configuredShareObjects, projectPath = '', skipList = default_skip
|
|
|
358
280
|
}
|
|
359
281
|
result[key] = shareObject;
|
|
360
282
|
if (includeSecondaries) {
|
|
361
|
-
const libPackageJson =
|
|
283
|
+
const libPackageJson = findDepPackageJson(key, path.dirname(packagePath));
|
|
362
284
|
if (!libPackageJson) {
|
|
363
|
-
|
|
285
|
+
logger.error('Could not find folder containing dep ' + key);
|
|
364
286
|
continue;
|
|
365
287
|
}
|
|
366
288
|
const libPath = path.dirname(libPackageJson);
|
|
@@ -377,4 +299,3 @@ function addSecondaries(secondaries, result) {
|
|
|
377
299
|
result[key] = secondaries[key];
|
|
378
300
|
}
|
|
379
301
|
}
|
|
380
|
-
//# sourceMappingURL=share-utils.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { FederationConfig, NormalizedFederationConfig } from '
|
|
1
|
+
import type { FederationConfig, NormalizedFederationConfig } from '../domain/config/federation-config.contract.js';
|
|
2
2
|
export declare function withNativeFederation(config: FederationConfig): NormalizedFederationConfig;
|