@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.
Files changed (152) hide show
  1. package/package.json +33 -5
  2. package/src/config.d.ts +4 -1
  3. package/src/config.js +4 -6
  4. package/src/domain.d.ts +2 -0
  5. package/src/domain.js +2 -0
  6. package/src/index.d.ts +10 -1
  7. package/src/index.js +10 -5
  8. package/src/internal.d.ts +13 -0
  9. package/src/internal.js +10 -0
  10. package/src/lib/config/configuration-context.js +3 -9
  11. package/src/lib/config/default-skip-list.d.ts +4 -0
  12. package/src/lib/config/default-skip-list.js +31 -0
  13. package/src/lib/config/remove-unused-deps.d.ts +3 -0
  14. package/src/lib/config/remove-unused-deps.js +10 -0
  15. package/src/lib/config/share-utils.d.ts +6 -18
  16. package/src/lib/config/share-utils.js +49 -128
  17. package/src/lib/config/with-native-federation.d.ts +1 -1
  18. package/src/lib/config/with-native-federation.js +48 -75
  19. package/src/lib/core/build-adapter.d.ts +3 -28
  20. package/src/lib/core/build-adapter.js +8 -13
  21. package/src/lib/core/build-for-federation.d.ts +4 -10
  22. package/src/lib/core/build-for-federation.js +84 -79
  23. package/src/lib/core/bundle-exposed-and-mappings.d.ts +6 -10
  24. package/src/lib/core/bundle-exposed-and-mappings.js +78 -60
  25. package/src/lib/core/bundle-shared.d.ts +11 -6
  26. package/src/lib/core/bundle-shared.js +88 -72
  27. package/src/lib/core/default-external-list.js +1 -8
  28. package/src/lib/core/federation-builder.d.ts +11 -6
  29. package/src/lib/core/federation-builder.js +27 -21
  30. package/src/lib/core/federation-cache.d.ts +8 -0
  31. package/src/lib/core/federation-cache.js +11 -0
  32. package/src/lib/core/get-externals.d.ts +1 -1
  33. package/src/lib/core/get-externals.js +2 -6
  34. package/src/lib/core/normalize-options.d.ts +12 -0
  35. package/src/lib/core/normalize-options.js +57 -0
  36. package/src/lib/core/rebuild-for-federation.d.ts +4 -0
  37. package/src/lib/core/rebuild-for-federation.js +37 -0
  38. package/src/lib/core/write-federation-info.d.ts +2 -2
  39. package/src/lib/core/write-federation-info.js +3 -8
  40. package/src/lib/core/write-import-map.d.ts +6 -3
  41. package/src/lib/core/write-import-map.js +13 -9
  42. package/src/lib/domain/config/external-config.contract.d.ts +43 -0
  43. package/src/lib/domain/config/external-config.contract.js +1 -0
  44. package/src/lib/domain/config/federation-config.contract.d.ts +35 -0
  45. package/src/lib/domain/config/federation-config.contract.js +1 -0
  46. package/src/lib/domain/config/index.d.ts +3 -0
  47. package/src/lib/domain/config/index.js +1 -0
  48. package/src/lib/{core/default-skip-list.d.ts → domain/config/skip-list.contract.d.ts} +0 -3
  49. package/src/lib/domain/config/skip-list.contract.js +1 -0
  50. package/src/lib/domain/config/with-native-federation.contract.d.ts +2 -0
  51. package/src/lib/domain/config/with-native-federation.contract.js +1 -0
  52. package/src/lib/domain/core/build-adapter.contract.d.ts +40 -0
  53. package/src/lib/domain/core/build-adapter.contract.js +1 -0
  54. package/src/lib/domain/core/build-notification-options.contract.d.ts +9 -0
  55. package/src/lib/domain/core/build-notification-options.contract.js +6 -0
  56. package/src/lib/domain/core/chunk.d.ts +2 -0
  57. package/src/lib/domain/core/chunk.js +8 -0
  58. package/src/lib/domain/core/federation-cache.contract.d.ts +7 -0
  59. package/src/lib/domain/core/federation-cache.contract.js +1 -0
  60. package/src/lib/domain/core/federation-info.contract.d.ts +33 -0
  61. package/src/lib/domain/core/federation-info.contract.js +1 -0
  62. package/src/lib/domain/core/federation-options.contract.d.ts +21 -0
  63. package/src/lib/domain/core/federation-options.contract.js +1 -0
  64. package/src/lib/domain/core/index.d.ts +6 -0
  65. package/src/lib/domain/core/index.js +2 -0
  66. package/src/lib/domain/utils/index.d.ts +2 -0
  67. package/src/lib/domain/utils/index.js +1 -0
  68. package/src/lib/domain/utils/keyvaluepair.contract.d.ts +4 -0
  69. package/src/lib/domain/utils/keyvaluepair.contract.js +1 -0
  70. package/src/lib/domain/utils/mapped-path.contract.d.ts +1 -0
  71. package/src/lib/domain/utils/mapped-path.contract.js +5 -0
  72. package/src/lib/domain/utils/used-dependencies.contract.d.ts +5 -0
  73. package/src/lib/domain/utils/used-dependencies.contract.js +1 -0
  74. package/src/lib/utils/build-result-map.d.ts +3 -2
  75. package/src/lib/utils/build-result-map.js +14 -13
  76. package/src/lib/utils/{bundle-caching.d.ts → cache-persistence.d.ts} +6 -4
  77. package/src/lib/utils/cache-persistence.js +66 -0
  78. package/src/lib/utils/errors.js +1 -6
  79. package/src/lib/utils/get-external-imports.js +5 -10
  80. package/src/lib/utils/get-used-dependencies.d.ts +7 -0
  81. package/src/lib/utils/get-used-dependencies.js +123 -0
  82. package/src/lib/utils/hash-file.js +3 -8
  83. package/src/lib/utils/logger.js +10 -16
  84. package/src/lib/utils/mapped-paths.d.ts +7 -10
  85. package/src/lib/utils/mapped-paths.js +18 -37
  86. package/src/lib/utils/normalize.js +2 -7
  87. package/src/lib/utils/package-info.js +36 -47
  88. package/src/lib/utils/rebuild-queue.d.ts +14 -1
  89. package/src/lib/utils/rebuild-queue.js +36 -21
  90. package/src/lib/utils/resolve-glob.js +7 -12
  91. package/src/lib/utils/resolve-wildcard-keys.js +9 -15
  92. package/src/lib/utils/rewrite-chunk-imports.d.ts +0 -2
  93. package/src/lib/utils/rewrite-chunk-imports.js +13 -29
  94. package/LICENSE +0 -8
  95. package/README.md +0 -509
  96. package/build.d.ts +0 -1
  97. package/build.js +0 -5
  98. package/build.js.map +0 -1
  99. package/src/build.d.ts +0 -19
  100. package/src/build.js +0 -38
  101. package/src/build.js.map +0 -1
  102. package/src/config.js.map +0 -1
  103. package/src/index.js.map +0 -1
  104. package/src/lib/config/configuration-context.js.map +0 -1
  105. package/src/lib/config/federation-config.d.ts +0 -55
  106. package/src/lib/config/federation-config.js +0 -3
  107. package/src/lib/config/federation-config.js.map +0 -1
  108. package/src/lib/config/share-utils.js.map +0 -1
  109. package/src/lib/config/with-native-federation.js.map +0 -1
  110. package/src/lib/core/build-adapter.js.map +0 -1
  111. package/src/lib/core/build-for-federation.js.map +0 -1
  112. package/src/lib/core/bundle-exposed-and-mappings.js.map +0 -1
  113. package/src/lib/core/bundle-shared.js.map +0 -1
  114. package/src/lib/core/default-external-list.js.map +0 -1
  115. package/src/lib/core/default-server-deps-list.d.ts +0 -2
  116. package/src/lib/core/default-server-deps-list.js +0 -10
  117. package/src/lib/core/default-server-deps-list.js.map +0 -1
  118. package/src/lib/core/default-skip-list.js +0 -49
  119. package/src/lib/core/default-skip-list.js.map +0 -1
  120. package/src/lib/core/federation-builder.js.map +0 -1
  121. package/src/lib/core/federation-options.d.ts +0 -14
  122. package/src/lib/core/federation-options.js +0 -3
  123. package/src/lib/core/federation-options.js.map +0 -1
  124. package/src/lib/core/get-externals.js.map +0 -1
  125. package/src/lib/core/load-federation-config.d.ts +0 -3
  126. package/src/lib/core/load-federation-config.js +0 -24
  127. package/src/lib/core/load-federation-config.js.map +0 -1
  128. package/src/lib/core/remove-unused-deps.d.ts +0 -2
  129. package/src/lib/core/remove-unused-deps.js +0 -98
  130. package/src/lib/core/remove-unused-deps.js.map +0 -1
  131. package/src/lib/core/write-federation-info.js.map +0 -1
  132. package/src/lib/core/write-import-map.js.map +0 -1
  133. package/src/lib/utils/build-result-map.js.map +0 -1
  134. package/src/lib/utils/build-utils.d.ts +0 -2
  135. package/src/lib/utils/build-utils.js +0 -9
  136. package/src/lib/utils/build-utils.js.map +0 -1
  137. package/src/lib/utils/bundle-caching.js +0 -78
  138. package/src/lib/utils/bundle-caching.js.map +0 -1
  139. package/src/lib/utils/config-utils.d.ts +0 -2
  140. package/src/lib/utils/config-utils.js +0 -13
  141. package/src/lib/utils/config-utils.js.map +0 -1
  142. package/src/lib/utils/errors.js.map +0 -1
  143. package/src/lib/utils/get-external-imports.js.map +0 -1
  144. package/src/lib/utils/hash-file.js.map +0 -1
  145. package/src/lib/utils/logger.js.map +0 -1
  146. package/src/lib/utils/mapped-paths.js.map +0 -1
  147. package/src/lib/utils/normalize.js.map +0 -1
  148. package/src/lib/utils/package-info.js.map +0 -1
  149. package/src/lib/utils/rebuild-queue.js.map +0 -1
  150. package/src/lib/utils/resolve-glob.js.map +0 -1
  151. package/src/lib/utils/resolve-wildcard-keys.js.map +0 -1
  152. 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": "3.5.5",
