@granite-js/mpack 0.1.6 → 0.1.8

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/CHANGELOG.md +18 -0
  2. package/dist/bundler/Bundler.d.ts +1 -1
  3. package/dist/bundler/Bundler.js +7 -2
  4. package/dist/bundler/internal/presets.d.ts +19 -0
  5. package/dist/bundler/internal/presets.js +103 -0
  6. package/dist/bundler/plugins/buildStatusPlugin/buildStatusPlugin.d.ts +2 -2
  7. package/dist/bundler/plugins/buildStatusPlugin/buildStatusPlugin.js +4 -5
  8. package/dist/bundler/plugins/dependencyAliasPlugin/aliasResolver.d.ts +1 -1
  9. package/dist/bundler/plugins/dependencyAliasPlugin/protocolResolver.d.ts +1 -1
  10. package/dist/bundler/plugins/shared/swc.d.ts +1 -1
  11. package/dist/bundler/plugins/transformPlugin/steps/createTransformToHermesSyntaxStep.d.ts +1 -1
  12. package/dist/constants/index.d.ts +2 -2
  13. package/dist/constants/index.js +4 -4
  14. package/dist/index.d.ts +3 -8
  15. package/dist/index.js +9 -15
  16. package/dist/metro/build.d.ts +17 -0
  17. package/dist/metro/build.js +104 -0
  18. package/dist/metro/getMetroConfig.d.ts +2 -9
  19. package/dist/metro/getMetroConfig.js +4 -6
  20. package/dist/metro/index.d.ts +1 -2
  21. package/dist/metro/index.js +20 -3
  22. package/dist/operations/build.d.ts +15 -0
  23. package/dist/operations/{runBundle.js → build.js} +51 -51
  24. package/dist/operations/createDebuggerMiddleware.d.ts +1 -2
  25. package/dist/operations/createDebuggerMiddleware.js +4 -4
  26. package/dist/operations/experimental/serve.d.ts +11 -0
  27. package/dist/operations/experimental/{runServer.js → serve.js} +21 -25
  28. package/dist/operations/index.d.ts +3 -3
  29. package/dist/operations/index.js +23 -6
  30. package/dist/operations/openDebugger.d.ts +1 -1
  31. package/dist/operations/openDebugger.js +3 -2
  32. package/dist/operations/serve.d.ts +10 -0
  33. package/dist/operations/{runServer.js → serve.js} +15 -16
  34. package/dist/plugins/statusPlugin.js +1 -1
  35. package/dist/server/DevServer.d.ts +3 -0
  36. package/dist/server/DevServer.js +13 -14
  37. package/dist/server/helpers/createBundlerForDevServer.d.ts +3 -5
  38. package/dist/server/helpers/createBundlerForDevServer.js +10 -37
  39. package/dist/server/helpers/mergeBundles.d.ts +4 -4
  40. package/dist/server/helpers/mergeBundles.js +10 -10
  41. package/dist/server/plugins/serveBundlePlugin.d.ts +2 -2
  42. package/dist/server/plugins/symbolicatePlugin/symbolicatePlugin.d.ts +2 -2
  43. package/dist/server/types.d.ts +9 -14
  44. package/dist/types/BundlerConfig.d.ts +1 -34
  45. package/dist/types/Id.d.ts +3 -0
  46. package/dist/{bundler/types.js → types/Id.js} +2 -2
  47. package/dist/types/Plugin.d.ts +2 -2
  48. package/dist/types/index.d.ts +1 -7
  49. package/dist/types/index.js +2 -14
  50. package/dist/utils/getId.js +1 -8
  51. package/dist/utils/progressBar.d.ts +1 -1
  52. package/dist/utils/writeBundle.d.ts +1 -1
  53. package/dist/vendors/metro/src/lib/ReportableEvent.d.ts +152 -0
  54. package/dist/vendors/metro/src/lib/TerminalReporter.d.ts +2 -2
  55. package/dist/vendors/metro-transform-worker/src/index.js +0 -1
  56. package/package.json +5 -4
  57. package/dist/bundler/types.d.ts +0 -17
  58. package/dist/metro/runBuild.d.ts +0 -12
  59. package/dist/metro/runBuild.js +0 -66
  60. package/dist/metro/runtime.d.ts +0 -3
  61. package/dist/metro/runtime.js +0 -56
  62. package/dist/metro/types.d.ts +0 -88
  63. package/dist/metro/types.js +0 -16
  64. package/dist/operations/experimental/runServer.d.ts +0 -16
  65. package/dist/operations/runBundle.d.ts +0 -12
  66. package/dist/operations/runServer.d.ts +0 -15
  67. package/dist/types/BuildConfig.d.ts +0 -183
  68. package/dist/types/BuildConfig.js +0 -16
  69. package/dist/types/Config.d.ts +0 -12
  70. package/dist/types/Config.js +0 -16
  71. package/dist/types/DevServerConfig.d.ts +0 -9
  72. package/dist/types/DevServerConfig.js +0 -16
  73. package/dist/types/Preset.d.ts +0 -3
  74. package/dist/types/Preset.js +0 -16
  75. package/dist/types/PresetContext.d.ts +0 -2
  76. package/dist/types/PresetContext.js +0 -16
  77. package/dist/types/ServicesConfig.d.ts +0 -2
  78. package/dist/types/ServicesConfig.js +0 -16
  79. package/dist/types/TaskConfig.d.ts +0 -16
  80. package/dist/types/TaskConfig.js +0 -16
  81. package/dist/types/schemas/buildConfigSchema.d.ts +0 -235
  82. package/dist/types/schemas/buildConfigSchema.js +0 -79
  83. package/dist/types/schemas/bundlerConfigSchema.d.ts +0 -3
  84. package/dist/types/schemas/bundlerConfigSchema.js +0 -51
  85. package/dist/types/schemas/configSchema.d.ts +0 -3
  86. package/dist/types/schemas/configSchema.js +0 -50
  87. package/dist/types/schemas/devServerConfigSchema.d.ts +0 -3
  88. package/dist/types/schemas/devServerConfigSchema.js +0 -43
  89. package/dist/types/schemas/index.d.ts +0 -6
  90. package/dist/types/schemas/index.js +0 -32
  91. package/dist/types/schemas/servicesConfigSchema.d.ts +0 -3
  92. package/dist/types/schemas/servicesConfigSchema.js +0 -48
  93. package/dist/types/schemas/taskConfigSchema.d.ts +0 -3
  94. package/dist/types/schemas/taskConfigSchema.js +0 -45
  95. package/dist/utils/loadConfig.d.ts +0 -2
  96. package/dist/utils/loadConfig.js +0 -37
  97. package/dist/utils/loadPresets.d.ts +0 -2
  98. package/dist/utils/loadPresets.js +0 -40
  99. package/dist/utils/mergeBanners.d.ts +0 -6
  100. package/dist/utils/mergeBanners.js +0 -35
  101. package/dist/utils/mergeBuildConfigs.d.ts +0 -2
  102. package/dist/utils/mergeBuildConfigs.js +0 -59
  103. package/dist/utils/mergeInject.d.ts +0 -3
  104. package/dist/utils/mergeInject.js +0 -30
