zephyr-metro-plugin 1.0.3 → 1.1.0-next.2
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/dist/index.d.ts +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/internal/load-static-entries.js +7 -0
- package/dist/lib/internal/load-static-entries.js.map +1 -1
- package/dist/lib/internal/mutate-mf-config.d.ts +1 -4
- package/dist/lib/internal/mutate-mf-config.js +7 -6
- package/dist/lib/internal/mutate-mf-config.js.map +1 -1
- package/dist/lib/with-zephyr.d.ts +0 -2
- package/dist/lib/with-zephyr.js +0 -12
- package/dist/lib/with-zephyr.js.map +1 -1
- package/dist/lib/zephyr-metro-command-wrapper.js +6 -1
- package/dist/lib/zephyr-metro-command-wrapper.js.map +1 -1
- package/dist/lib/zephyr-metro-rnef-plugin.d.ts +32 -0
- package/dist/lib/zephyr-metro-rnef-plugin.js +82 -0
- package/dist/lib/zephyr-metro-rnef-plugin.js.map +1 -0
- package/dist/package.json +10 -4
- package/package.json +12 -6
- package/dist/lib/zephyr-transformer.d.ts +0 -16
- package/dist/lib/zephyr-transformer.js +0 -99
- package/dist/lib/zephyr-transformer.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { withZephyr, withZephyrMetro, type ZephyrMetroOptions, type ZephyrModuleFederationConfig, } from './lib/with-zephyr';
|
|
2
2
|
export { zephyrCommandWrapper, type MetroConfig, type MetroFederationConfig, } from './lib/zephyr-metro-command-wrapper';
|
|
3
|
-
export {
|
|
3
|
+
export { zephyrMetroRNEFPlugin, type ZephyrMetroRNEFPluginConfig, type RNEFPluginApi, } from './lib/zephyr-metro-rnef-plugin';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* istanbul ignore file */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
4
|
+
exports.zephyrMetroRNEFPlugin = exports.zephyrCommandWrapper = exports.withZephyrMetro = exports.withZephyr = void 0;
|
|
5
5
|
// Metro plugin exports
|
|
6
6
|
var with_zephyr_1 = require("./lib/with-zephyr");
|
|
7
7
|
Object.defineProperty(exports, "withZephyr", { enumerable: true, get: function () { return with_zephyr_1.withZephyr; } });
|
|
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "withZephyrMetro", { enumerable: true, get: funct
|
|
|
9
9
|
// CLI command wrapper export for bundle-mf-remote integrations
|
|
10
10
|
var zephyr_metro_command_wrapper_1 = require("./lib/zephyr-metro-command-wrapper");
|
|
11
11
|
Object.defineProperty(exports, "zephyrCommandWrapper", { enumerable: true, get: function () { return zephyr_metro_command_wrapper_1.zephyrCommandWrapper; } });
|
|
12
|
-
//
|
|
13
|
-
var
|
|
14
|
-
Object.defineProperty(exports, "
|
|
12
|
+
// RNEF plugin export for Module Federation host/remote bundling commands
|
|
13
|
+
var zephyr_metro_rnef_plugin_1 = require("./lib/zephyr-metro-rnef-plugin");
|
|
14
|
+
Object.defineProperty(exports, "zephyrMetroRNEFPlugin", { enumerable: true, get: function () { return zephyr_metro_rnef_plugin_1.zephyrMetroRNEFPlugin; } });
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,0BAA0B;;;AAE1B,uBAAuB;AACvB,iDAK2B;AAJzB,yGAAA,UAAU,OAAA;AACV,8GAAA,eAAe,OAAA;AAKjB,+DAA+D;AAC/D,mFAI4C;AAH1C,oIAAA,oBAAoB,OAAA;AAKtB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,0BAA0B;;;AAE1B,uBAAuB;AACvB,iDAK2B;AAJzB,yGAAA,UAAU,OAAA;AACV,8GAAA,eAAe,OAAA;AAKjB,+DAA+D;AAC/D,mFAI4C;AAH1C,oIAAA,oBAAoB,OAAA;AAKtB,yEAAyE;AACzE,2EAIwC;AAHtC,iIAAA,qBAAqB,OAAA"}
|
|
@@ -12,6 +12,13 @@ async function load_static_entries(props) {
|
|
|
12
12
|
const { root } = props;
|
|
13
13
|
const publicAssets = [];
|
|
14
14
|
const root_dist_dir = (0, node_path_1.resolve)(root, props.outDir);
|
|
15
|
+
// Host builds driven by Xcode's "Bundle React Native code and images" phase
|
|
16
|
+
// write the bundle into DerivedData, not `<root>/dist/<platform>`. The host
|
|
17
|
+
// doesn't need to upload anything to Zephyr (the binary itself IS the host),
|
|
18
|
+
// so a missing output dir is a legitimate no-op rather than an error.
|
|
19
|
+
if (!(0, node_fs_1.existsSync)(root_dist_dir)) {
|
|
20
|
+
return publicAssets;
|
|
21
|
+
}
|
|
15
22
|
const loadDir = async (destDir) => {
|
|
16
23
|
for (const file of (0, node_fs_1.readdirSync)(destDir)) {
|
|
17
24
|
const destFile = (0, node_path_1.resolve)(destDir, file);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-static-entries.js","sourceRoot":"","sources":["../../../src/lib/internal/load-static-entries.ts"],"names":[],"mappings":";;AAeA,
|
|
1
|
+
{"version":3,"file":"load-static-entries.js","sourceRoot":"","sources":["../../../src/lib/internal/load-static-entries.ts"],"names":[],"mappings":";;AAeA,kDAuCC;AAtDD,qCAAsE;AACtE,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,4EAA4E;IAC5E,4EAA4E;IAC5E,6EAA6E;IAC7E,sEAAsE;IACtE,IAAI,CAAC,IAAA,oBAAU,EAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,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"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import type { ZephyrEngine, ZeResolvedDependency } from 'zephyr-agent';
|
|
2
2
|
import type { ZephyrPluginOptions } from 'zephyr-edge-contract';
|
|
3
|
-
export
|
|
4
|
-
delegate_module_template?: () => unknown;
|
|
5
|
-
}
|
|
6
|
-
export declare function mutateMfConfig(zephyr_engine: ZephyrEngine, config: Pick<ZephyrPluginOptions, 'mfConfig'>['mfConfig'], resolvedDependencyPairs: ZeResolvedDependency[] | null, options?: MutateMfConfigOptions): {
|
|
3
|
+
export declare function mutateMfConfig(_zephyr_engine: ZephyrEngine, config: Pick<ZephyrPluginOptions, 'mfConfig'>['mfConfig'], resolvedDependencyPairs: ZeResolvedDependency[] | null): {
|
|
7
4
|
name: string;
|
|
8
5
|
filename: string;
|
|
9
6
|
exposes?: Record<string, string>;
|
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mutateMfConfig = mutateMfConfig;
|
|
4
4
|
const zephyr_agent_1 = require("zephyr-agent");
|
|
5
|
-
function mutateMfConfig(
|
|
6
|
-
// Lazy load zephyr-xpack-internal to avoid static import
|
|
7
|
-
const { createMfRuntimeCode, xpack_delegate_module_template, } = require('zephyr-xpack-internal');
|
|
8
|
-
const template = options?.delegate_module_template || xpack_delegate_module_template;
|
|
5
|
+
function mutateMfConfig(_zephyr_engine, config, resolvedDependencyPairs) {
|
|
9
6
|
if (!resolvedDependencyPairs?.length) {
|
|
10
7
|
zephyr_agent_1.ze_log.mf(`No resolved dependency pairs found, skipping...`);
|
|
11
8
|
return;
|
|
@@ -52,8 +49,12 @@ function mutateMfConfig(zephyr_engine, config, resolvedDependencyPairs, options)
|
|
|
52
49
|
}
|
|
53
50
|
resolved_dep.name = remote_name;
|
|
54
51
|
if (remotes[remote_name]) {
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
// Metro's `init-host.js` generator quotes remote values as strings. The
|
|
53
|
+
// webpack-style `createMfRuntimeCode` output (a multi-line promise
|
|
54
|
+
// expression) breaks that serializer with "Unterminated string
|
|
55
|
+
// constant". Metro accepts the plain `name@url` form directly.
|
|
56
|
+
remotes[remote_name] = resolved_dep.remote_entry_url;
|
|
57
|
+
zephyr_agent_1.ze_log.mf(`Rewrote remote '${remote_name}' → ${resolved_dep.remote_entry_url}`);
|
|
57
58
|
}
|
|
58
59
|
});
|
|
59
60
|
return config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutate-mf-config.js","sourceRoot":"","sources":["../../../src/lib/internal/mutate-mf-config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"mutate-mf-config.js","sourceRoot":"","sources":["../../../src/lib/internal/mutate-mf-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,6 @@ export interface ZephyrMetroOptions {
|
|
|
8
8
|
target?: 'ios' | 'android';
|
|
9
9
|
/** Custom manifest endpoint path (default: /zephyr-manifest.json) */
|
|
10
10
|
manifestPath?: string;
|
|
11
|
-
/** Custom entry file patterns for runtime injection (more conservative targeting) */
|
|
12
|
-
entryFiles?: string[];
|
|
13
11
|
/** Throw an error if manifest generation fails (default: false - logs warning only) */
|
|
14
12
|
failOnManifestError?: boolean;
|
|
15
13
|
}
|
package/dist/lib/with-zephyr.js
CHANGED
|
@@ -33,20 +33,8 @@ async function applyZephyrToMetroConfig(metroConfig, zephyrOptions) {
|
|
|
33
33
|
const dependencyPairs = extractMetroRemoteDependencies(zephyrOptions.remotes || {});
|
|
34
34
|
// Resolve dependencies through Zephyr
|
|
35
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
36
|
const enhancedConfig = {
|
|
42
37
|
...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
38
|
resolver: {
|
|
51
39
|
...metroConfig.resolver,
|
|
52
40
|
// Add Zephyr-specific resolution logic
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with-zephyr.js","sourceRoot":"","sources":["../../src/lib/with-zephyr.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"with-zephyr.js","sourceRoot":"","sources":["../../src/lib/with-zephyr.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,8 +33,13 @@ async function zephyrCommandWrapper(bundleFederatedRemote, loadMetroConfig, upda
|
|
|
33
33
|
return res;
|
|
34
34
|
}
|
|
35
35
|
catch (error) {
|
|
36
|
+
const detail = error instanceof Error
|
|
37
|
+
? `${error.message}\n${error.stack ?? ''}`
|
|
38
|
+
: typeof error === 'string'
|
|
39
|
+
? error
|
|
40
|
+
: JSON.stringify(error, Object.getOwnPropertyNames(error));
|
|
36
41
|
throw new zephyr_agent_1.ZephyrError(zephyr_agent_1.ZeErrors.ERR_UNKNOWN, {
|
|
37
|
-
message:
|
|
42
|
+
message: detail,
|
|
38
43
|
});
|
|
39
44
|
}
|
|
40
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zephyr-metro-command-wrapper.js","sourceRoot":"","sources":["../../src/lib/zephyr-metro-command-wrapper.ts"],"names":[],"mappings":";;AAyBA,
|
|
1
|
+
{"version":3,"file":"zephyr-metro-command-wrapper.js","sourceRoot":"","sources":["../../src/lib/zephyr-metro-command-wrapper.ts"],"names":[],"mappings":";;AAyBA,oDAoDC;AA7ED,+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,MAAM,GACV,KAAK,YAAY,KAAK;gBACpB,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;gBAC1C,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;oBACzB,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,mBAAmB,CAAC,KAAe,CAAC,CAAC,CAAC;YAC3E,MAAM,IAAI,0BAAW,CAAC,uBAAQ,CAAC,WAAW,EAAE;gBAC1C,OAAO,EAAE,MAAM;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface ZephyrMetroRNEFPluginConfig {
|
|
2
|
+
platforms?: Record<string, object>;
|
|
3
|
+
}
|
|
4
|
+
interface RNEFCommandArgv {
|
|
5
|
+
platform: string;
|
|
6
|
+
mode?: string;
|
|
7
|
+
maxWorkers?: number;
|
|
8
|
+
resetCache?: boolean;
|
|
9
|
+
config?: string;
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
}
|
|
12
|
+
interface RNEFPluginCommandOption {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
}
|
|
16
|
+
interface RNEFPluginCommand {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
action: (args: RNEFCommandArgv) => Promise<void>;
|
|
20
|
+
options: RNEFPluginCommandOption[];
|
|
21
|
+
}
|
|
22
|
+
export interface RNEFPluginApi {
|
|
23
|
+
registerCommand: (command: RNEFPluginCommand) => void;
|
|
24
|
+
getProjectRoot: () => string;
|
|
25
|
+
getPlatforms: () => Record<string, object>;
|
|
26
|
+
getReactNativePath: () => string;
|
|
27
|
+
}
|
|
28
|
+
export declare const zephyrMetroRNEFPlugin: (pluginConfig?: ZephyrMetroRNEFPluginConfig) => (api: RNEFPluginApi) => {
|
|
29
|
+
name: string;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.zephyrMetroRNEFPlugin = void 0;
|
|
4
|
+
const module_1 = require("module");
|
|
5
|
+
const zephyr_agent_1 = require("zephyr-agent");
|
|
6
|
+
const zephyr_metro_command_wrapper_1 = require("./zephyr-metro-command-wrapper");
|
|
7
|
+
const zephyrMetroRNEFPlugin = (pluginConfig = {}) => (api) => {
|
|
8
|
+
const loadRuntimeDeps = () => {
|
|
9
|
+
const runtimeRequire = (0, module_1.createRequire)(__filename);
|
|
10
|
+
try {
|
|
11
|
+
const { updateManifest } = runtimeRequire('@module-federation/metro');
|
|
12
|
+
const { default: commands } = runtimeRequire('@module-federation/metro/commands');
|
|
13
|
+
const { color, logger, outro } = runtimeRequire('@rnef/tools');
|
|
14
|
+
return { updateManifest, commands, color, logger, outro };
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
18
|
+
throw new zephyr_agent_1.ZephyrError(zephyr_agent_1.ZeErrors.ERR_UNKNOWN, {
|
|
19
|
+
message: 'zephyrMetroRNEFPlugin requires @module-federation/metro and @rnef/tools. ' +
|
|
20
|
+
'Install them in your app devDependencies to use this integration. ' +
|
|
21
|
+
`Original error: ${detail}`,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const deps = loadRuntimeDeps();
|
|
26
|
+
api.registerCommand({
|
|
27
|
+
name: 'bundle-mf-host',
|
|
28
|
+
description: 'Bundles a Module Federation host with Zephyr Cloud',
|
|
29
|
+
action: async (args) => {
|
|
30
|
+
const { updateManifest, commands, color, logger, outro } = deps;
|
|
31
|
+
const commandConfig = {
|
|
32
|
+
root: api.getProjectRoot(),
|
|
33
|
+
platforms: api.getPlatforms(),
|
|
34
|
+
reactNativePath: api.getReactNativePath(),
|
|
35
|
+
...pluginConfig,
|
|
36
|
+
};
|
|
37
|
+
logger.info(`Bundling Module Federation host for platform ${color.cyan(args.platform)} with Zephyr Cloud`);
|
|
38
|
+
const bundleZephyrHostCommand = await (0, zephyr_metro_command_wrapper_1.zephyrCommandWrapper)(commands['bundleFederatedHost'], commands['loadMetroConfig'], () => {
|
|
39
|
+
const globalState = globalThis;
|
|
40
|
+
updateManifest(globalState.__METRO_FEDERATION_MANIFEST_PATH, globalState.__METRO_FEDERATION_CONFIG);
|
|
41
|
+
});
|
|
42
|
+
await bundleZephyrHostCommand([{ mode: args.mode ?? 'production', ...args }], commandConfig, args);
|
|
43
|
+
logger.info('Bundle artifacts uploaded to Zephyr.');
|
|
44
|
+
outro('Success.');
|
|
45
|
+
},
|
|
46
|
+
options: [
|
|
47
|
+
...(deps.commands['bundleFederatedHostOptions'] ?? []),
|
|
48
|
+
{
|
|
49
|
+
name: '--config-cmd [string]',
|
|
50
|
+
description: '[Internal] Pass-through for Xcode build script - matches the stock RNEF plugin.',
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
});
|
|
54
|
+
api.registerCommand({
|
|
55
|
+
name: 'bundle-mf-remote',
|
|
56
|
+
description: 'Bundles a Module Federation remote with Zephyr Cloud',
|
|
57
|
+
action: async (args) => {
|
|
58
|
+
const { updateManifest, commands, color, logger, outro } = deps;
|
|
59
|
+
const commandConfig = {
|
|
60
|
+
root: api.getProjectRoot(),
|
|
61
|
+
platforms: api.getPlatforms(),
|
|
62
|
+
reactNativePath: api.getReactNativePath(),
|
|
63
|
+
...pluginConfig,
|
|
64
|
+
};
|
|
65
|
+
logger.info(`Bundling Module Federation remote for platform ${color.cyan(args.platform)} with Zephyr Cloud`);
|
|
66
|
+
const bundleZephyrRemoteCommand = await (0, zephyr_metro_command_wrapper_1.zephyrCommandWrapper)(commands['bundleFederatedRemote'], commands['loadMetroConfig'], () => {
|
|
67
|
+
const globalState = globalThis;
|
|
68
|
+
updateManifest(globalState.__METRO_FEDERATION_MANIFEST_PATH, globalState.__METRO_FEDERATION_CONFIG);
|
|
69
|
+
});
|
|
70
|
+
await bundleZephyrRemoteCommand([{ mode: args.mode ?? 'production', ...args }], commandConfig, args);
|
|
71
|
+
logger.info('Bundle artifacts uploaded to Zephyr.');
|
|
72
|
+
outro('Success.');
|
|
73
|
+
},
|
|
74
|
+
options: deps.commands['bundleFederatedRemoteOptions'] ?? [],
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
name: 'zephyr-metro-rnef-plugin',
|
|
78
|
+
description: 'RNEF plugin for Module Federation with Metro + Zephyr',
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
exports.zephyrMetroRNEFPlugin = zephyrMetroRNEFPlugin;
|
|
82
|
+
//# sourceMappingURL=zephyr-metro-rnef-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zephyr-metro-rnef-plugin.js","sourceRoot":"","sources":["../../src/lib/zephyr-metro-rnef-plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zephyr-metro-plugin",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Metro bundler plugin for deploying React Native applications with Zephyr Cloud - OTA updates, Module Federation, and seamless deployment",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,12 +22,16 @@
|
|
|
22
22
|
"url": "https://github.com/ZephyrCloudIO"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
|
+
"@module-federation/metro": "^0.21.6",
|
|
26
|
+
"@rnef/tools": "^0.7.28",
|
|
25
27
|
"metro": ">=0.70.0",
|
|
26
|
-
"react-native": ">=0.60.0"
|
|
27
|
-
"zephyr-xpack-internal": ">=0.1.0"
|
|
28
|
+
"react-native": ">=0.60.0"
|
|
28
29
|
},
|
|
29
30
|
"peerDependenciesMeta": {
|
|
30
|
-
"
|
|
31
|
+
"@module-federation/metro": {
|
|
32
|
+
"optional": true
|
|
33
|
+
},
|
|
34
|
+
"@rnef/tools": {
|
|
31
35
|
"optional": true
|
|
32
36
|
}
|
|
33
37
|
},
|
|
@@ -41,6 +45,8 @@
|
|
|
41
45
|
"directory": "libs/zephyr-metro-plugin"
|
|
42
46
|
},
|
|
43
47
|
"devDependencies": {
|
|
48
|
+
"@module-federation/metro": "^0.21.6",
|
|
49
|
+
"@rnef/tools": "^0.7.28",
|
|
44
50
|
"@rspack/core": "catalog:rspack",
|
|
45
51
|
"@types/find-package-json": "^1.2.6",
|
|
46
52
|
"@types/jest": "catalog:typescript",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zephyr-metro-plugin",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.1.0-next.2",
|
|
4
4
|
"description": "Metro bundler plugin for deploying React Native applications with Zephyr Cloud - OTA updates, Module Federation, and seamless deployment",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -18,18 +18,22 @@
|
|
|
18
18
|
"url": "https://github.com/ZephyrCloudIO"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
|
+
"@module-federation/metro": "^0.21.6",
|
|
22
|
+
"@rnef/tools": "^0.7.28",
|
|
21
23
|
"metro": ">=0.70.0",
|
|
22
|
-
"react-native": ">=0.60.0"
|
|
23
|
-
"zephyr-xpack-internal": ">=0.1.0"
|
|
24
|
+
"react-native": ">=0.60.0"
|
|
24
25
|
},
|
|
25
26
|
"peerDependenciesMeta": {
|
|
26
|
-
"
|
|
27
|
+
"@module-federation/metro": {
|
|
28
|
+
"optional": true
|
|
29
|
+
},
|
|
30
|
+
"@rnef/tools": {
|
|
27
31
|
"optional": true
|
|
28
32
|
}
|
|
29
33
|
},
|
|
30
34
|
"dependencies": {
|
|
31
|
-
"zephyr-
|
|
32
|
-
"zephyr-
|
|
35
|
+
"zephyr-edge-contract": "1.1.0-next.2",
|
|
36
|
+
"zephyr-agent": "1.1.0-next.2"
|
|
33
37
|
},
|
|
34
38
|
"repository": {
|
|
35
39
|
"type": "git",
|
|
@@ -37,6 +41,8 @@
|
|
|
37
41
|
"directory": "libs/zephyr-metro-plugin"
|
|
38
42
|
},
|
|
39
43
|
"devDependencies": {
|
|
44
|
+
"@module-federation/metro": "^0.21.6",
|
|
45
|
+
"@rnef/tools": "^0.7.28",
|
|
40
46
|
"@rspack/core": "^1.7.0",
|
|
41
47
|
"@types/find-package-json": "^1.2.6",
|
|
42
48
|
"@types/jest": "29.5.14",
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { JsTransformOptions, JsTransformerConfig } from 'metro-transform-worker';
|
|
2
|
-
interface ZephyrTransformerOptions {
|
|
3
|
-
/** Custom manifest endpoint path */
|
|
4
|
-
manifestPath?: string;
|
|
5
|
-
/** Custom entry file patterns for more conservative targeting */
|
|
6
|
-
entryFiles?: string[];
|
|
7
|
-
}
|
|
8
|
-
/** Metro transformer that injects Zephyr runtime capabilities */
|
|
9
|
-
export declare function transform(config: JsTransformerConfig & {
|
|
10
|
-
zephyrTransformerOptions?: ZephyrTransformerOptions;
|
|
11
|
-
}, projectRoot: string, filename: string, data: Buffer, options: JsTransformOptions): Promise<{
|
|
12
|
-
ast: any;
|
|
13
|
-
code: string;
|
|
14
|
-
map: any;
|
|
15
|
-
}>;
|
|
16
|
-
export {};
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.transform = transform;
|
|
4
|
-
const zephyr_agent_1 = require("zephyr-agent");
|
|
5
|
-
/** Default entry file patterns if none specified */
|
|
6
|
-
const DEFAULT_ENTRY_FILES = ['index.js', 'index.ts', 'index.tsx', 'App.js', 'App.tsx'];
|
|
7
|
-
/** Metro transformer that injects Zephyr runtime capabilities */
|
|
8
|
-
async function transform(config, projectRoot, filename, data, options) {
|
|
9
|
-
// Use default Metro transformer first
|
|
10
|
-
const upstream = require('metro-react-native-babel-transformer');
|
|
11
|
-
const result = await upstream.transform(config, projectRoot, filename, data, options);
|
|
12
|
-
// Get Zephyr transformer options from config
|
|
13
|
-
const zephyrOptions = config.zephyrTransformerOptions;
|
|
14
|
-
const entryFiles = zephyrOptions?.entryFiles || DEFAULT_ENTRY_FILES;
|
|
15
|
-
// Only enhance entry files - use configurable patterns for more conservative targeting
|
|
16
|
-
const shouldEnhance = isZephyrTargetFile(filename, result.code, entryFiles);
|
|
17
|
-
if (shouldEnhance) {
|
|
18
|
-
const manifestPath = zephyrOptions?.manifestPath || '/zephyr-manifest.json';
|
|
19
|
-
const enhancedCode = injectZephyrRuntime(result.code, filename, manifestPath);
|
|
20
|
-
return {
|
|
21
|
-
...result,
|
|
22
|
-
code: enhancedCode,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
return result;
|
|
26
|
-
}
|
|
27
|
-
/** Check if file should be enhanced with Zephyr runtime */
|
|
28
|
-
function isZephyrTargetFile(filename, code, entryFiles) {
|
|
29
|
-
// Check against configured entry file patterns
|
|
30
|
-
const isEntryFile = entryFiles.some((pattern) => {
|
|
31
|
-
// Support glob-like patterns (simple matching)
|
|
32
|
-
if (pattern.includes('*')) {
|
|
33
|
-
const regex = new RegExp(pattern.replace(/\*/g, '.*'));
|
|
34
|
-
return regex.test(filename);
|
|
35
|
-
}
|
|
36
|
-
return filename.endsWith(pattern) || filename.includes(`/${pattern}`);
|
|
37
|
-
});
|
|
38
|
-
if (isEntryFile) {
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
// Target files that register the app (React Native entry point detection)
|
|
42
|
-
if (code.includes('AppRegistry.registerComponent') ||
|
|
43
|
-
code.includes('AppRegistry.runApplication')) {
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
/** Inject Zephyr runtime plugin capabilities */
|
|
49
|
-
function injectZephyrRuntime(originalCode, filename, manifestPath) {
|
|
50
|
-
try {
|
|
51
|
-
// Create runtime plugin initialization code
|
|
52
|
-
const runtimePluginCode = generateRuntimePluginCode(manifestPath);
|
|
53
|
-
// Inject at the top of the file
|
|
54
|
-
const injectedCode = `
|
|
55
|
-
// === Zephyr Runtime Plugin Injection ===
|
|
56
|
-
${runtimePluginCode}
|
|
57
|
-
// === End Zephyr Injection ===
|
|
58
|
-
|
|
59
|
-
${originalCode}
|
|
60
|
-
`;
|
|
61
|
-
zephyr_agent_1.ze_log.misc(`Injected Zephyr runtime into: ${filename}`);
|
|
62
|
-
return injectedCode;
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
zephyr_agent_1.ze_log.error(`Failed to inject Zephyr runtime into ${filename}: ${error}`);
|
|
66
|
-
return originalCode; // Return original on error
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
/** Generate runtime plugin initialization code */
|
|
70
|
-
function generateRuntimePluginCode(manifestPath) {
|
|
71
|
-
// Generate runtime initialization code using template strings
|
|
72
|
-
// This is more robust than function stringification which can break with minification
|
|
73
|
-
return `// Zephyr Runtime Plugin for React Native
|
|
74
|
-
(function() {
|
|
75
|
-
if (typeof global !== 'undefined' && !global.__ZEPHYR_RUNTIME_PLUGIN__) {
|
|
76
|
-
// Prevent multiple initializations
|
|
77
|
-
try {
|
|
78
|
-
var createZephyrRuntimePlugin = require('zephyr-xpack-internal').createZephyrRuntimePlugin;
|
|
79
|
-
|
|
80
|
-
var plugin = createZephyrRuntimePlugin({
|
|
81
|
-
manifestUrl: '${manifestPath}',
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
// Store globally
|
|
85
|
-
global.__ZEPHYR_RUNTIME_PLUGIN__ = plugin;
|
|
86
|
-
|
|
87
|
-
if (__DEV__) {
|
|
88
|
-
console.log('[Zephyr] Runtime plugin initialized');
|
|
89
|
-
}
|
|
90
|
-
} catch (error) {
|
|
91
|
-
// zephyr-xpack-internal is an optional peer dependency
|
|
92
|
-
if (__DEV__) {
|
|
93
|
-
console.warn('[Zephyr] Runtime plugin not available:', error.message);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
})();`;
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=zephyr-transformer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zephyr-transformer.js","sourceRoot":"","sources":["../../src/lib/zephyr-transformer.ts"],"names":[],"mappings":"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"}
|