4
- "type": "commonjs",
3
+ "version": "4.0.0-RC10",
4
+ "type": "module",
5
5
  "license": "MIT",
6
6
  "dependencies": {
7
- "json5": "^2.2.0",
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
- "@softarc/sheriff-core": "^0.19.2"
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 './build';
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
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- // For parity with our other libs
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';
@@ -0,0 +1,2 @@
1
+ export * from './lib/domain/config/index.js';
2
+ export * from './lib/domain/core/index.js';
package/src/domain.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './lib/domain/config/index.js';
2
+ export * from './lib/domain/core/index.js';
package/src/index.d.ts CHANGED
@@ -1 +1,10 @@
1
- export * from '@softarc/native-federation-runtime';
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
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("@softarc/native-federation-runtime"), exports);
5
- //# sourceMappingURL=index.js.map
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';
@@ -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 { SharedConfig } from './federation-config';
2
- import { SkipList } from '../core/default-skip-list';
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?: CustomSharedConfig, opts?: {
4
+ export declare function shareAll(config: ShareAllExternalsOptions, opts?: {
16
5
  skipList?: SkipList;
17
6
  projectPath?: string;
18
- overrides?: Config;
19
- }): Config | null;
7
+ overrides?: ShareExternalsOptions;
8
+ }): ShareExternalsOptions | null;
20
9
  export declare function setInferVersion(infer: boolean): void;