@@ -26,72 +26,72 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var runBundle_exports = {};
30
- __export(runBundle_exports, {
31
- runBundle: () => runBundle
29
+ var build_exports = {};
30
+ __export(build_exports, {
31
+ build: () => build,
32
+ buildAll: () => buildAll
32
33
  });
33
- module.exports = __toCommonJS(runBundle_exports);
34
- var import_assert = __toESM(require("assert"));
34
+ module.exports = __toCommonJS(build_exports);
35
35
  var fs = __toESM(require("fs/promises"));
36
36
  var path = __toESM(require("path"));
37
- var import_semaphore = require("@shopify/semaphore");
37
+ var import_plugin_core = require("@granite-js/plugin-core");
38
38
  var import_es_toolkit = require("es-toolkit");
39
- var import__ = require("..");
40
39
  var import_bundler = require("../bundler");
41
40
  var import_performance = require("../performance");
42
- var import_loadPresets = require("../utils/loadPresets");
43
41
  var import_writeBundle = require("../utils/writeBundle");
44
- async function runBundle(options) {
45
- const config = options.config ?? await (0, import__.loadConfig)({ rootDir: options.rootDir });
46
- (0, import_assert.default)(config, "\uAD6C\uC131 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4");
47
- config.tasks = await Promise.all(
48
- config.tasks.map(
49
- (task) => (0, import_loadPresets.loadPresets)(task, {
50
- appName: config.appName,
51
- scheme: config.scheme,
52
- rootDir: options.rootDir,
53
- dev: options.dev
54
- })
55
- )
56
- );
57
- const semaphore = new import_semaphore.Semaphore(config.concurrency ?? 4);
58
- const buildResults = await Promise.all(
59
- config.tasks.map(async ({ tag, build }) => {
60
- if (typeof options.tag === "string" && tag !== options.tag) {
61
- return;
62
- }
63
- const bundler = new import_bundler.Bundler({
64
- tag,
65
- buildConfig: build,
66
- appName: config.appName,
67
- scheme: config.scheme,
68
- services: config.services,
69
- dev: options.dev,
70
- metafile: options.metafile,
71
- rootDir: options.rootDir,
72
- cache: options.cache
73
- });
74
- if (options.plugins) {
75
- options.plugins.forEach((fn) => bundler.addPlugin(fn()));
76
- }
77
- const permit = await semaphore.acquire();
42
+ async function build({ config, plugins = [], ...options }) {
43
+ const driver = (0, import_plugin_core.createPluginHooksDriver)(config);
44
+ await driver.build.pre();
45
+ const buildResult = await buildImpl(config, plugins, options);
46
+ await driver.build.post({ buildResults: [buildResult] });
47
+ return buildResult;
48
+ }
49
+ async function buildAll(optionsList, { config, plugins = [], concurrency = 2 }) {
50
+ const buildResults = [];
51
+ const semaphore = new import_es_toolkit.Semaphore(Math.min(concurrency, optionsList.length));
52
+ const driver = (0, import_plugin_core.createPluginHooksDriver)(config);
53
+ await driver.build.pre();
54
+ await Promise.all(
55
+ optionsList.map(async (options) => {
56
+ await semaphore.acquire();
78
57
  try {
79
- const result = await bundler.build();
80
- await (0, import_writeBundle.writeBundle)(result.outfile, result.bundle);
81
- return result;
82
- } finally {
83
- await permit.release();
58
+ const buildResult = await buildImpl(config, plugins, options);
59
+ buildResults.push(buildResult);
60
+ } catch {
61
+ semaphore.release();
84
62
  }
85
63
  })
86
- ).then((results) => results.filter(import_es_toolkit.isNotNil));
64
+ );
65
+ await driver.build.post({ buildResults });
66
+ return buildResults;
67
+ }
68
+ async function buildImpl(config, plugins, { platform, outfile = `bundle.${platform}.js`, cache = true, dev = true, metafile = false }) {
69
+ const resolvedOutfile = path.join(config.outdir, outfile);
70
+ const bundler = new import_bundler.Bundler({
71
+ rootDir: config.cwd,
72
+ cache,
73
+ dev,
74
+ metafile,
75
+ buildConfig: {
76
+ platform,
77
+ outfile: resolvedOutfile,
78
+ ...config.build
79
+ }
80
+ });
81
+ for (const plugin of plugins) {
82
+ bundler.addPlugin(plugin());
83
+ }
84
+ const buildResult = await bundler.build();
85
+ await (0, import_writeBundle.writeBundle)(buildResult.outfile, buildResult.bundle);
87
86
  const performanceSummary = import_performance.Performance.getSummary();
88
87
  if (performanceSummary != null) {
89
88
  (0, import_performance.printSummary)(performanceSummary);
90
- await fs.writeFile(path.join(options.rootDir, "perf.json"), JSON.stringify(performanceSummary, null, 2), "utf-8");
89
+ await fs.writeFile(path.join(config.cwd, "perf.json"), JSON.stringify(performanceSummary, null, 2), "utf-8");
91
90
  }
92
- return buildResults;
91
+ return buildResult;
93
92
  }
94
93
  // Annotate the CommonJS export names for ESM import in node:
95
94
  0 && (module.exports = {
96
- runBundle
95
+ build,
96
+ buildAll
97
97
  });
@@ -1,10 +1,9 @@
1
1
  import connect from 'connect';
2
2
  interface DebuggerMiddlewareConfig {
3
- host?: string;
4
3
  port: number;
5
4
  broadcastMessage: (method: string, params?: Record<string, unknown>) => void;
6
5
  }
7
- export declare function createDebuggerMiddleware({ host, port, broadcastMessage }: DebuggerMiddlewareConfig): {
6
+ export declare function createDebuggerMiddleware({ port, broadcastMessage }: DebuggerMiddlewareConfig): {
8
7
  middleware: connect.Server;
9
8
  enableStdinWatchMode: () => void;
10
9
  };
@@ -45,7 +45,7 @@ var import_vendors = require("../vendors");
45
45
  const debug = (0, import_debug.default)("cli:start");
46
46
  const { InspectorProxy } = (0, import_vendors.getModule)("metro-inspector-proxy");
47
47
  const chromeInstanceMap = /* @__PURE__ */ new Map();
48
- function createDebuggerMiddleware({ host, port, broadcastMessage }) {
48
+ function createDebuggerMiddleware({ port, broadcastMessage }) {
49
49
  const middleware = (0, import_connect.default)().use(`/${import_constants.DEBUGGER_FRONTEND_PATH}`, (0, import_serve_static.default)(import_path.default.resolve(import_devtools_frontend.default)));
50
50
  function enableStdinWatchMode() {
51
51
  if (!process.stdout.isTTY || process.stdin.setRawMode == null) {
@@ -80,14 +80,14 @@ function createDebuggerMiddleware({ host, port, broadcastMessage }) {
80
80
  broadcastMessage("devMenu");
81
81
  break;
82
82
  case "j":
83
- openReactNativeDebugger(host, port);
83
+ openReactNativeDebugger(port);
84
84
  break;
85
85
  }
86
86
  });
87
87
  }
88
88
  return { middleware, enableStdinWatchMode };
89
89
  }
90
- async function openReactNativeDebugger(host = "localhost", port) {
90
+ async function openReactNativeDebugger(port) {
91
91
  const connectedDevices = Array.from(InspectorProxy.devices.entries());
92
92
  let targetDevice;
93
93
  for (const [id, device] of connectedDevices) {
@@ -113,7 +113,7 @@ async function openReactNativeDebugger(host = "localhost", port) {
113
113
  }
114
114
  console.log(`Opening debugger for '${targetDevice.name}'...`);
115
115
  chromeInstanceMap.get(targetDevice.id)?.kill();
116
- (0, import_openDebugger.openDebugger)(host, port, targetDevice.id.toString()).then((chrome) => {
116
+ (0, import_openDebugger.openDebugger)(port, targetDevice.id.toString()).then((chrome) => {
117
117
  chromeInstanceMap.set(targetDevice.id, chrome);
118
118
  }).catch((error) => {
119
119
  if (error.message.includes("ECONNREFUSED")) {
@@ -0,0 +1,11 @@
1
+ import { CompleteGraniteConfig } from '@granite-js/plugin-core';
2
+ interface RunServerArgs {
3
+ config: CompleteGraniteConfig;
4
+ host?: string;
5
+ port?: number;
6
+ onServerReady?: () => Promise<void> | void;
7
+ }
8
+ export declare function EXPERIMENTAL__server({ config, host, port, onServerReady, }: RunServerArgs): Promise<{
9
+ cleanup: () => Promise<void>;
10
+ }>;
11
+ export {};
@@ -26,11 +26,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var runServer_exports = {};
30
- __export(runServer_exports, {
31
- experimental_runServer: () => experimental_runServer
29
+ var serve_exports = {};
30
+ __export(serve_exports, {
31
+ EXPERIMENTAL__server: () => EXPERIMENTAL__server
32
32
  });
33
- module.exports = __toCommonJS(runServer_exports);
33
+ module.exports = __toCommonJS(serve_exports);
34
+ var import_plugin_core = require("@granite-js/plugin-core");
34
35
  var import_prompts = require("@inquirer/prompts");
35
36
  var import_debug = __toESM(require("debug"));
36
37
  var import_StartMenuHandler = require("./StartMenuHandler");
@@ -40,52 +41,47 @@ var import_printLogo = require("../../utils/printLogo");
40
41
  var import_openDebugger = require("../openDebugger");
41
42
  const debug = (0, import_debug.default)("cli:start");
42
43
  const chromeInstanceMap = /* @__PURE__ */ new Map();
43
- async function experimental_runServer({
44
- appName,
45
- scheme,
46
- devServerConfig,
47
- host,
44
+ async function EXPERIMENTAL__server({
45
+ config,
46
+ host = import_constants.DEV_SERVER_DEFAULT_HOST,
48
47
  port = import_constants.DEV_SERVER_DEFAULT_PORT,
49
- plugins,
50
- preloadBundle,
51
48
  onServerReady
52
49
  }) {
53
- const rootDir = process.cwd();
50
+ const driver = (0, import_plugin_core.createPluginHooksDriver)(config);
51
+ await driver.devServer.pre({ host, port });
52
+ const rootDir = config.cwd;
54
53
  const server = new import_DevServer.DevServer({
55
- appName,
56
- scheme,
57
- build: devServerConfig.build,
58
- presets: devServerConfig.presets,
54
+ buildConfig: config.build,
55
+ middlewares: config.devServer?.middlewares ?? [],
59
56
  host,
60
57
  port,
61
- preloadBundle,
62
- plugins,
63
58
  rootDir
64
59
  });
65
60
  (0, import_printLogo.printLogo)();
66
61
  await server.initialize();
67
62
  await server.listen();
63
+ await driver.devServer.post({ host, port });
68
64
  await onServerReady?.();
69
65
  const menuHandler = new import_StartMenuHandler.StartMenuHandler([
70
66
  {
71
67
  key: "r",
72
- description: "\uC0C8\uB85C\uACE0\uCE68",
68
+ description: "Refresh",
73
69
  action: () => {
74
- console.log("\uC0C8\uB85C\uACE0\uCE68 \uC911...");
70
+ console.log("Refreshing...");
75
71
  server.broadcastCommand("reload");
76
72
  }
77
73
  },
78
74
  {
79
75
  key: "d",
80
- description: "\uAC1C\uBC1C\uC790 \uBA54\uB274 \uC5F4\uAE30",
76
+ description: "Open Developer Menu",
81
77
  action: () => {
82
- console.log("\uAC1C\uBC1C\uC790 \uBA54\uB274 \uC5EC\uB294 \uC911...");
78
+ console.log("Opening developer menu...");
83
79
  server.broadcastCommand("devMenu");
84
80
  }
85
81
  },
86
82
  {
87
83
  key: "j",
88
- description: "Debugger \uC5F4\uAE30",
84
+ description: "Open Debugger",
89
85
  action: async () => {
90
86
  const devices = server.getInspectorProxy()?.getDevices();
91
87
  const connectedDevices = Array.from(devices?.entries() ?? []);
@@ -113,7 +109,7 @@ async function experimental_runServer({
113
109
  }
114
110
  console.log(`Opening debugger for '${targetDevice.name}'...`);
115
111
  chromeInstanceMap.get(targetDevice.id)?.kill();
116
- (0, import_openDebugger.openDebugger)(server.host, server.port, targetDevice.id).then((chrome) => {
112
+ (0, import_openDebugger.openDebugger)(server.port, targetDevice.id).then((chrome) => {
117
113
  chromeInstanceMap.set(targetDevice.id, chrome);
118
114
  }).catch((error) => {
119
115
  if (error.message.includes("ECONNREFUSED")) {
@@ -133,5 +129,5 @@ async function experimental_runServer({
133
129
  }
134
130
  // Annotate the CommonJS export names for ESM import in node:
135
131
  0 && (module.exports = {
136
- experimental_runServer
132
+ EXPERIMENTAL__server
137
133
  });
@@ -1,3 +1,3 @@
1
- export * from './runBundle';
2
- export * from './runServer';
3
- export * from './experimental/runServer';
1
+ export * as BuildUtils from './build';
2
+ export * from './serve';
3
+ export * from './experimental/serve';
@@ -1,8 +1,14 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
6
12
  var __copyProps = (to, from, except, desc) => {
7
13
  if (from && typeof from === "object" || typeof from === "function") {
8
14
  for (let key of __getOwnPropNames(from))
@@ -12,15 +18,26 @@ var __copyProps = (to, from, except, desc) => {
12
18
  return to;
13
19
  };
14
20
  var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
15
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
30
  var operations_exports = {};
31
+ __export(operations_exports, {
32
+ BuildUtils: () => BuildUtils
33
+ });
17
34
  module.exports = __toCommonJS(operations_exports);
18
- __reExport(operations_exports, require("./runBundle"), module.exports);
19
- __reExport(operations_exports, require("./runServer"), module.exports);
20
- __reExport(operations_exports, require("./experimental/runServer"), module.exports);
35
+ var BuildUtils = __toESM(require("./build"));
36
+ __reExport(operations_exports, require("./serve"), module.exports);
37
+ __reExport(operations_exports, require("./experimental/serve"), module.exports);
21
38
  // Annotate the CommonJS export names for ESM import in node:
22
39
  0 && (module.exports = {
23
- ...require("./runBundle"),
24
- ...require("./runServer"),
25
- ...require("./experimental/runServer")
40
+ BuildUtils,
41
+ ...require("./serve"),
42
+ ...require("./experimental/serve")
26
43
  });
@@ -1 +1 @@
1
- export declare function openDebugger(host: string | undefined, port: number, deviceId: string): Promise<import("chrome-launcher").LaunchedChrome>;
1
+ export declare function openDebugger(port: number, deviceId: string): Promise<import("chrome-launcher").LaunchedChrome>;
@@ -36,8 +36,9 @@ var os = __toESM(require("os"));
36
36
  var path = __toESM(require("path"));
37
37
  var import_chrome_launcher = require("chrome-launcher");
38
38
  var import_constants = require("./constants");
39
- async function openDebugger(host = "localhost", port, deviceId) {
40
- const appUrl = getDevToolsFrontendUrl(host, port, deviceId);
39
+ const DEBUGGER_HOST = "localhost";
40
+ async function openDebugger(port, deviceId) {
41
+ const appUrl = getDevToolsFrontendUrl(DEBUGGER_HOST, port, deviceId);
41
42
  const tempDir = await createTemporaryDirectory();
42
43
  const chromePath = (0, import_chrome_launcher.getChromePath)();
43
44
  if (!chromePath) {
@@ -0,0 +1,10 @@
1
+ import { type CompleteGraniteConfig } from '@granite-js/plugin-core';
2
+ interface RunServerConfig {
3
+ config: CompleteGraniteConfig;
4
+ host?: string;
5
+ port?: number;
6
+ enableEmbeddedReactDevTools?: boolean;
7
+ onServerReady?: () => Promise<void> | void;
8
+ }
9
+ export declare function runServer({ config, host, port, enableEmbeddedReactDevTools, onServerReady, }: RunServerConfig): Promise<void>;
10
+ export {};
@@ -26,18 +26,18 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var runServer_exports = {};
30
- __export(runServer_exports, {
29
+ var serve_exports = {};
30
+ __export(serve_exports, {
31
31
  runServer: () => runServer
32
32
  });
33
- module.exports = __toCommonJS(runServer_exports);
33
+ module.exports = __toCommonJS(serve_exports);
34
+ var import_plugin_core = require("@granite-js/plugin-core");
34
35
  var import_cli_server_api = require("@react-native-community/cli-server-api");
35
36
  var import_debug = __toESM(require("debug"));
36
37
  var import_backend = require("react-native-devtools-standalone/backend");
37
38
  var import_createDebuggerMiddleware = require("./createDebuggerMiddleware");
38
39
  var import_constants = require("../constants");
39
40
  var import_getMetroConfig = require("../metro/getMetroConfig");
40
- var import_loadConfig = require("../utils/loadConfig");
41
41
  var import_printLogo = require("../utils/printLogo");
42
42
  var import_vendors = require("../vendors");
43
43
  const debug = (0, import_debug.default)("cli:start");
@@ -45,17 +45,14 @@ const { Metro, TerminalReporter } = (0, import_vendors.getModule)("metro");
45
45
  const { Terminal } = (0, import_vendors.getModule)("metro-core");
46
46
  const { mergeConfig } = (0, import_vendors.getModule)("metro-config");
47
47
  async function runServer({
48
- host,
48
+ config,
49
+ host = import_constants.DEV_SERVER_DEFAULT_HOST,
49
50
  port = import_constants.DEV_SERVER_DEFAULT_PORT,
50
- middlewares = [],
51
51
  enableEmbeddedReactDevTools = true,
52
- onServerReady,
53
- cwd = process.cwd(),
54
- config: $config,
55
- additionalConfig
52
+ onServerReady
56
53
  }) {
57
- const config = $config ?? await (0, import_loadConfig.loadConfig)({ rootDir: cwd });
58
54
  const ref = {};
55
+ const driver = (0, import_plugin_core.createPluginHooksDriver)(config);
59
56
  const terminal = new Terminal(process.stdout);
60
57
  const terminalReporter = new TerminalReporter(terminal);
61
58
  const reporter = {
@@ -63,12 +60,16 @@ async function runServer({
63
60
  debug("Reporter event", event);
64
61
  terminalReporter.update(event);
65
62
  ref.reportEvent?.(event);
63
+ if (baseConfig.reporter?.update) {
64
+ baseConfig.reporter.update(event);
65
+ }
66
66
  switch (event.type) {
67
67
  case "initialize_started":
68
68
  (0, import_printLogo.printLogo)();
69
69
  break;
70
70
  case "initialize_done":
71
71
  enableStdinWatchMode();
72
+ await driver.devServer.post({ host, port });
72
73
  await onServerReady?.();
73
74
  break;
74
75
  default:
@@ -76,10 +77,8 @@ async function runServer({
76
77
  }
77
78
  }
78
79
  };
79
- const baseConfig = await (0, import_getMetroConfig.getMetroConfig)(
80
- { rootPath: cwd, appName: config?.appName ?? "", scheme: config?.scheme ?? "" },
81
- additionalConfig
82
- );
80
+ const { middlewares = [], ...additionalMetroConfig } = config.metro ?? {};
81
+ const baseConfig = await (0, import_getMetroConfig.getMetroConfig)({ rootPath: config.cwd }, additionalMetroConfig);
83
82
  const metroConfig = mergeConfig(baseConfig, {
84
83
  server: { port },
85
84
  reporter
@@ -90,7 +89,6 @@ async function runServer({
90
89
  watchFolders: metroConfig.watchFolders
91
90
  });
92
91
  const { middleware: debuggerMiddleware, enableStdinWatchMode } = (0, import_createDebuggerMiddleware.createDebuggerMiddleware)({
93
- host,
94
92
  port,
95
93
  broadcastMessage: messageSocketEndpoint.broadcast
96
94
  });
@@ -122,6 +120,7 @@ async function runServer({
122
120
  }
123
121
  ref.reportEvent = eventsSocketEndpoint.reportEvent;
124
122
  ref.enableStdinWatchMode = enableStdinWatchMode;
123
+ await driver.devServer.pre({ host, port });
125
124
  const serverInstance = await Metro.runServer(metroConfig, {
126
125
  host,
127
126
  websocketEndpoints
@@ -34,7 +34,7 @@ function statusPlugin(handlers) {
34
34
  if (progressBar != null) {
35
35
  return;
36
36
  }
37
- progressBar = (0, import_progressBar.createProgressBar)(`${config.appName}:${config.buildConfig.platform}`);
37
+ progressBar = (0, import_progressBar.createProgressBar)(config.buildConfig.platform);
38
38
  totalModuleCount = import_PersistentStorage.persistentStorage.getData()[this.id]?.totalModuleCount;
39
39
  },
40
40
  buildStart() {
@@ -21,3 +21,6 @@ export declare class DevServer {
21
21
  private createDevServerContext;
22
22
  private getBundle;
23
23
  }
24
+ declare global {
25
+ var remoteBundles: Record<'android' | 'ios', string> | null;
26
+ }
@@ -32,7 +32,6 @@ __export(DevServer_exports, {
32
32
  });
33
33
  module.exports = __toCommonJS(DevServer_exports);
34
34
  var import_assert = __toESM(require("assert"));
35
- var fs = __toESM(require("fs/promises"));
36
35
  var import_fastify = __toESM(require("fastify"));
37
36
  var import_backend = require("react-native-devtools-standalone/backend");
38
37
  var import_DebuggerEventHandler = require("./debugger/DebuggerEventHandler");
@@ -73,9 +72,9 @@ class DevServer {
73
72
  wssDelegate;
74
73
  async initialize() {
75
74
  import_logger.logger.trace("DevServer.initialize");
76
- const { rootDir, appName, scheme, ...devServerConfig } = this.devServerOptions;
75
+ const { rootDir, buildConfig } = this.devServerOptions;
77
76
  await import_PersistentStorage.persistentStorage.loadData();
78
- this.context = await this.createDevServerContext(rootDir, appName, scheme, devServerConfig);
77
+ this.context = await this.createDevServerContext(rootDir, buildConfig);
79
78
  }
80
79
  listen() {
81
80
  import_logger.logger.trace("DevServer.listen");
@@ -135,7 +134,7 @@ class DevServer {
135
134
  }
136
135
  });
137
136
  app.register(serverPlugins.statusPlugin, { rootDir: this.devServerOptions.rootDir }).register(serverPlugins.debuggerPlugin, { onReload: () => this.wssDelegate?.broadcastCommand("reload") }).register(serverPlugins.serveBundlePlugin, { getBundle: this.getBundle.bind(this) }).register(serverPlugins.symbolicatePlugin, { getBundle: this.getBundle.bind(this) }).register(serverPlugins.indexPagePlugin).addHook("onRequest", inspectorProxy.handleRequest).addHook("onSend", this.setCommonHeaders);
138
- for (const plugin of this.devServerOptions.plugins ?? []) {
137
+ for (const plugin of this.devServerOptions.middlewares ?? []) {
139
138
  app.register(plugin);
140
139
  }
141
140
  new import_wss.WebSocketServerRouter().register("/hot", liveReloadMiddleware.server).register("/debugger-proxy", debuggerProxySocket.server).register("/message", messageSocket.server).register("/events", eventsSocket.server).register("/inspector/device", inspectorProxyWss.deviceSocketServer).register("/inspector/debug", inspectorProxyWss.debuggerSocketServer).setup(app);
@@ -161,10 +160,10 @@ class DevServer {
161
160
  reply.header("Expires", "0");
162
161
  next();
163
162
  }
164
- async createDevServerContext(rootDir, appName, scheme, config) {
163
+ async createDevServerContext(rootDir, buildConfig) {
165
164
  const [androidBundler, iosBundler] = await Promise.all([
166
- (0, import_createBundlerForDevServer.createDevServerForDevServer)({ rootDir, appName, scheme, platform: "android", config }),
167
- (0, import_createBundlerForDevServer.createDevServerForDevServer)({ rootDir, appName, scheme, platform: "ios", config })
165
+ (0, import_createBundlerForDevServer.createBundlerForDevServer)({ rootDir, platform: "android", buildConfig }),
166
+ (0, import_createBundlerForDevServer.createBundlerForDevServer)({ rootDir, platform: "ios", buildConfig })
168
167
  ]);
169
168
  [androidBundler, iosBundler].forEach((bundler) => {
170
169
  bundler.addPlugin(
@@ -180,15 +179,14 @@ class DevServer {
180
179
  );
181
180
  });
182
181
  return {
183
- config,
184
182
  rootDir,
185
183
  android: {
186
184
  bundler: androidBundler,
187
- progressBar: (0, import_progressBar.createProgressBar)(`${appName}:android`)
185
+ progressBar: (0, import_progressBar.createProgressBar)("android")
188
186
  },
189
187
  ios: {
190
188
  bundler: iosBundler,
191
- progressBar: (0, import_progressBar.createProgressBar)(`${appName}:ios`)
189
+ progressBar: (0, import_progressBar.createProgressBar)("ios")
192
190
  }
193
191
  };
194
192
  }
@@ -196,12 +194,13 @@ class DevServer {
196
194
  const { bundler } = this.getContext()[platform];
197
195
  const { bundle } = await bundler.build({ withDispose: false });
198
196
  let targetBundle;
199
- if (this.devServerOptions.preloadBundle != null) {
200
- const sharedBundleContent = await fs.readFile(this.devServerOptions.preloadBundle, "utf-8");
197
+ if (globalThis.remoteBundles != null) {
198
+ const hostBundleContent = bundle.source.text;
199
+ const remoteBundleContent = globalThis.remoteBundles[platform];
201
200
  const mergedBundle = await (0, import_mergeBundles.mergeBundles)({
202
201
  platform,
203
- preloadedBundleContent: sharedBundleContent,
204
- mainBundle: bundle
202
+ hostBundleContent,
203
+ remoteBundleContent
205
204
  });
206
205
  targetBundle = mergedBundle;
207
206
  } else {
@@ -1,10 +1,8 @@
1
+ import type { BuildConfig } from '@granite-js/plugin-core';
1
2
  import { Bundler } from '../../bundler';
2
- import { DevServerConfig } from '../../types';
3
3
  import { Platform } from '../types';
4
- export declare function createDevServerForDevServer({ rootDir, appName, scheme, platform, config, }: {
4
+ export declare function createBundlerForDevServer({ rootDir, platform, buildConfig, }: {
5
5
  rootDir: string;
6
- appName: string;
7
- scheme: string;
8
6
  platform: Platform;
9
- config: DevServerConfig;
7
+ buildConfig: Omit<BuildConfig, 'outfile' | 'platform'>;
10
8
  }): Promise<Bundler>;
@@ -18,58 +18,31 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var createBundlerForDevServer_exports = {};
20
20
  __export(createBundlerForDevServer_exports, {
21
- createDevServerForDevServer: () => createDevServerForDevServer
21
+ createBundlerForDevServer: () => createBundlerForDevServer
22
22
  });
23
23
  module.exports = __toCommonJS(createBundlerForDevServer_exports);
24
24
  var import_bundler = require("../../bundler");
25
25
  var import_getBundleName = require("../../utils/getBundleName");
26
- var import_loadPresets = require("../../utils/loadPresets");
27
26
  var import_constants = require("../constants");
28
- async function createDevServerForDevServer({
27
+ async function createBundlerForDevServer({
29
28
  rootDir,
30
- appName,
31
- scheme,
32
29
  platform,
33
- config
30
+ buildConfig
34
31
  }) {
35
- const tag = "dev-server";
36
- const dev = true;
37
32
  const bundleName = (0, import_getBundleName.getBundleName)(import_constants.DEV_SERVER_BUNDLE_NAME);
38
- const { build } = await (0, import_loadPresets.loadPresets)(
39
- {
40
- tag,
41
- presets: config.presets,
42
- build: {
43
- ...config.build,
44
- platform,
45
- outfile: bundleName
46
- }
47
- },
48
- {
49
- rootDir,
50
- appName,
51
- scheme,
52
- dev
53
- }
54
- );
55
- const bundler = new import_bundler.Bundler({
56
- tag,
33
+ return new import_bundler.Bundler({
57
34
  rootDir,
58
- appName,
59
- scheme,
60
- dev,
35
+ dev: true,
61
36
  cache: true,
62
37
  metafile: false,
63
- buildConfig: build,
64
- services: {
65
- sentry: {
66
- enabled: false
67
- }
38
+ buildConfig: {
39
+ ...buildConfig,
40
+ platform,
41
+ outfile: bundleName
68
42
  }
69
43
  });
70
- return bundler;
71
44
  }
72
45
  // Annotate the CommonJS export names for ESM import in node:
73
46
  0 && (module.exports = {
74
- createDevServerForDevServer
47
+ createBundlerForDevServer
75
48
  });
@@ -1,7 +1,7 @@
1
- import { BundleData } from '../../bundler/types';
1
+ import type { BundleData } from '@granite-js/plugin-core';
2
2
  import { Platform } from '../types';
3
- export declare function mergeBundles({ platform, preloadedBundleContent, mainBundle, }: {
3
+ export declare function mergeBundles({ platform, hostBundleContent, remoteBundleContent, }: {
4
4
  platform: Platform;
5
- preloadedBundleContent: string;
6
- mainBundle: BundleData;
5
+ hostBundleContent: string;
6
+ remoteBundleContent: string;
7
7
  }): Promise<BundleData>;