zephyr-metro-plugin 0.0.0 → 0.1.3
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/LICENSE +39 -0
- package/README.md +330 -0
- package/TESTING.md +153 -0
- package/dist/README.md +330 -0
- package/dist/TESTING.md +153 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/internal/extract-mf-remotes.d.ts +3 -0
- package/dist/lib/internal/extract-mf-remotes.js +22 -0
- package/dist/lib/internal/extract-mf-remotes.js.map +1 -0
- package/dist/lib/internal/extract-modules-from-exposes.d.ts +12 -0
- package/dist/lib/internal/extract-modules-from-exposes.js +66 -0
- package/dist/lib/internal/extract-modules-from-exposes.js.map +1 -0
- package/dist/lib/internal/get-package-dependencies.d.ts +4 -0
- package/dist/lib/internal/get-package-dependencies.js +9 -0
- package/dist/lib/internal/get-package-dependencies.js.map +1 -0
- package/dist/lib/internal/load-static-entries.d.ts +7 -0
- package/dist/lib/internal/load-static-entries.js +39 -0
- package/dist/lib/internal/load-static-entries.js.map +1 -0
- package/dist/lib/internal/metro-build-stats.d.ts +4 -0
- package/dist/lib/internal/metro-build-stats.js +53 -0
- package/dist/lib/internal/metro-build-stats.js.map +1 -0
- package/dist/lib/internal/metro-errors.d.ts +5 -0
- package/dist/lib/internal/metro-errors.js +7 -0
- package/dist/lib/internal/metro-errors.js.map +1 -0
- package/dist/lib/internal/mutate-mf-config.d.ts +10 -0
- package/dist/lib/internal/mutate-mf-config.js +50 -0
- package/dist/lib/internal/mutate-mf-config.js.map +1 -0
- package/dist/lib/internal/parse-shared-dependencies.d.ts +8 -0
- package/dist/lib/internal/parse-shared-dependencies.js +54 -0
- package/dist/lib/internal/parse-shared-dependencies.js.map +1 -0
- package/dist/lib/internal/types.d.ts +53 -0
- package/dist/lib/internal/types.js +3 -0
- package/dist/lib/internal/types.js.map +1 -0
- package/dist/lib/with-zephyr.d.ts +25 -0
- package/dist/lib/with-zephyr.js +143 -0
- package/dist/lib/with-zephyr.js.map +1 -0
- package/dist/lib/zephyr-metro-command-wrapper.d.ts +19 -0
- package/dist/lib/zephyr-metro-command-wrapper.js +42 -0
- package/dist/lib/zephyr-metro-command-wrapper.js.map +1 -0
- package/dist/lib/zephyr-metro-plugin.d.ts +30 -0
- package/dist/lib/zephyr-metro-plugin.js +162 -0
- package/dist/lib/zephyr-metro-plugin.js.map +1 -0
- package/dist/lib/zephyr-transformer.d.ts +16 -0
- package/dist/lib/zephyr-transformer.js +99 -0
- package/dist/lib/zephyr-transformer.js.map +1 -0
- package/dist/package.json +68 -0
- package/package.json +66 -10
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.load_static_entries = load_static_entries;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
|
+
const node_util_1 = require("node:util");
|
|
7
|
+
// Metro-compatible path normalization (replaces vite's normalizePath)
|
|
8
|
+
function normalizePath(path) {
|
|
9
|
+
return path.replace(/\\/g, '/');
|
|
10
|
+
}
|
|
11
|
+
async function load_static_entries(props) {
|
|
12
|
+
const { root } = props;
|
|
13
|
+
const publicAssets = [];
|
|
14
|
+
const root_dist_dir = (0, node_path_1.resolve)(root, props.outDir);
|
|
15
|
+
const loadDir = async (destDir) => {
|
|
16
|
+
for (const file of (0, node_fs_1.readdirSync)(destDir)) {
|
|
17
|
+
const destFile = (0, node_path_1.resolve)(destDir, file);
|
|
18
|
+
const stat = (0, node_fs_1.statSync)(destFile);
|
|
19
|
+
if (stat.isDirectory()) {
|
|
20
|
+
await loadDir(destFile);
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const fileName = normalizePath((0, node_path_1.relative)(root_dist_dir, destFile));
|
|
24
|
+
publicAssets.push({
|
|
25
|
+
fileName,
|
|
26
|
+
name: file,
|
|
27
|
+
names: [file],
|
|
28
|
+
needsCodeReference: false,
|
|
29
|
+
source: await (0, node_util_1.promisify)(node_fs_1.readFile)(destFile),
|
|
30
|
+
type: 'asset',
|
|
31
|
+
originalFileName: file,
|
|
32
|
+
originalFileNames: [file],
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
await loadDir(root_dist_dir);
|
|
37
|
+
return publicAssets;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=load-static-entries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-static-entries.js","sourceRoot":"","sources":["../../../src/lib/internal/load-static-entries.ts"],"names":[],"mappings":";;AAeA,kDA+BC;AA9CD,qCAA0D;AAC1D,yCAA8C;AAC9C,yCAAsC;AAGtC,sEAAsE;AACtE,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAOM,KAAK,UAAU,mBAAmB,CACvC,KAA+B;IAE/B,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,MAAM,YAAY,GAAkB,EAAE,CAAC;IAEvC,MAAM,aAAa,GAAG,IAAA,mBAAO,EAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;QACxC,KAAK,MAAM,IAAI,IAAI,IAAA,qBAAW,EAAC,OAAO,CAAC,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,IAAA,kBAAQ,EAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACxB,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAA,oBAAQ,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;YAClE,YAAY,CAAC,IAAI,CAAC;gBAChB,QAAQ;gBACR,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,CAAC,IAAI,CAAC;gBACb,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,MAAM,IAAA,qBAAS,EAAC,kBAAQ,CAAC,CAAC,QAAQ,CAAC;gBAC3C,IAAI,EAAE,OAAO;gBACb,gBAAgB,EAAE,IAAI;gBACtB,iBAAiB,EAAE,CAAC,IAAI,CAAC;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ZephyrEngine } from 'zephyr-agent';
|
|
2
|
+
import type { ZephyrBuildStats } from 'zephyr-edge-contract';
|
|
3
|
+
export declare function createMinimalBuildStats(zephyr_engine: ZephyrEngine): Promise<Partial<ZephyrBuildStats>>;
|
|
4
|
+
export declare function resolveCatalogDependencies(dependencies?: Record<string, string>): Record<string, string>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMinimalBuildStats = createMinimalBuildStats;
|
|
4
|
+
exports.resolveCatalogDependencies = resolveCatalogDependencies;
|
|
5
|
+
// Create minimal build stats for Metro builds
|
|
6
|
+
async function createMinimalBuildStats(zephyr_engine) {
|
|
7
|
+
const app = zephyr_engine.applicationProperties;
|
|
8
|
+
const { git } = zephyr_engine.gitProperties;
|
|
9
|
+
const { isCI } = zephyr_engine.env;
|
|
10
|
+
const version = (await zephyr_engine.snapshotId) || '0.0.0';
|
|
11
|
+
const application_uid = zephyr_engine.application_uid;
|
|
12
|
+
const buildId = (await zephyr_engine.build_id) || 'unknown';
|
|
13
|
+
const { EDGE_URL, PLATFORM, DELIMITER } = await zephyr_engine.application_configuration;
|
|
14
|
+
return {
|
|
15
|
+
id: application_uid,
|
|
16
|
+
name: app.name,
|
|
17
|
+
version,
|
|
18
|
+
project: app.name || 'unknown-project',
|
|
19
|
+
app: Object.assign({}, app, { buildId }),
|
|
20
|
+
git,
|
|
21
|
+
context: { isCI },
|
|
22
|
+
tags: [],
|
|
23
|
+
edge: { url: EDGE_URL, delimiter: DELIMITER },
|
|
24
|
+
platform: PLATFORM,
|
|
25
|
+
type: 'app',
|
|
26
|
+
environment: '',
|
|
27
|
+
default: false,
|
|
28
|
+
overrides: [],
|
|
29
|
+
modules: [],
|
|
30
|
+
consumes: [],
|
|
31
|
+
dependencies: [],
|
|
32
|
+
devDependencies: [],
|
|
33
|
+
optionalDependencies: [],
|
|
34
|
+
peerDependencies: [],
|
|
35
|
+
remotes: [],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// Simple catalog dependencies resolver for Metro
|
|
39
|
+
function resolveCatalogDependencies(dependencies = {}) {
|
|
40
|
+
const resolved = {};
|
|
41
|
+
for (const [name, version] of Object.entries(dependencies)) {
|
|
42
|
+
if (version.startsWith('catalog:')) {
|
|
43
|
+
// For Metro plugin, we'll just use a default version for catalog references
|
|
44
|
+
// In a real implementation, this would resolve from a catalog file
|
|
45
|
+
resolved[name] = '0.0.0';
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
resolved[name] = version;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return resolved;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=metro-build-stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metro-build-stats.js","sourceRoot":"","sources":["../../../src/lib/internal/metro-build-stats.ts"],"names":[],"mappings":";;AAIA,0DAmCC;AAGD,gEAgBC;AAvDD,8CAA8C;AACvC,KAAK,UAAU,uBAAuB,CAC3C,aAA2B;IAE3B,MAAM,GAAG,GAAG,aAAa,CAAC,qBAAqB,CAAC;IAChD,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC;IAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC;IAEnC,MAAM,OAAO,GAAG,CAAC,MAAM,aAAa,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC;IAC5D,MAAM,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC;IACtD,MAAM,OAAO,GAAG,CAAC,MAAM,aAAa,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;IAC5D,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC,yBAAyB,CAAC;IAExF,OAAO;QACL,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO;QACP,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,iBAAiB;QACtC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAQ;QAC/C,GAAG;QACH,OAAO,EAAE,EAAE,IAAI,EAAE;QACjB,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE;QAC7C,QAAQ,EAAE,QAAe;QACzB,IAAI,EAAE,KAAY;QAClB,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,EAAE;QACnB,oBAAoB,EAAE,EAAE;QACxB,gBAAgB,EAAE,EAAE;QACpB,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,SAAgB,0BAA0B,CACxC,eAAuC,EAAE;IAEzC,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3D,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,4EAA4E;YAC5E,mEAAmE;YACnE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const ERR_MISSING_METRO_FEDERATION_CONFIG: {
|
|
2
|
+
readonly id: "023";
|
|
3
|
+
readonly message: "Library name {{library_name}} must be a valid identifier when using \"var\" as library type in Module Federation configuration. Either use a valid identifier (e. g. {base_identifier}) or use a different library type (e. g. type: 'global', which assign a property on the global scope instead of declaring a variable). To see a list of valid identifiers, please refer to:\n- Mozilla's documentation on identifiers: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n- The list of Module Federation's available library type: https://github.com/module-federation/core/blob/ae5ee1eedad4565774ea82e30b3d0df7c9921c58/webpack/declarations/WebpackOptions.d.ts#L112\n\nYou can change the library name to CamelCase to avoid this error.";
|
|
4
|
+
readonly kind: "build";
|
|
5
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ERR_MISSING_METRO_FEDERATION_CONFIG = void 0;
|
|
4
|
+
const zephyr_agent_1 = require("zephyr-agent");
|
|
5
|
+
// Use existing error from zephyr-agent
|
|
6
|
+
exports.ERR_MISSING_METRO_FEDERATION_CONFIG = zephyr_agent_1.ZeErrors.ERR_INVALID_MF_CONFIG;
|
|
7
|
+
//# sourceMappingURL=metro-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metro-errors.js","sourceRoot":"","sources":["../../../src/lib/internal/metro-errors.ts"],"names":[],"mappings":";;;AAAA,+CAAwC;AAExC,uCAAuC;AAC1B,QAAA,mCAAmC,GAAG,uBAAQ,CAAC,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ZephyrEngine, ZeResolvedDependency } from 'zephyr-agent';
|
|
2
|
+
import type { ZephyrPluginOptions } from 'zephyr-edge-contract';
|
|
3
|
+
export declare function mutateMfConfig(zephyr_engine: ZephyrEngine, config: Pick<ZephyrPluginOptions, 'mfConfig'>['mfConfig'], resolvedDependencyPairs: ZeResolvedDependency[] | null, delegate_module_template?: () => unknown | undefined): {
|
|
4
|
+
name: string;
|
|
5
|
+
filename: string;
|
|
6
|
+
exposes?: Record<string, string>;
|
|
7
|
+
remotes?: Record<string, string>;
|
|
8
|
+
shared?: Record<string, unknown>;
|
|
9
|
+
runtimePlugins?: string[] | undefined;
|
|
10
|
+
} | undefined;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mutateMfConfig = mutateMfConfig;
|
|
4
|
+
const zephyr_agent_1 = require("zephyr-agent");
|
|
5
|
+
function mutateMfConfig(zephyr_engine, config, resolvedDependencyPairs, delegate_module_template) {
|
|
6
|
+
// Lazy load zephyr-xpack-internal to avoid static import
|
|
7
|
+
const { createMfRuntimeCode, xpack_delegate_module_template, } = require('zephyr-xpack-internal');
|
|
8
|
+
const template = delegate_module_template || xpack_delegate_module_template;
|
|
9
|
+
if (!resolvedDependencyPairs?.length) {
|
|
10
|
+
zephyr_agent_1.ze_log.mf(`No resolved dependency pairs found, skipping...`);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const remotes = config?.remotes;
|
|
14
|
+
if (!remotes) {
|
|
15
|
+
zephyr_agent_1.ze_log.mf(`No remotes found for plugin: ${JSON.stringify(config, null, 2)}`, 'skipping...');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
Object.entries(remotes).map((remote) => {
|
|
19
|
+
const [remote_name, remote_version] = remote;
|
|
20
|
+
if (!remote_name ||
|
|
21
|
+
typeof remote_name !== 'string' ||
|
|
22
|
+
!remote_version ||
|
|
23
|
+
typeof remote_version !== 'string') {
|
|
24
|
+
zephyr_agent_1.ze_log.mf(`Invalid remote configuration: ${JSON.stringify(remote)}, skipping...`);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const resolved_dep = resolvedDependencyPairs.find((dep) => dep.name === remote_name && dep.version === remote_version);
|
|
28
|
+
zephyr_agent_1.ze_log.mf(`remote_name: ${remote_name}, remote_version: ${remote_version}`);
|
|
29
|
+
if (!resolved_dep) {
|
|
30
|
+
zephyr_agent_1.ze_log.mf(`Resolved dependency pair not found for remote: ${JSON.stringify(remote, null, 2)}`, 'skipping...');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// todo: this is a version with named export logic, we should take this into account later
|
|
34
|
+
const [v_app] = remote_version.includes('@')
|
|
35
|
+
? remote_version.split('@')
|
|
36
|
+
: [remote_name];
|
|
37
|
+
zephyr_agent_1.ze_log.mf(`v_app: ${v_app}`);
|
|
38
|
+
if (v_app) {
|
|
39
|
+
resolved_dep.remote_entry_url = [v_app, resolved_dep.remote_entry_url].join('@');
|
|
40
|
+
zephyr_agent_1.ze_log.mf(`Adding version to remote entry url: ${resolved_dep.remote_entry_url}`);
|
|
41
|
+
}
|
|
42
|
+
resolved_dep.name = remote_name;
|
|
43
|
+
if (remotes[remote_name]) {
|
|
44
|
+
remotes[remote_name] = createMfRuntimeCode(zephyr_engine, resolved_dep, template);
|
|
45
|
+
zephyr_agent_1.ze_log.mf(`Setting runtime code for remote: ${remotes}`);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return config;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=mutate-mf-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutate-mf-config.js","sourceRoot":"","sources":["../../../src/lib/internal/mutate-mf-config.ts"],"names":[],"mappings":";;AAIA,wCAwEC;AA3ED,+CAAsC;AAGtC,SAAgB,cAAc,CAC5B,aAA2B,EAC3B,MAAyD,EACzD,uBAAsD,EACtD,wBAAoD;IAEpD,yDAAyD;IACzD,MAAM,EACJ,mBAAmB,EACnB,8BAA8B,GAC/B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,wBAAwB,IAAI,8BAA8B,CAAC;IAC5E,IAAI,CAAC,uBAAuB,EAAE,MAAM,EAAE,CAAC;QACrC,qBAAM,CAAC,EAAE,CAAC,iDAAiD,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,qBAAM,CAAC,EAAE,CACP,gCAAgC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EACjE,aAAa,CACd,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,MAAM,CAAC;QAE7C,IACE,CAAC,WAAW;YACZ,OAAO,WAAW,KAAK,QAAQ;YAC/B,CAAC,cAAc;YACf,OAAO,cAAc,KAAK,QAAQ,EAClC,CAAC;YACD,qBAAM,CAAC,EAAE,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAClF,OAAO;QACT,CAAC;QACD,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,CAC/C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,OAAO,KAAK,cAAc,CACpE,CAAC;QAEF,qBAAM,CAAC,EAAE,CAAC,gBAAgB,WAAW,qBAAqB,cAAc,EAAE,CAAC,CAAC;QAE5E,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,qBAAM,CAAC,EAAE,CACP,kDAAkD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EACnF,aAAa,CACd,CAAC;YACF,OAAO;QACT,CAAC;QAED,0FAA0F;QAC1F,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC1C,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;YAC3B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAElB,qBAAM,CAAC,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;QAC7B,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,gBAAgB,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjF,qBAAM,CAAC,EAAE,CAAC,uCAAuC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,YAAY,CAAC,IAAI,GAAG,WAAW,CAAC;QAEhC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,WAAW,CAAC,GAAG,mBAAmB,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YAClF,qBAAM,CAAC,EAAE,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseSharedDependencies = parseSharedDependencies;
|
|
4
|
+
const metro_build_stats_1 = require("./metro-build-stats");
|
|
5
|
+
function parseSharedDependencies(name, config, zephyr_engine) {
|
|
6
|
+
// Module Federation allows shared to be an object, array, or string
|
|
7
|
+
// Get version from package dependencies if available or from config
|
|
8
|
+
let version = '0.0.0';
|
|
9
|
+
if (zephyr_engine.npmProperties.dependencies?.[name]) {
|
|
10
|
+
// Resolve catalog reference in dependencies if present
|
|
11
|
+
const depVersion = zephyr_engine.npmProperties.dependencies[name];
|
|
12
|
+
version = depVersion.startsWith('catalog:')
|
|
13
|
+
? (0, metro_build_stats_1.resolveCatalogDependencies)({ [name]: depVersion })[name]
|
|
14
|
+
: depVersion;
|
|
15
|
+
}
|
|
16
|
+
else if (zephyr_engine.npmProperties.peerDependencies?.[name]) {
|
|
17
|
+
// Resolve catalog reference in peer dependencies if present
|
|
18
|
+
const peerVersion = zephyr_engine.npmProperties.peerDependencies[name];
|
|
19
|
+
version = peerVersion.startsWith('catalog:')
|
|
20
|
+
? (0, metro_build_stats_1.resolveCatalogDependencies)({ [name]: peerVersion })[name]
|
|
21
|
+
: peerVersion;
|
|
22
|
+
}
|
|
23
|
+
else if (typeof config === 'object' && config !== null) {
|
|
24
|
+
// Object format: { react: { requiredVersion: '18.0.0', singleton: true } }
|
|
25
|
+
if (config.requiredVersion) {
|
|
26
|
+
const reqVersion = config.requiredVersion;
|
|
27
|
+
if (reqVersion) {
|
|
28
|
+
version =
|
|
29
|
+
typeof reqVersion === 'string' && reqVersion.startsWith('catalog:')
|
|
30
|
+
? (0, metro_build_stats_1.resolveCatalogDependencies)({ [name]: reqVersion })[name]
|
|
31
|
+
: reqVersion;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else if (typeof config === 'string') {
|
|
36
|
+
// String format: { react: '18.0.0' }
|
|
37
|
+
// Only use string value if we didn't find the package in dependencies
|
|
38
|
+
if (!zephyr_engine.npmProperties.dependencies?.[name] &&
|
|
39
|
+
!zephyr_engine.npmProperties.peerDependencies?.[name]) {
|
|
40
|
+
version = config.startsWith('catalog:')
|
|
41
|
+
? (0, metro_build_stats_1.resolveCatalogDependencies)({ [name]: config })[name]
|
|
42
|
+
: config;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Array format is also possible but doesn't typically include version info
|
|
46
|
+
return {
|
|
47
|
+
id: name,
|
|
48
|
+
name,
|
|
49
|
+
version,
|
|
50
|
+
location: name,
|
|
51
|
+
applicationID: name,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=parse-shared-dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-shared-dependencies.js","sourceRoot":"","sources":["../../../src/lib/internal/parse-shared-dependencies.ts"],"names":[],"mappings":";;AAIA,0DA4DC;AA/DD,2DAAiE;AAGjE,SAAgB,uBAAuB,CACrC,IAAY,EACZ,MAAe,EACf,aAA2B;IAQ3B,oEAAoE;IACpE,oEAAoE;IACpE,IAAI,OAAO,GAAG,OAAO,CAAC;IAEtB,IAAI,aAAa,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,uDAAuD;QACvD,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClE,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;YACzC,CAAC,CAAC,IAAA,8CAA0B,EAAC,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;YAC1D,CAAC,CAAC,UAAU,CAAC;IACjB,CAAC;SAAM,IAAI,aAAa,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,4DAA4D;QAC5D,MAAM,WAAW,GAAG,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvE,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC;YAC1C,CAAC,CAAC,IAAA,8CAA0B,EAAC,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC;YAC3D,CAAC,CAAC,WAAW,CAAC;IAClB,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACzD,2EAA2E;QAC3E,IAAK,MAAiC,CAAC,eAAe,EAAE,CAAC;YACvD,MAAM,UAAU,GAAI,MAAiC,CAAC,eAAe,CAAC;YAEtE,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;wBACjE,CAAC,CAAC,IAAA,8CAA0B,EAAC,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;wBAC1D,CAAC,CAAC,UAAU,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtC,qCAAqC;QACrC,sEAAsE;QACtE,IACE,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC;YACjD,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,EACrD,CAAC;YACD,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;gBACrC,CAAC,CAAC,IAAA,8CAA0B,EAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;gBACtD,CAAC,CAAC,MAAM,CAAC;QACb,CAAC;IACH,CAAC;IACD,2EAA2E;IAE3E,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI;QACJ,OAAO;QACP,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,IAAI;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface OutputAsset {
|
|
2
|
+
fileName: string;
|
|
3
|
+
name: string;
|
|
4
|
+
names: string[];
|
|
5
|
+
needsCodeReference: boolean;
|
|
6
|
+
source: string | Uint8Array;
|
|
7
|
+
type: 'asset';
|
|
8
|
+
originalFileName: string;
|
|
9
|
+
originalFileNames: string[];
|
|
10
|
+
}
|
|
11
|
+
export interface XFederatedSharedConfig {
|
|
12
|
+
singleton?: boolean;
|
|
13
|
+
requiredVersion?: string;
|
|
14
|
+
version?: string;
|
|
15
|
+
eager?: boolean;
|
|
16
|
+
libraryName?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface XAdditionalSharedConfig {
|
|
19
|
+
libraryName: string;
|
|
20
|
+
sharedConfig?: {
|
|
21
|
+
singleton?: boolean;
|
|
22
|
+
requiredVersion?: string;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export interface XFederatedConfig {
|
|
26
|
+
name: string;
|
|
27
|
+
library?: {
|
|
28
|
+
type?: string;
|
|
29
|
+
} | any;
|
|
30
|
+
shared?: Record<string, string | XFederatedSharedConfig> | string[] | any;
|
|
31
|
+
remotes?: (string | RemotesObject)[] | RemotesObject | any;
|
|
32
|
+
exposes?: Record<string, string | {
|
|
33
|
+
import: string;
|
|
34
|
+
} | any> | any;
|
|
35
|
+
filename?: string;
|
|
36
|
+
bundle_name?: string;
|
|
37
|
+
additionalShared?: string[] | Record<string, string | XFederatedSharedConfig> | XAdditionalSharedConfig[] | any;
|
|
38
|
+
}
|
|
39
|
+
export interface ModuleFederationPlugin {
|
|
40
|
+
apply: (compiler: unknown) => void;
|
|
41
|
+
_options?: XFederatedConfig | {
|
|
42
|
+
config: XFederatedConfig;
|
|
43
|
+
};
|
|
44
|
+
config?: XFederatedConfig;
|
|
45
|
+
}
|
|
46
|
+
interface RemotesObject {
|
|
47
|
+
[index: string]: string | RemotesConfig | string[];
|
|
48
|
+
}
|
|
49
|
+
interface RemotesConfig {
|
|
50
|
+
external: string | string[];
|
|
51
|
+
shareScope?: string;
|
|
52
|
+
}
|
|
53
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/internal/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ConfigT } from 'metro-config';
|
|
2
|
+
export interface ZephyrMetroOptions {
|
|
3
|
+
/** Application name */
|
|
4
|
+
name?: string;
|
|
5
|
+
/** Remote dependencies configuration */
|
|
6
|
+
remotes?: Record<string, string>;
|
|
7
|
+
/** Target platform */
|
|
8
|
+
target?: 'ios' | 'android';
|
|
9
|
+
/** Custom manifest endpoint path (default: /zephyr-manifest.json) */
|
|
10
|
+
manifestPath?: string;
|
|
11
|
+
/** Custom entry file patterns for runtime injection (more conservative targeting) */
|
|
12
|
+
entryFiles?: string[];
|
|
13
|
+
/** Throw an error if manifest generation fails (default: false - logs warning only) */
|
|
14
|
+
failOnManifestError?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface ZephyrModuleFederationConfig {
|
|
17
|
+
name: string;
|
|
18
|
+
exposes?: Record<string, string>;
|
|
19
|
+
remotes?: Record<string, string>;
|
|
20
|
+
shared?: Record<string, any>;
|
|
21
|
+
}
|
|
22
|
+
/** Metro plugin configuration function for Zephyr */
|
|
23
|
+
export declare function withZephyr(zephyrOptions?: ZephyrMetroOptions): (metroConfig: ConfigT) => Promise<ConfigT>;
|
|
24
|
+
/** Legacy function name for backward compatibility */
|
|
25
|
+
export declare const withZephyrMetro: typeof withZephyr;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withZephyrMetro = void 0;
|
|
4
|
+
exports.withZephyr = withZephyr;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const zephyr_agent_1 = require("zephyr-agent");
|
|
7
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
8
|
+
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
9
|
+
/** Metro plugin configuration function for Zephyr */
|
|
10
|
+
function withZephyr(zephyrOptions = {}) {
|
|
11
|
+
return async (metroConfig) => {
|
|
12
|
+
try {
|
|
13
|
+
return await applyZephyrToMetroConfig(metroConfig, zephyrOptions);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
zephyr_agent_1.ze_log.error(zephyr_agent_1.ZephyrError.format(error));
|
|
17
|
+
return metroConfig; // Return original config on error
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
async function applyZephyrToMetroConfig(metroConfig, zephyrOptions) {
|
|
22
|
+
const projectRoot = metroConfig.projectRoot || process.cwd();
|
|
23
|
+
const manifestPath = zephyrOptions.manifestPath || '/zephyr-manifest.json';
|
|
24
|
+
// Initialize Zephyr Engine
|
|
25
|
+
const zephyr_engine = await zephyr_agent_1.ZephyrEngine.create({
|
|
26
|
+
builder: 'metro',
|
|
27
|
+
context: projectRoot,
|
|
28
|
+
});
|
|
29
|
+
if (zephyrOptions.target) {
|
|
30
|
+
zephyr_engine.env.target = zephyrOptions.target;
|
|
31
|
+
}
|
|
32
|
+
// Extract remote dependencies from zephyr options
|
|
33
|
+
const dependencyPairs = extractMetroRemoteDependencies(zephyrOptions.remotes || {});
|
|
34
|
+
// Resolve dependencies through Zephyr
|
|
35
|
+
const resolved_dependencies = await zephyr_engine.resolve_remote_dependencies(dependencyPairs);
|
|
36
|
+
// Enhanced metro config with Zephyr transformer options
|
|
37
|
+
const zephyrTransformerOptions = {
|
|
38
|
+
manifestPath,
|
|
39
|
+
entryFiles: zephyrOptions.entryFiles,
|
|
40
|
+
};
|
|
41
|
+
const enhancedConfig = {
|
|
42
|
+
...metroConfig,
|
|
43
|
+
transformer: {
|
|
44
|
+
...metroConfig.transformer,
|
|
45
|
+
babelTransformerPath: require.resolve('./zephyr-transformer'),
|
|
46
|
+
// Pass zephyr options to transformer via extra data
|
|
47
|
+
...metroConfig.transformer,
|
|
48
|
+
zephyrTransformerOptions,
|
|
49
|
+
},
|
|
50
|
+
resolver: {
|
|
51
|
+
...metroConfig.resolver,
|
|
52
|
+
// Add Zephyr-specific resolution logic
|
|
53
|
+
resolverMainFields: [
|
|
54
|
+
...(metroConfig.resolver?.resolverMainFields || [
|
|
55
|
+
'react-native',
|
|
56
|
+
'browser',
|
|
57
|
+
'main',
|
|
58
|
+
]),
|
|
59
|
+
'zephyr',
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
server: {
|
|
63
|
+
...metroConfig.server,
|
|
64
|
+
// Enhance server with manifest endpoint
|
|
65
|
+
enhanceMiddleware: (middleware, server) => {
|
|
66
|
+
// Get the base middleware (either enhanced or original)
|
|
67
|
+
const baseMiddleware = metroConfig.server?.enhanceMiddleware
|
|
68
|
+
? metroConfig.server.enhanceMiddleware(middleware, server)
|
|
69
|
+
: middleware;
|
|
70
|
+
// Return a new middleware that intercepts manifest requests
|
|
71
|
+
return (req, res, next) => {
|
|
72
|
+
// Check if this is a manifest request
|
|
73
|
+
const url = req.url?.split('?')[0]; // Remove query string
|
|
74
|
+
if (url === manifestPath) {
|
|
75
|
+
try {
|
|
76
|
+
const manifestContent = (0, zephyr_agent_1.createManifestContent)(resolved_dependencies || []);
|
|
77
|
+
res.setHeader('Content-Type', 'application/json');
|
|
78
|
+
res.setHeader('Cache-Control', 'no-cache');
|
|
79
|
+
res.end(manifestContent);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
zephyr_agent_1.ze_log.error(`Failed to serve manifest: ${error}`);
|
|
84
|
+
res.statusCode = 500;
|
|
85
|
+
res.setHeader('Content-Type', 'application/json');
|
|
86
|
+
res.end(JSON.stringify({ error: 'Failed to generate manifest' }));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Pass through to base middleware
|
|
91
|
+
return baseMiddleware(req, res, next);
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
// Generate manifest file for production builds
|
|
97
|
+
const manifestGenerated = await generateManifestFile(projectRoot, manifestPath, resolved_dependencies || []);
|
|
98
|
+
if (!manifestGenerated) {
|
|
99
|
+
const errorMessage = 'Manifest file generation failed - runtime updates may not work correctly';
|
|
100
|
+
if (zephyrOptions.failOnManifestError) {
|
|
101
|
+
throw new zephyr_agent_1.ZephyrError(zephyr_agent_1.ZeErrors.ERR_UNKNOWN, { message: errorMessage });
|
|
102
|
+
}
|
|
103
|
+
zephyr_agent_1.ze_log.error(errorMessage);
|
|
104
|
+
}
|
|
105
|
+
zephyr_agent_1.ze_log.app('Zephyr Metro plugin configured successfully');
|
|
106
|
+
return enhancedConfig;
|
|
107
|
+
}
|
|
108
|
+
/** Extract remote dependencies from Metro configuration */
|
|
109
|
+
function extractMetroRemoteDependencies(remotes) {
|
|
110
|
+
return Object.entries(remotes).map(([name, url]) => {
|
|
111
|
+
// Parse remote URL - could be just URL or name@url format
|
|
112
|
+
const [remoteName, remoteUrl] = url.includes('@') ? url.split('@') : [name, url];
|
|
113
|
+
return {
|
|
114
|
+
name: remoteName,
|
|
115
|
+
version: 'latest', // Metro doesn't have version concept like webpack MF
|
|
116
|
+
remote_url: remoteUrl,
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/** Generate zephyr-manifest.json file - returns true on success, false on failure */
|
|
121
|
+
async function generateManifestFile(projectRoot, manifestEndpoint, resolved_dependencies) {
|
|
122
|
+
try {
|
|
123
|
+
const manifestContent = (0, zephyr_agent_1.createManifestContent)(resolved_dependencies);
|
|
124
|
+
// Convert endpoint path to filename (e.g., /zephyr-manifest.json -> zephyr-manifest.json)
|
|
125
|
+
const manifestFilename = manifestEndpoint.replace(/^\//, '');
|
|
126
|
+
const manifestFilePath = path_1.default.join(projectRoot, 'assets', manifestFilename);
|
|
127
|
+
// Ensure assets directory exists
|
|
128
|
+
const assetsDir = path_1.default.dirname(manifestFilePath);
|
|
129
|
+
if (!fs_1.default.existsSync(assetsDir)) {
|
|
130
|
+
fs_1.default.mkdirSync(assetsDir, { recursive: true });
|
|
131
|
+
}
|
|
132
|
+
await fs_1.default.promises.writeFile(manifestFilePath, manifestContent, 'utf-8');
|
|
133
|
+
zephyr_agent_1.ze_log.manifest(`Generated manifest at: ${manifestFilePath}`);
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
zephyr_agent_1.ze_log.error(`Failed to generate manifest file: ${zephyr_agent_1.ZephyrError.format(error)}`);
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/** Legacy function name for backward compatibility */
|
|
142
|
+
exports.withZephyrMetro = withZephyr;
|
|
143
|
+
//# sourceMappingURL=with-zephyr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-zephyr.js","sourceRoot":"","sources":["../../src/lib/with-zephyr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Platform } from 'zephyr-agent';
|
|
2
|
+
import type { ZephyrPluginOptions } from 'zephyr-edge-contract';
|
|
3
|
+
export type MetroConfig = Record<string, unknown>;
|
|
4
|
+
export type MetroFederationConfig = Pick<ZephyrPluginOptions, 'mfConfig'>['mfConfig'];
|
|
5
|
+
interface MetroBundleOptions {
|
|
6
|
+
mode: string;
|
|
7
|
+
platform: Platform;
|
|
8
|
+
}
|
|
9
|
+
interface MetroConfigOptions extends MetroConfig {
|
|
10
|
+
root: string;
|
|
11
|
+
}
|
|
12
|
+
interface MetroCliOptions {
|
|
13
|
+
maxWorkers?: number;
|
|
14
|
+
resetCache?: boolean;
|
|
15
|
+
config?: string;
|
|
16
|
+
}
|
|
17
|
+
type MetroCommandArgs = [[MetroBundleOptions], MetroConfigOptions, MetroCliOptions];
|
|
18
|
+
export declare function zephyrCommandWrapper(bundleFederatedRemote: (...args: MetroCommandArgs) => Promise<any>, loadMetroConfig: (config: MetroConfig, options: MetroCliOptions) => Promise<any>, updateManifest: () => void): Promise<(args_0: [MetroBundleOptions], args_1: MetroConfigOptions, args_2: MetroCliOptions) => Promise<any>>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.zephyrCommandWrapper = zephyrCommandWrapper;
|
|
4
|
+
const zephyr_agent_1 = require("zephyr-agent");
|
|
5
|
+
const metro_errors_1 = require("./internal/metro-errors");
|
|
6
|
+
const zephyr_metro_plugin_1 = require("./zephyr-metro-plugin");
|
|
7
|
+
async function zephyrCommandWrapper(bundleFederatedRemote, loadMetroConfig, updateManifest) {
|
|
8
|
+
return async (...args) => {
|
|
9
|
+
try {
|
|
10
|
+
// before build
|
|
11
|
+
const isDev = args[0][0].mode;
|
|
12
|
+
const platform = args[0][0].platform;
|
|
13
|
+
const context = args[1].root;
|
|
14
|
+
await loadMetroConfig(args[1], {
|
|
15
|
+
maxWorkers: args[2].maxWorkers,
|
|
16
|
+
resetCache: args[2].resetCache,
|
|
17
|
+
config: args[2].config,
|
|
18
|
+
});
|
|
19
|
+
if (!global.__METRO_FEDERATION_CONFIG) {
|
|
20
|
+
throw new zephyr_agent_1.ZephyrError(metro_errors_1.ERR_MISSING_METRO_FEDERATION_CONFIG);
|
|
21
|
+
}
|
|
22
|
+
const zephyrMetroPlugin = new zephyr_metro_plugin_1.ZephyrMetroPlugin({
|
|
23
|
+
platform,
|
|
24
|
+
mode: isDev ? 'development' : 'production',
|
|
25
|
+
context,
|
|
26
|
+
outDir: 'dist',
|
|
27
|
+
mfConfig: global.__METRO_FEDERATION_CONFIG,
|
|
28
|
+
});
|
|
29
|
+
await zephyrMetroPlugin.beforeBuild();
|
|
30
|
+
updateManifest();
|
|
31
|
+
const res = await bundleFederatedRemote(...args);
|
|
32
|
+
await zephyrMetroPlugin.afterBuild();
|
|
33
|
+
return res;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw new zephyr_agent_1.ZephyrError(zephyr_agent_1.ZeErrors.ERR_UNKNOWN, {
|
|
37
|
+
message: JSON.stringify(error),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=zephyr-metro-command-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zephyr-metro-command-wrapper.js","sourceRoot":"","sources":["../../src/lib/zephyr-metro-command-wrapper.ts"],"names":[],"mappings":";;AAyBA,oDA8CC;AAvED,+CAAoE;AAEpE,0DAA8E;AAC9E,+DAA0D;AAsBnD,KAAK,UAAU,oBAAoB,CACxC,qBAAkE,EAClE,eAAgF,EAChF,cAA0B;IAE1B,OAAO,KAAK,EAAE,GAAG,IAAsB,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,eAAe;YACf,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAErC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAE7B,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC7B,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU;gBAC9B,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU;gBAC9B,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;aACvB,CAAC,CAAC;YAEH,IAAI,CAAE,MAAc,CAAC,yBAAyB,EAAE,CAAC;gBAC/C,MAAM,IAAI,0BAAW,CAAC,kDAAmC,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,iBAAiB,GAAG,IAAI,uCAAiB,CAAC;gBAC9C,QAAQ;gBACR,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY;gBAC1C,OAAO;gBACP,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAG,MAAc,CAAC,yBAAyB;aACpD,CAAC,CAAC;YAEH,MAAM,iBAAiB,CAAC,WAAW,EAAE,CAAC;YAEtC,cAAc,EAAE,CAAC;YAEjB,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,GAAG,IAAI,CAAC,CAAC;YAEjD,MAAM,iBAAiB,CAAC,UAAU,EAAE,CAAC;YAErC,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,0BAAW,CAAC,uBAAQ,CAAC,WAAW,EAAE;gBAC1C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Platform } from 'zephyr-agent';
|
|
2
|
+
import { ZephyrEngine } from 'zephyr-agent';
|
|
3
|
+
import type { ZephyrPluginOptions } from 'zephyr-edge-contract';
|
|
4
|
+
export interface ZephyrCommandWrapperConfig {
|
|
5
|
+
platform: Platform;
|
|
6
|
+
mode: string;
|
|
7
|
+
context: string;
|
|
8
|
+
outDir: string;
|
|
9
|
+
mfConfig: Pick<ZephyrPluginOptions, 'mfConfig'>['mfConfig'];
|
|
10
|
+
}
|
|
11
|
+
export declare class ZephyrMetroPlugin {
|
|
12
|
+
#private;
|
|
13
|
+
zephyr_engine: ZephyrEngine;
|
|
14
|
+
constructor(props: ZephyrCommandWrapperConfig);
|
|
15
|
+
beforeBuild(): Promise<{
|
|
16
|
+
name: string;
|
|
17
|
+
filename: string;
|
|
18
|
+
exposes?: Record<string, string>;
|
|
19
|
+
remotes?: Record<string, string>;
|
|
20
|
+
shared?: Record<string, unknown>;
|
|
21
|
+
runtimePlugins?: string[] | undefined;
|
|
22
|
+
} | undefined>;
|
|
23
|
+
afterBuild(): Promise<void>;
|
|
24
|
+
private getConsumeMap;
|
|
25
|
+
private getBuildStats;
|
|
26
|
+
private loadStaticAssets;
|
|
27
|
+
private makeAssetsMap;
|
|
28
|
+
private extractBuffer;
|
|
29
|
+
private getAssetType;
|
|
30
|
+
}
|