21
- export declare function share(configuredShareObjects: Config, projectPath?: string, skipList?: SkipList): Config;
22
- export {};
10
+ export declare function share(configuredShareObjects: ShareExternalsOptions, projectPath?: string, skipList?: SkipList): ShareExternalsOptions;
@@ -1,25 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_SECONDARIES_SKIP_LIST = void 0;
4
- exports.findRootTsConfigJson = findRootTsConfigJson;
5
- exports.shareAll = shareAll;
6
- exports.setInferVersion = setInferVersion;
7
- exports.share = share;
8
- const path = require("path");
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
- exports.DEFAULT_SECONDARIES_SKIP_LIST = [
18
- '@angular/router/upgrade',
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 = (0, package_info_1.getVersionMaps)(workspaceRoot, workspaceRoot);
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((f) => path.join(libPath, f))
76
- .filter((f) => fs.lstatSync(f).isDirectory() && !f.endsWith('node_modules'));
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
- .replace(/\\/g, '/')
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 ((0, default_skip_list_1.isInSkipList)(secondaryLibName, preparedSkipList)) {
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 = [...exports.DEFAULT_SECONDARIES_SKIP_LIST];
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((key) => key != '.' &&
136
- key != './package.json' &&
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((e) => e === secondaryName ||
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 ((0, default_skip_list_1.isInSkipList)(secondaryName, preparedSkipList)) {
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((e) => discoveredFiles.add(typeof e === 'string' ? e : e.value));
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 = (0, resolve_wildcard_keys_1.resolvePackageJsonExportsWildcard)(key, entry, libPath);
165
+ const expanded = resolvePackageJsonExportsWildcard(key, entry, libPath);
190
166
  items = expanded
191
- .map((e) => ({
167
+ .map(e => ({
192
168
  key: path.join(parent, e.key),
193
169
  value: path.join(libPath, e.value),
194
170
  }))
195
- .filter((i) => {
196
- if (excludes.skip.some((e) => e.endsWith('*') ? i.key.startsWith(e.slice(0, -1)) : e === i.key)) {
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 = {}, opts = {}) {
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 = (0, package_info_1.getVersionMaps)(projectPath, projectPath);
218
+ const versionMaps = getVersionMaps(projectPath, projectPath);
243
219
  const sharedExternals = {};
244
- const preparedSkipList = (0, default_skip_list_1.prepareSkipList)(opts.skipList ?? default_skip_list_1.DEFAULT_SKIP_LIST);
220
+ const skipList = opts.skipList ?? DEFAULT_SKIP_LIST;
245
221
  for (const versions of versionMaps) {
246
222
  for (const key in versions) {
247
- if ((0, default_skip_list_1.isInSkipList)(key, preparedSkipList)) {
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, opts.skipList ?? default_skip_list_1.DEFAULT_SKIP_LIST),
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 && (0, configuration_context_1.getConfigContext)().packageJson) {
272
- projectPath = path.dirname((0, configuration_context_1.getConfigContext)().packageJson || '');
242
+ if (!projectPath && getConfigContext().packageJson) {
243
+ projectPath = path.dirname(getConfigContext().packageJson || '');
273
244
  }
274
- if (!projectPath && (0, configuration_context_1.getConfigContext)().workspaceRoot) {
275
- projectPath = (0, configuration_context_1.getConfigContext)().workspaceRoot || '';
245
+ if (!projectPath && getConfigContext().workspaceRoot) {
246
+ projectPath = getConfigContext().workspaceRoot || '';
276
247
  }
277
248
  if (!projectPath) {
278
- projectPath = (0, process_1.cwd)();
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 findTransientDeps(configuredShareObjects, projectRoot, preparedSkipList) {
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 packageDirectory = path.dirname(packagePath);
329
- const preparedSkipList = (0, default_skip_list_1.prepareSkipList)(skipList);
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 = (0, package_info_1.findDepPackageJson)(key, path.dirname(packagePath));
283
+ const libPackageJson = findDepPackageJson(key, path.dirname(packagePath));
362
284
  if (!libPackageJson) {
363
- logger_1.logger.error('Could not find folder containing dep ' + key);
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 './federation-config';
1
+ import type { FederationConfig, NormalizedFederationConfig } from '../domain/config/federation-config.contract.js';
2
2
  export declare function withNativeFederation(config: FederationConfig): NormalizedFederationConfig;