zephyr-repack-plugin 0.0.0-canary-20241118144314

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 (104) hide show
  1. package/LICENSE +39 -0
  2. package/README.md +3 -0
  3. package/dist/README.md +3 -0
  4. package/dist/delegate-module/delegate-module-template.d.ts +1 -0
  5. package/dist/delegate-module/delegate-module-template.js +74 -0
  6. package/dist/delegate-module/delegate-module-template.js.map +1 -0
  7. package/dist/delegate-module/replace-remote-with-delegate.d.ts +2 -0
  8. package/dist/delegate-module/replace-remote-with-delegate.js +29 -0
  9. package/dist/delegate-module/replace-remote-with-delegate.js.map +1 -0
  10. package/dist/delegate-module/zephyr-delegate.d.ts +7 -0
  11. package/dist/delegate-module/zephyr-delegate.js +103 -0
  12. package/dist/delegate-module/zephyr-delegate.js.map +1 -0
  13. package/dist/index.d.ts +1 -0
  14. package/dist/index.js +5 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/lib/build-stats/get-build-stats.d.ts +6 -0
  17. package/dist/lib/build-stats/get-build-stats.js +55 -0
  18. package/dist/lib/build-stats/get-build-stats.js.map +1 -0
  19. package/dist/lib/dependency-resolution/replace-remote-with-delegates.d.ts +3 -0
  20. package/dist/lib/dependency-resolution/replace-remote-with-delegates.js +21 -0
  21. package/dist/lib/dependency-resolution/replace-remote-with-delegates.js.map +1 -0
  22. package/dist/lib/federation-graph/compute-dependencies.d.ts +10 -0
  23. package/dist/lib/federation-graph/compute-dependencies.js +69 -0
  24. package/dist/lib/federation-graph/compute-dependencies.js.map +1 -0
  25. package/dist/lib/federation-graph/compute-shared-module.d.ts +1 -0
  26. package/dist/lib/federation-graph/compute-shared-module.js +3 -0
  27. package/dist/lib/federation-graph/compute-shared-module.js.map +1 -0
  28. package/dist/lib/federation-graph/compute-version.d.ts +4 -0
  29. package/dist/lib/federation-graph/compute-version.js +22 -0
  30. package/dist/lib/federation-graph/compute-version.js.map +1 -0
  31. package/dist/lib/federation-graph/federation-plugin.d.ts +49 -0
  32. package/dist/lib/federation-graph/federation-plugin.js +223 -0
  33. package/dist/lib/federation-graph/federation-plugin.js.map +1 -0
  34. package/dist/lib/federation-graph/runtime-requirement.d.ts +4 -0
  35. package/dist/lib/federation-graph/runtime-requirement.js +28 -0
  36. package/dist/lib/federation-graph/runtime-requirement.js.map +1 -0
  37. package/dist/lib/federation-graph/utils/convert-dependencies.d.ts +12 -0
  38. package/dist/lib/federation-graph/utils/convert-dependencies.js +31 -0
  39. package/dist/lib/federation-graph/utils/convert-dependencies.js.map +1 -0
  40. package/dist/lib/federation-graph/utils/convert-to-graph.d.ts +3 -0
  41. package/dist/lib/federation-graph/utils/convert-to-graph.js +53 -0
  42. package/dist/lib/federation-graph/utils/convert-to-graph.js.map +1 -0
  43. package/dist/lib/federation-graph/utils/converted-dependencies.d.ts +12 -0
  44. package/dist/lib/federation-graph/utils/converted-dependencies.js +31 -0
  45. package/dist/lib/federation-graph/utils/converted-dependencies.js.map +1 -0
  46. package/dist/lib/federation-graph/utils/get-licenses.d.ts +2 -0
  47. package/dist/lib/federation-graph/utils/get-licenses.js +23 -0
  48. package/dist/lib/federation-graph/utils/get-licenses.js.map +1 -0
  49. package/dist/lib/federation-graph/utils/module-part-one.d.ts +31 -0
  50. package/dist/lib/federation-graph/utils/module-part-one.js +133 -0
  51. package/dist/lib/federation-graph/utils/module-part-one.js.map +1 -0
  52. package/dist/lib/federation-graph/utils/module-part-two.d.ts +50 -0
  53. package/dist/lib/federation-graph/utils/module-part-two.js +134 -0
  54. package/dist/lib/federation-graph/utils/module-part-two.js.map +1 -0
  55. package/dist/lib/federation-graph/utils/process-function-remotes.d.ts +22 -0
  56. package/dist/lib/federation-graph/utils/process-function-remotes.js +35 -0
  57. package/dist/lib/federation-graph/utils/process-function-remotes.js.map +1 -0
  58. package/dist/lib/federation-graph/validate-params.d.ts +0 -0
  59. package/dist/lib/federation-graph/validate-params.js +2 -0
  60. package/dist/lib/federation-graph/validate-params.js.map +1 -0
  61. package/dist/lib/set-up-build-id.d.ts +3 -0
  62. package/dist/lib/set-up-build-id.js +43 -0
  63. package/dist/lib/set-up-build-id.js.map +1 -0
  64. package/dist/lib/set-up-build-stats-logging.d.ts +5 -0
  65. package/dist/lib/set-up-build-stats-logging.js +26 -0
  66. package/dist/lib/set-up-build-stats-logging.js.map +1 -0
  67. package/dist/lib/set-up-deploy.d.ts +3 -0
  68. package/dist/lib/set-up-deploy.js +35 -0
  69. package/dist/lib/set-up-deploy.js.map +1 -0
  70. package/dist/lib/utils/federation-plugin-get-package-json.d.ts +1 -0
  71. package/dist/lib/utils/federation-plugin-get-package-json.js +23 -0
  72. package/dist/lib/utils/federation-plugin-get-package-json.js.map +1 -0
  73. package/dist/lib/utils/get-mf-config.d.ts +6 -0
  74. package/dist/lib/utils/get-mf-config.js +26 -0
  75. package/dist/lib/utils/get-mf-config.js.map +1 -0
  76. package/dist/lib/utils/get-platform.d.ts +5 -0
  77. package/dist/lib/utils/get-platform.js +9 -0
  78. package/dist/lib/utils/get-platform.js.map +1 -0
  79. package/dist/lib/utils/plugin-search.d.ts +5 -0
  80. package/dist/lib/utils/plugin-search.js +17 -0
  81. package/dist/lib/utils/plugin-search.js.map +1 -0
  82. package/dist/lib/with-zephyr.d.ts +3 -0
  83. package/dist/lib/with-zephyr.js +50 -0
  84. package/dist/lib/with-zephyr.js.map +1 -0
  85. package/dist/lib/ze-agent/index.d.ts +9 -0
  86. package/dist/lib/ze-agent/index.js +53 -0
  87. package/dist/lib/ze-agent/index.js.map +1 -0
  88. package/dist/lib/ze-agent/lifecycle-events.d.ts +2 -0
  89. package/dist/lib/ze-agent/lifecycle-events.js +20 -0
  90. package/dist/lib/ze-agent/lifecycle-events.js.map +1 -0
  91. package/dist/lib/ze-repack-plugin.d.ts +7 -0
  92. package/dist/lib/ze-repack-plugin.js +30 -0
  93. package/dist/lib/ze-repack-plugin.js.map +1 -0
  94. package/dist/package.json +26 -0
  95. package/dist/type/convert-graph-params.d.ts +48 -0
  96. package/dist/type/convert-graph-params.js +3 -0
  97. package/dist/type/convert-graph-params.js.map +1 -0
  98. package/dist/type/federation-plugin-options.d.ts +62 -0
  99. package/dist/type/federation-plugin-options.js +3 -0
  100. package/dist/type/federation-plugin-options.js.map +1 -0
  101. package/dist/type/zephyr-internal-types.d.ts +23 -0
  102. package/dist/type/zephyr-internal-types.js +3 -0
  103. package/dist/type/zephyr-internal-types.js.map +1 -0
  104. package/package.json +26 -0
package/LICENSE ADDED
@@ -0,0 +1,39 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ ...
13
+
14
+ END OF TERMS AND CONDITIONS
15
+
16
+ APPENDIX: How to apply the Apache License to your work.
17
+
18
+ To apply the Apache License to your work, attach the following
19
+ boilerplate notice, with the fields enclosed by brackets "[]"
20
+ replaced with your own identifying information. (Don't include
21
+ the brackets!) The text should be enclosed in the appropriate
22
+ comment syntax for the file format. We also recommend that a
23
+ file or class name and description of purpose be included on the
24
+ same line as the copyright notice for each file. The "copyright"
25
+ word should be left as is (without quotes).
26
+
27
+ Copyright [2023] [Zephyr Cloud]
28
+
29
+ Licensed under the Apache License, Version 2.0 (the "License");
30
+ you may not use this file except in compliance with the License.
31
+ You may obtain a copy of the License at
32
+
33
+ http://www.apache.org/licenses/LICENSE-2.0
34
+
35
+ Unless required by applicable law or agreed to in writing, software
36
+ distributed under the License is distributed on an "AS IS" BASIS,
37
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
38
+ See the License for the specific language governing permissions and
39
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Zephyr: We made application federation easy
2
+
3
+ Readme too be released
package/dist/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Zephyr: We made application federation easy
2
+
3
+ Readme too be released
@@ -0,0 +1 @@
1
+ export declare function delegate_module_template(): unknown;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.delegate_module_template = void 0;
4
+ function delegate_module_template() {
5
+ return new Promise((resolve, reject) => {
6
+ const remote_entry_url = '__REMOTE_ENTRY_URL__';
7
+ const library_type = '__LIBRARY_TYPE__';
8
+ let edgeUrl = remote_entry_url;
9
+ let remote_name = '__REMOTE_NAME__';
10
+ if (edgeUrl.includes('@')) {
11
+ [remote_name, edgeUrl] = edgeUrl.split('@');
12
+ }
13
+ const resolve_entry = [
14
+ fetch(edgeUrl, {
15
+ method: 'HEAD',
16
+ headers: {
17
+ 'Cache-Control': 'no-cache, no-store, must-revalidate',
18
+ },
19
+ })
20
+ .then(() => edgeUrl)
21
+ .catch(() => false),
22
+ ];
23
+ Promise.race(resolve_entry)
24
+ .then((remoteUrl) => {
25
+ if (typeof remoteUrl !== 'string')
26
+ return;
27
+ const _win = globalThis;
28
+ const ScriptManager = __webpack_require__.repack.shared.scriptManager;
29
+ ScriptManager.addResolver(
30
+ // @ts-expect-error TODO fix await
31
+ (scriptId, caller, referenceUrl) => {
32
+ if (scriptId === remote_name) {
33
+ return { url: remoteUrl };
34
+ }
35
+ if (referenceUrl && caller === remote_name) {
36
+ const publicPath = remoteUrl.split('/').slice(0, -1).join('/');
37
+ const bundlePath = scriptId + referenceUrl.split(scriptId)[1];
38
+ return { url: publicPath + '/' + bundlePath };
39
+ }
40
+ return;
41
+ }, { key: remote_name });
42
+ if (typeof _win[remote_name] !== 'undefined') {
43
+ return resolve(_win[remote_name]);
44
+ }
45
+ if (typeof __webpack_require__ !== 'undefined' &&
46
+ typeof __webpack_require__.l === 'function' &&
47
+ // @ts-expect-error - library_type is inherited enum type instead of string
48
+ library_type !== 'self') {
49
+ // @ts-expect-error temp
50
+ __webpack_require__.l(remote_entry_url, () => {
51
+ resolve(_win[remote_name]);
52
+ }, remote_name
53
+ // remote_name
54
+ );
55
+ return;
56
+ }
57
+ return new Function(`return import("${remoteUrl}")`)()
58
+ .then((mod) => {
59
+ if (typeof _win[remote_name] !== 'undefined') {
60
+ return resolve(_win[remote_name]);
61
+ }
62
+ return resolve(mod);
63
+ })
64
+ .catch((err) => {
65
+ reject(err);
66
+ });
67
+ })
68
+ .catch((err) => {
69
+ console.error(`Zephyr: error loading remote entry ${remote_entry_url}`, err);
70
+ });
71
+ });
72
+ }
73
+ exports.delegate_module_template = delegate_module_template;
74
+ //# sourceMappingURL=delegate-module-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate-module-template.js","sourceRoot":"","sources":["../../src/delegate-module/delegate-module-template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ResolvedDependency } from '../type/zephyr-internal-types';
2
+ export declare function replace_remote_with_delegate(deps: ResolvedDependency): string;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.replace_remote_with_delegate = void 0;
4
+ const zephyr_edge_contract_1 = require("zephyr-edge-contract");
5
+ const delegate_module_template_1 = require("./delegate-module-template");
6
+ function replace_remote_with_delegate(deps) {
7
+ // prepare delegate function string template
8
+ const fnReplace = delegate_module_template_1.delegate_module_template.toString();
9
+ const strStart = new RegExp(/^function[\W\S]+return new Promise/);
10
+ const strNewStart = `promise new Promise`;
11
+ const strEnd = new RegExp(/;[^)}]+}$/);
12
+ const promiseNewPromise = fnReplace.replace(strStart, strNewStart).replace(strEnd, '');
13
+ const { application_uid, remote_entry_url, default_url, remote_name, library_type } = deps;
14
+ (0, zephyr_edge_contract_1.ze_log)('replace_remote_with_delegate: ', {
15
+ application_uid: application_uid,
16
+ remote_entry_url: remote_entry_url,
17
+ remote_name: remote_name,
18
+ default_url: default_url,
19
+ library_type: library_type,
20
+ });
21
+ return promiseNewPromise
22
+ .replace('__APPLICATION_UID__', application_uid)
23
+ .replace('__REMOTE_ENTRY_URL__', remote_entry_url)
24
+ .replace('__REMOTE_NAME__', remote_name)
25
+ .replace('__DEFAULT_URL__', default_url)
26
+ .replace('__LIBRARY_TYPE__', library_type);
27
+ }
28
+ exports.replace_remote_with_delegate = replace_remote_with_delegate;
29
+ //# sourceMappingURL=replace-remote-with-delegate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-remote-with-delegate.js","sourceRoot":"","sources":["../../src/delegate-module/replace-remote-with-delegate.ts"],"names":[],"mappings":";;;AAAA,+DAA8C;AAE9C,yEAAsE;AAEtE,SAAgB,4BAA4B,CAAC,IAAwB;IACnE,4CAA4C;IAC5C,MAAM,SAAS,GAAG,mDAAwB,CAAC,QAAQ,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,qBAAqB,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEvF,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE3F,IAAA,6BAAM,EAAC,gCAAgC,EAAE;QACvC,eAAe,EAAE,eAAe;QAChC,gBAAgB,EAAE,gBAAgB;QAClC,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,YAAY;KAC3B,CAAC,CAAC;IAEH,OAAO,iBAAiB;SACrB,OAAO,CAAC,qBAAqB,EAAE,eAAe,CAAC;SAC/C,OAAO,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;SACjD,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC;SACvC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC;SACvC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAxBD,oEAwBC"}
@@ -0,0 +1,7 @@
1
+ import { DelegateConfig, ResolvedDependency } from '../type/zephyr-internal-types';
2
+ export declare function resolve_remote_dependency({ application_uid, version, platform, }: {
3
+ application_uid: string;
4
+ version: string;
5
+ platform: DelegateConfig['target'];
6
+ }): Promise<ResolvedDependency>;
7
+ export declare function replace_remote_in_mf_config(mfConfig: any, config: DelegateConfig): Promise<void>;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.replace_remote_in_mf_config = exports.resolve_remote_dependency = void 0;
4
+ const zephyr_edge_contract_1 = require("zephyr-edge-contract");
5
+ const zephyr_edge_contract_2 = require("zephyr-edge-contract");
6
+ const replace_remote_with_delegate_1 = require("./replace-remote-with-delegate");
7
+ const zephyr_edge_contract_3 = require("zephyr-edge-contract");
8
+ async function resolve_remote_dependency({ application_uid, version, platform, }) {
9
+ (0, zephyr_edge_contract_3.ze_log)('resolve_remote_dependency.version:', version);
10
+ const resolveDependency = new URL(`${zephyr_edge_contract_2.ze_api_gateway.resolve}/${encodeURIComponent(application_uid)}/${encodeURIComponent(version)}`, (0, zephyr_edge_contract_2.ZE_API_ENDPOINT)());
11
+ const searchParams = new URLSearchParams();
12
+ platform && searchParams.set('build_target', platform);
13
+ resolveDependency.search = searchParams.toString();
14
+ (0, zephyr_edge_contract_3.ze_log)('trying to resolve dependencies via URL: ', resolveDependency);
15
+ const [appName, projectName, orgName] = application_uid.split('.');
16
+ try {
17
+ const token = await (0, zephyr_edge_contract_2.getToken)();
18
+ const res = await fetch(resolveDependency, {
19
+ method: 'GET',
20
+ headers: {
21
+ 'Content-Type': 'application/json',
22
+ Authorization: 'Bearer ' + token,
23
+ Accept: 'application/json',
24
+ },
25
+ });
26
+ if (!res.ok) {
27
+ (0, zephyr_edge_contract_3.ze_log)({ 'error in resolve_remote_dependency': await res.json().catch(() => res.text()) });
28
+ throw new zephyr_edge_contract_2.ZephyrError(zephyr_edge_contract_2.ZeErrors.ERR_RESOLVE_REMOTES, {
29
+ appUid: application_uid,
30
+ appName,
31
+ projectName,
32
+ orgName,
33
+ data: {
34
+ url: resolveDependency.toString(),
35
+ version,
36
+ error: await res.json().catch(() => res.text()),
37
+ },
38
+ });
39
+ }
40
+ const response = (await res.json());
41
+ if (response.value) {
42
+ (0, zephyr_edge_contract_3.ze_log)('Response from resolve dependency: ', response.value);
43
+ return response.value;
44
+ }
45
+ throw new zephyr_edge_contract_2.ZephyrError(zephyr_edge_contract_2.ZeErrors.ERR_RESOLVE_REMOTES, {
46
+ appUid: application_uid,
47
+ appName,
48
+ projectName,
49
+ orgName,
50
+ data: { version, response },
51
+ });
52
+ }
53
+ catch (cause) {
54
+ (0, zephyr_edge_contract_3.ze_log)({ 'error in resolve_remote_dependency': cause });
55
+ throw new zephyr_edge_contract_2.ZephyrError(zephyr_edge_contract_2.ZeErrors.ERR_CANNOT_RESOLVE_APP_NAME_WITH_VERSION, {
56
+ data: { version },
57
+ cause,
58
+ });
59
+ }
60
+ }
61
+ exports.resolve_remote_dependency = resolve_remote_dependency;
62
+ async function replace_remote_in_mf_config(mfConfig, config) {
63
+ (0, zephyr_edge_contract_3.ze_log)('replace_remote_in_mf_config.mfPlugin', mfConfig);
64
+ // In Repack.plugins.ModuleFederationPlugin, the config is exposed under `config`
65
+ if (!mfConfig.remotes) {
66
+ return;
67
+ }
68
+ // Replace remotes with delegate function
69
+ await Promise.all(Object.keys(mfConfig.remotes).map(async (key) => {
70
+ const [app_name, project_name, org_name] = key.split('.', 3);
71
+ // Key might be only the app name
72
+ // Does remote key contain localhost?
73
+ // step 1:if the remote is a local path, we resolve it
74
+ if (mfConfig.remotes[key].includes('localhost')) {
75
+ const application_uid = (0, zephyr_edge_contract_1.createApplicationUID)({
76
+ org: org_name ?? config.org,
77
+ project: project_name ?? config.project,
78
+ name: app_name,
79
+ });
80
+ const [ok, error, resolvedDependency] = await zephyr_edge_contract_1.ZeUtils.PromiseTuple(resolve_remote_dependency({
81
+ application_uid: application_uid,
82
+ version: mfConfig.remotes[key],
83
+ platform: config.target,
84
+ }));
85
+ // If couldn't resolve remote dependency, skip replacing it
86
+ if (!ok || error) {
87
+ return;
88
+ }
89
+ resolvedDependency.library_type = mfConfig?.library?.type ?? 'self';
90
+ const [v_app] = mfConfig.remotes[key]?.split('@') ?? [];
91
+ if (v_app) {
92
+ resolvedDependency.remote_entry_url = [v_app, resolvedDependency.remote_entry_url].join('@');
93
+ (0, zephyr_edge_contract_3.ze_log)({ ' resolvedDependency.remote_entry_url ': resolvedDependency.remote_entry_url });
94
+ }
95
+ resolvedDependency.remote_name = key;
96
+ mfConfig.remotes[key] = await (0, replace_remote_with_delegate_1.replace_remote_with_delegate)(resolvedDependency);
97
+ }
98
+ // step 2: If the remote is not a local path (user wants a custom, environment-specific remote), we can skip replacing it
99
+ return;
100
+ }));
101
+ }
102
+ exports.replace_remote_in_mf_config = replace_remote_in_mf_config;
103
+ //# sourceMappingURL=zephyr-delegate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zephyr-delegate.js","sourceRoot":"","sources":["../../src/delegate-module/zephyr-delegate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './lib/with-zephyr';
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib/with-zephyr"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC"}
@@ -0,0 +1,6 @@
1
+ import type { ZephyrAgentProps } from '../../type/zephyr-internal-types';
2
+ import { ZephyrBuildStats } from 'zephyr-edge-contract';
3
+ export declare function getBuildStats({ stats, stats_json, pluginOptions, EDGE_URL, PLATFORM, }: ZephyrAgentProps & {
4
+ EDGE_URL: string;
5
+ PLATFORM?: string;
6
+ }): ZephyrBuildStats;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBuildStats = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const isCI = tslib_1.__importStar(require("is-ci"));
6
+ const zephyr_edge_contract_1 = require("zephyr-edge-contract");
7
+ const federation_plugin_1 = require("../federation-graph/federation-plugin");
8
+ function getBuildStats({ stats, stats_json, pluginOptions, EDGE_URL, PLATFORM, }) {
9
+ (0, zephyr_edge_contract_1.ze_log)('Started getting build stats...');
10
+ const dashboardPlugin = new federation_plugin_1.FederationDashboardPlugin({
11
+ app: pluginOptions.app,
12
+ git: pluginOptions.git,
13
+ context: {
14
+ isCI,
15
+ },
16
+ target: pluginOptions.target,
17
+ });
18
+ (0, zephyr_edge_contract_1.ze_log)('process webpack graph...');
19
+ const convertedGraph = dashboardPlugin.processRspackGraph({
20
+ stats,
21
+ stats_json,
22
+ pluginOptions,
23
+ });
24
+ if (!convertedGraph) {
25
+ throw new zephyr_edge_contract_1.ZephyrError(zephyr_edge_contract_1.ZeErrors.ERR_CONVERT_GRAPH_TO_DASHBOARD);
26
+ }
27
+ const version = (0, zephyr_edge_contract_1.createSnapshotId)(pluginOptions);
28
+ const remote_name = pluginOptions.mfConfig?.filename ?? 'mf-manifest.json';
29
+ const { app, git } = pluginOptions;
30
+ const data_overrides = {
31
+ id: pluginOptions.application_uid,
32
+ name: pluginOptions.mfConfig?.name,
33
+ edge: { url: EDGE_URL },
34
+ // domain: DOMAIN,
35
+ platform: PLATFORM,
36
+ // type: TYPE,
37
+ app: Object.assign({}, app, { buildId: pluginOptions.zeConfig.buildId }),
38
+ version,
39
+ git,
40
+ project: pluginOptions.app.project,
41
+ tags: [],
42
+ remote: remote_name,
43
+ remotes: Object.keys(pluginOptions.mfConfig?.remotes || {}),
44
+ context: {
45
+ isCI: pluginOptions.isCI,
46
+ },
47
+ build_target: pluginOptions.target,
48
+ };
49
+ // todo: extend data
50
+ const res = Object.assign({}, convertedGraph, data_overrides);
51
+ (0, zephyr_edge_contract_1.ze_log)('get build stats done.', res);
52
+ return res;
53
+ }
54
+ exports.getBuildStats = getBuildStats;
55
+ //# sourceMappingURL=get-build-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-build-stats.js","sourceRoot":"","sources":["../../../src/lib/build-stats/get-build-stats.ts"],"names":[],"mappings":";;;;AAAA,oDAA8B;AAC9B,+DAA4G;AAE5G,6EAAkF;AAGlF,SAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,UAAU,EACV,aAAa,EACb,QAAQ,EACR,QAAQ,GAKT;IACC,IAAA,6BAAM,EAAC,gCAAgC,CAAC,CAAC;IAEzC,MAAM,eAAe,GAAG,IAAI,6CAAyB,CAAC;QACpD,GAAG,EAAE,aAAa,CAAC,GAAG;QACtB,GAAG,EAAE,aAAa,CAAC,GAAG;QACtB,OAAO,EAAE;YACP,IAAI;SACL;QACD,MAAM,EAAE,aAAa,CAAC,MAAM;KAC7B,CAAC,CAAC;IAEH,IAAA,6BAAM,EAAC,0BAA0B,CAAC,CAAC;IACnC,MAAM,cAAc,GAAG,eAAe,CAAC,kBAAkB,CAAC;QACxD,KAAK;QACL,UAAU;QACV,aAAa;KACd,CAAC,CAAC;IAEH,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,kCAAW,CAAC,+BAAQ,CAAC,8BAA8B,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,uCAAgB,EAAC,aAAa,CAAC,CAAC;IAEhD,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,IAAI,kBAAkB,CAAC;IAE3E,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC;IACnC,MAAM,cAAc,GAAG;QACrB,EAAE,EAAE,aAAa,CAAC,eAAe;QACjC,IAAI,EAAE,aAAa,CAAC,QAAQ,EAAE,IAAI;QAClC,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE;QACvB,kBAAkB;QAClB,QAAQ,EAAE,QAAQ;QAClB,cAAc;QACd,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxE,OAAO;QACP,GAAG;QACH,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO;QAClC,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;QAC3D,OAAO,EAAE;YACP,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB;QACD,YAAY,EAAE,aAAa,CAAC,MAAM;KACnC,CAAC;IAEF,oBAAoB;IACpB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,cAAc,CAAqB,CAAC;IAClF,IAAA,6BAAM,EAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IACrC,OAAO,GAAG,CAAC;AACb,CAAC;AA9DD,sCA8DC"}
@@ -0,0 +1,3 @@
1
+ import { Configuration } from '@rspack/core';
2
+ import { DelegateConfig } from '../../type/zephyr-internal-types';
3
+ export declare function replace_remote_with_delegates(_config: Configuration, { org, project, target }: DelegateConfig): Promise<void>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.replace_remote_with_delegates = void 0;
4
+ const zephyr_delegate_1 = require("../../delegate-module/zephyr-delegate");
5
+ const plugin_search_1 = require("../utils/plugin-search");
6
+ const zephyr_edge_contract_1 = require("zephyr-edge-contract");
7
+ async function replace_remote_with_delegates(_config, { org, project, target }) {
8
+ (0, zephyr_edge_contract_1.ze_log)('start replacing remote with delegate...');
9
+ const dependency_resolution_tasks = _config.plugins?.filter(plugin_search_1.is_module_federation_plugin)?.map((mfConfig) => {
10
+ if (mfConfig) {
11
+ const mf_config = JSON.parse(JSON.stringify(mfConfig)).config;
12
+ (0, zephyr_edge_contract_1.ze_log)('replace_remote_with_delegates.mfConfig', mf_config);
13
+ (0, zephyr_delegate_1.replace_remote_in_mf_config)(mf_config, { org, project, target });
14
+ }
15
+ });
16
+ if (dependency_resolution_tasks) {
17
+ await Promise.all(dependency_resolution_tasks);
18
+ }
19
+ }
20
+ exports.replace_remote_with_delegates = replace_remote_with_delegates;
21
+ //# sourceMappingURL=replace-remote-with-delegates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-remote-with-delegates.js","sourceRoot":"","sources":["../../../src/lib/dependency-resolution/replace-remote-with-delegates.ts"],"names":[],"mappings":";;;AACA,2EAAoF;AACpF,0DAAqE;AAErE,+DAA8C;AAEvC,KAAK,UAAU,6BAA6B,CAAC,OAAsB,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAkB;IAClH,IAAA,6BAAM,EAAC,yCAAyC,CAAC,CAAC;IAClD,MAAM,2BAA2B,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,2CAA2B,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACzG,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9D,IAAA,6BAAM,EAAC,wCAAwC,EAAE,SAAS,CAAC,CAAC;YAC5D,IAAA,6CAA2B,EAAC,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,2BAA2B,EAAE,CAAC;QAChC,MAAM,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAbD,sEAaC"}
@@ -0,0 +1,10 @@
1
+ import { TopLevelPackage } from '../../type/federation-plugin-options';
2
+ interface ComputeDependenciesFederationOptions {
3
+ exclude: string[];
4
+ ignoreVersion?: string[] | boolean;
5
+ packageJson: Record<string, any>;
6
+ ignorePatchVersion?: boolean;
7
+ shareFrom?: (keyof TopLevelPackage)[];
8
+ }
9
+ declare const ComputeSharedDependenciesFederation: ({ exclude, ignoreVersion, packageJson, ignorePatchVersion, shareFrom, }: ComputeDependenciesFederationOptions) => Record<string, string>;
10
+ export default ComputeSharedDependenciesFederation;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const find_package_json_1 = tslib_1.__importDefault(require("find-package-json"));
5
+ const path = tslib_1.__importStar(require("path"));
6
+ const fs = tslib_1.__importStar(require("fs"));
7
+ const zephyr_edge_contract_1 = require("zephyr-edge-contract");
8
+ const ComputeSharedDependenciesFederation = ({ exclude, ignoreVersion, packageJson, ignorePatchVersion = true, shareFrom = ['dependencies'], }) => {
9
+ if (!packageJson) {
10
+ throw new Error('ComputeDependencyFederation: You must pass the package.json file of your app');
11
+ }
12
+ if (!Array.isArray(shareFrom)) {
13
+ throw new Error('ComputeDependencyFederation: shareFrom must be an array');
14
+ }
15
+ // Combine dependencies from specified package.json keys
16
+ const combinedDependencies = shareFrom.reduce((acc, jsonKey) => {
17
+ Object.assign(acc, packageJson[jsonKey]);
18
+ return acc;
19
+ }, {});
20
+ // Filter dependencies based on exclusion list
21
+ const shareableDependencies = Object.keys(combinedDependencies).filter((dependency) => !exclude.some((dep) => dependency.includes(dep)));
22
+ return shareableDependencies.reduce((shared, pkg) => {
23
+ let packageVersion;
24
+ try {
25
+ const packagePath = path.dirname(require.resolve(pkg));
26
+ const packageJsonPath = path.join(packagePath, 'package.json');
27
+ const packageExists = fs.existsSync(packageJsonPath);
28
+ if (packageExists) {
29
+ try {
30
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
31
+ packageVersion = require(packageJsonPath).version.split('.');
32
+ }
33
+ catch (e) {
34
+ throw new zephyr_edge_contract_1.ZephyrError(zephyr_edge_contract_1.ZeErrors.ERR_SHARED_PACKAGE, {
35
+ cause: "We couldn't find Federation shared package's version - are you sure this is a valid package installed from npm registry?",
36
+ });
37
+ }
38
+ }
39
+ else {
40
+ const f = (0, find_package_json_1.default)(packagePath);
41
+ const jsonValue = f.next().value;
42
+ const filePath = f.next().filename;
43
+ if (!filePath || typeof filePath !== 'string') {
44
+ (0, zephyr_edge_contract_1.ze_log)("Package.json path not found - we couldn't find package.");
45
+ }
46
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
47
+ packageVersion = require(filePath).version.split('.');
48
+ }
49
+ if (ignorePatchVersion && packageVersion) {
50
+ packageVersion.pop();
51
+ }
52
+ const versionedPkgName = packageVersion ? `${pkg}-${packageVersion.join('.')}` : pkg;
53
+ if (ignoreVersion && Array.isArray(ignoreVersion) && ignoreVersion.includes(pkg)) {
54
+ shared[pkg] = pkg;
55
+ }
56
+ else {
57
+ shared[versionedPkgName] = pkg;
58
+ }
59
+ }
60
+ catch (e) {
61
+ // Skip package if there's an error
62
+ (0, zephyr_edge_contract_1.ze_log)(`Error during finding Federation required shared package: `, e, 'Skipping package to next...');
63
+ return shared;
64
+ }
65
+ return shared;
66
+ }, {});
67
+ };
68
+ exports.default = ComputeSharedDependenciesFederation;
69
+ //# sourceMappingURL=compute-dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-dependencies.js","sourceRoot":"","sources":["../../../src/lib/federation-graph/compute-dependencies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=compute-shared-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-shared-module.js","sourceRoot":"","sources":["../../../src/lib/federation-graph/compute-shared-module.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export declare let gitSha: string | undefined;
2
+ export declare const computeVersionStrategy: (stats: {
3
+ hash?: string;
4
+ }, arg: string | undefined) => string | undefined;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeVersionStrategy = exports.gitSha = void 0;
4
+ const node_child_process_1 = require("node:child_process");
5
+ try {
6
+ exports.gitSha = (0, node_child_process_1.execSync)('git rev-parse HEAD').toString().trim();
7
+ }
8
+ catch (e) {
9
+ console.error(e);
10
+ }
11
+ const computeVersionStrategy = (stats, arg) => {
12
+ switch (arg) {
13
+ case 'gitSha':
14
+ return exports.gitSha;
15
+ case 'buildHash':
16
+ return stats.hash;
17
+ default:
18
+ return arg ? arg.toString() : exports.gitSha;
19
+ }
20
+ };
21
+ exports.computeVersionStrategy = computeVersionStrategy;
22
+ //# sourceMappingURL=compute-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-version.js","sourceRoot":"","sources":["../../../src/lib/federation-graph/compute-version.ts"],"names":[],"mappings":";;;AAAA,2DAA8C;AAG9C,IAAI,CAAC;IACH,cAAM,GAAG,IAAA,6BAAQ,EAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5D,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAEM,MAAM,sBAAsB,GAAG,CAAC,KAAwB,EAAE,GAAuB,EAAsB,EAAE;IAC9G,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,cAAM,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB;YACE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAM,CAAC;IACzC,CAAC;AACH,CAAC,CAAC;AATW,QAAA,sBAAsB,0BASjC"}
@@ -0,0 +1,49 @@
1
+ import { Chunk, Compiler, Exposes, Remotes, Stats, StatsChunk, StatsCompilation } from '@rspack/core';
2
+ import { ConvertedGraph, ZeUploadBuildStats } from 'zephyr-edge-contract';
3
+ import { FederationDashboardPluginOptions, ProcessRspackGraphParams, TopLevelPackage } from '../../type/federation-plugin-options';
4
+ export declare class FederationDashboardPlugin {
5
+ _options: FederationDashboardPluginOptions;
6
+ _data: string | undefined;
7
+ allArgumentsUsed: [file: string, applicationID: string, name: string][];
8
+ FederationPluginOptions: {
9
+ name?: string;
10
+ remotes?: Remotes;
11
+ filename?: string;
12
+ exposes?: Exposes;
13
+ /** The actual bundle name updated to metadata */
14
+ bundle_name?: string;
15
+ };
16
+ constructor(options: Partial<FederationDashboardPluginOptions>);
17
+ /** @param {Compiler} compiler */
18
+ apply(compiler: Compiler): void;
19
+ processRspackGraph({ stats, stats_json, pluginOptions }: ProcessRspackGraphParams): ConvertedGraph | undefined;
20
+ getRemoteEntryChunk(stats: StatsCompilation, FederationPluginOptions: typeof this.FederationPluginOptions): StatsChunk | undefined;
21
+ /**
22
+ * Return { "main": [{...dep1Details}, {...dep2Details}], "vendor": [{...dep3Details}],
23
+ *
24
+ * 1. Useful for dynamic imports - object generated could inform the bundler or runtime loader about which chunks are needed for specific
25
+ * part of the app, enabling better performance optimization 1.1 if a chunk representing a React component dynamically loads, this
26
+ * dependency graph can help the runtime understand what other chunks need to be loaded alongside it.
27
+ * 2. Optimized loading and caching: By mapping chunk dependencies, this function supports advanced optimizations like caching. Chunks that
28
+ * haven’t changed between builds can be cached separately, reducing the need for users to download unchanged code.
29
+ *
30
+ * }
31
+ */
32
+ getChunkDependencies(validChunkArray: Chunk[]): Record<string, never>;
33
+ buildVendorFederationMap(liveStats: Stats): TopLevelPackage;
34
+ mapToObjectRec(m: Record<string, Chunk[keyof Chunk]> | Map<string, Chunk[keyof Chunk]> | Chunk[keyof Chunk][]): Record<string, unknown>;
35
+ /**
36
+ * In a remote application, this function is used to find all the chunks that are referenced by the remote entry chunk It won't return
37
+ * anything from HostApp
38
+ */
39
+ buildValidChunkArray(liveStats: Stats, FederationPluginOptions: typeof this.FederationPluginOptions): Chunk[];
40
+ /**
41
+ * We are doing this because the filename in React Native is the actual JS bundle, "How we understand the filename is different in react
42
+ * native" - filename would be at the end of the URL modified in get_mf_config.ts If we don't attach the remote bundle name to metadata,
43
+ * we will have no track record of the actual bundle when we need it later -- this is RePack specific.
44
+ */
45
+ attach_remote_bundle_name_to_metadata(): Record<string, string> | undefined;
46
+ postDashboardData(dashData: any): Promise<{
47
+ value: ZeUploadBuildStats;
48
+ } | undefined>;
49
+ }