@granite-js/mpack 0.1.34 → 1.0.0

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 (106) hide show
  1. package/CHANGELOG.md +6 -360
  2. package/dist/bundler/internal/presets.d.ts +4 -1
  3. package/dist/bundler/internal/presets.js +16 -11
  4. package/dist/bundler/plugins/transformPlugin/steps/createFlowStripStep.d.ts +2 -0
  5. package/dist/{vendors/@react-native-community/cli-server-api/createWebSocketEndpoints.js → bundler/plugins/transformPlugin/steps/createFlowStripStep.js} +28 -13
  6. package/dist/bundler/plugins/transformPlugin/steps/createFullyTransformStep.js +0 -1
  7. package/dist/bundler/plugins/transformPlugin/steps/createTransformCodegenStep.d.ts +2 -0
  8. package/dist/bundler/plugins/transformPlugin/steps/createTransformCodegenStep.js +70 -0
  9. package/dist/bundler/plugins/transformPlugin/steps/createTransformToHermesSyntaxStep.d.ts +1 -2
  10. package/dist/bundler/plugins/transformPlugin/steps/createTransformToHermesSyntaxStep.js +5 -19
  11. package/dist/bundler/plugins/transformPlugin/transformPlugin.js +11 -5
  12. package/dist/experimental/index.d.ts +2 -0
  13. package/dist/{server/debugger/parseDomain.js → experimental/index.js} +9 -8
  14. package/dist/{operations/experimental → experimental/operations}/serve.js +19 -67
  15. package/dist/{server → experimental/server}/DevServer.d.ts +3 -3
  16. package/dist/{server → experimental/server}/DevServer.js +58 -41
  17. package/dist/{server → experimental/server}/debugger/DebuggerEventHandler.d.ts +1 -0
  18. package/dist/{server → experimental/server}/debugger/DebuggerEventHandler.js +8 -4
  19. package/dist/{vendors/@react-native/dev-middleware → experimental/server/debugger}/types.d.ts +1 -1
  20. package/dist/{server → experimental/server}/helpers/createBundlerForDevServer.d.ts +1 -1
  21. package/dist/{server → experimental/server}/helpers/createBundlerForDevServer.js +2 -2
  22. package/dist/{server → experimental/server}/helpers/mergeBundles.js +3 -3
  23. package/dist/{server → experimental/server}/middlewares/createLiveReloadMiddleware.js +1 -1
  24. package/dist/{server → experimental/server}/plugins/index.d.ts +0 -1
  25. package/dist/{server → experimental/server}/plugins/index.js +0 -2
  26. package/dist/{server → experimental/server}/plugins/indexPagePlugin.js +1 -1
  27. package/dist/{server → experimental/server}/plugins/reply.js +1 -1
  28. package/dist/{server → experimental/server}/plugins/serveBundlePlugin.js +2 -2
  29. package/dist/{server → experimental/server}/plugins/symbolicatePlugin/symbolicatePlugin.js +2 -2
  30. package/dist/{server → experimental/server}/types.d.ts +2 -2
  31. package/dist/index.d.ts +2 -2
  32. package/dist/index.js +3 -3
  33. package/dist/logger/clientLogger.d.ts +3 -2
  34. package/dist/metro/getMetroConfig.js +5 -5
  35. package/dist/operations/OpenDebuggerKeyboardHandler.d.ts +17 -0
  36. package/dist/operations/OpenDebuggerKeyboardHandler.js +129 -0
  37. package/dist/operations/attachKeyHandlers.d.ts +15 -0
  38. package/dist/operations/attachKeyHandlers.js +132 -0
  39. package/dist/operations/index.d.ts +0 -1
  40. package/dist/operations/index.js +1 -3
  41. package/dist/operations/keyReporter.d.ts +6 -0
  42. package/dist/operations/keyReporter.js +57 -0
  43. package/dist/operations/serve.d.ts +1 -2
  44. package/dist/operations/serve.js +38 -36
  45. package/dist/transformer/AsyncTransformPipeline.js +24 -7
  46. package/dist/transformer/TransformPipeline.d.ts +17 -12
  47. package/dist/transformer/TransformPipeline.js +6 -2
  48. package/dist/utils/getDefaultReactNativePath.d.ts +1 -0
  49. package/dist/utils/getDefaultReactNativePath.js +45 -0
  50. package/dist/utils/getId.js +3 -1
  51. package/dist/vendors/metro/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js +2 -1
  52. package/dist/vendors/metro/src/DeltaBundler/Serializers/sourceMapGenerator.js +3 -1
  53. package/dist/vendors/metro/src/Server.js +119 -11
  54. package/package.json +19 -16
  55. package/src/lib.d.ts +90 -0
  56. package/dist/bundler/plugins/transformPlugin/steps/createStripFlowStep.d.ts +0 -6
  57. package/dist/bundler/plugins/transformPlugin/steps/createStripFlowStep.js +0 -91
  58. package/dist/operations/constants.d.ts +0 -3
  59. package/dist/operations/constants.js +0 -34
  60. package/dist/operations/createDebuggerMiddleware.d.ts +0 -10
  61. package/dist/operations/createDebuggerMiddleware.js +0 -128
  62. package/dist/operations/experimental/StartMenuHandler.d.ts +0 -13
  63. package/dist/operations/experimental/StartMenuHandler.js +0 -86
  64. package/dist/operations/openDebugger.d.ts +0 -1
  65. package/dist/operations/openDebugger.js +0 -74
  66. package/dist/server/debugger/parseDomain.d.ts +0 -1
  67. package/dist/server/plugins/debuggerPlugin.d.ts +0 -7
  68. package/dist/server/plugins/debuggerPlugin.js +0 -68
  69. package/dist/vendors/@react-native/dev-middleware/Device.d.ts +0 -5
  70. package/dist/vendors/@react-native/dev-middleware/Device.js +0 -33
  71. package/dist/vendors/@react-native/dev-middleware/InspectorProxy.d.ts +0 -31
  72. package/dist/vendors/@react-native/dev-middleware/InspectorProxy.js +0 -169
  73. package/dist/vendors/@react-native/dev-middleware/index.d.ts +0 -3
  74. package/dist/vendors/@react-native/dev-middleware/index.js +0 -26
  75. package/dist/vendors/@react-native-community/cli-server-api/createWebSocketEndpoints.d.ts +0 -23
  76. package/dist/vendors/@react-native-community/cli-server-api/index.d.ts +0 -1
  77. package/dist/vendors/@react-native-community/cli-server-api/index.js +0 -22
  78. /package/dist/{operations/experimental → experimental/operations}/serve.d.ts +0 -0
  79. /package/dist/{server → experimental/server}/constants.d.ts +0 -0
  80. /package/dist/{server → experimental/server}/constants.js +0 -0
  81. /package/dist/{server → experimental/server/debugger}/types.js +0 -0
  82. /package/dist/{server → experimental/server}/helpers/mergeBundles.d.ts +0 -0
  83. /package/dist/{server → experimental/server}/index.d.ts +0 -0
  84. /package/dist/{server → experimental/server}/index.js +0 -0
  85. /package/dist/{server → experimental/server}/middlewares/createLiveReloadMiddleware.d.ts +0 -0
  86. /package/dist/{server → experimental/server}/middlewares/index.d.ts +0 -0
  87. /package/dist/{server → experimental/server}/middlewares/index.js +0 -0
  88. /package/dist/{server → experimental/server}/plugins/indexPagePlugin.d.ts +0 -0
  89. /package/dist/{server → experimental/server}/plugins/reply.d.ts +0 -0
  90. /package/dist/{server → experimental/server}/plugins/serveBundlePlugin.d.ts +0 -0
  91. /package/dist/{server → experimental/server}/plugins/statusPlugin.d.ts +0 -0
  92. /package/dist/{server → experimental/server}/plugins/statusPlugin.js +0 -0
  93. /package/dist/{server → experimental/server}/plugins/symbolicatePlugin/index.d.ts +0 -0
  94. /package/dist/{server → experimental/server}/plugins/symbolicatePlugin/index.js +0 -0
  95. /package/dist/{server → experimental/server}/plugins/symbolicatePlugin/parseStackFrame.d.ts +0 -0
  96. /package/dist/{server → experimental/server}/plugins/symbolicatePlugin/parseStackFrame.js +0 -0
  97. /package/dist/{server → experimental/server}/plugins/symbolicatePlugin/symbolicate.d.ts +0 -0
  98. /package/dist/{server → experimental/server}/plugins/symbolicatePlugin/symbolicate.js +0 -0
  99. /package/dist/{server → experimental/server}/plugins/symbolicatePlugin/symbolicatePlugin.d.ts +0 -0
  100. /package/dist/{vendors/@react-native/dev-middleware → experimental/server}/types.js +0 -0
  101. /package/dist/{server → experimental/server}/wss/WebSocketServerDelegate.d.ts +0 -0
  102. /package/dist/{server → experimental/server}/wss/WebSocketServerDelegate.js +0 -0
  103. /package/dist/{server → experimental/server}/wss/WebSocketServerRouter.d.ts +0 -0
  104. /package/dist/{server → experimental/server}/wss/WebSocketServerRouter.js +0 -0
  105. /package/dist/{server → experimental/server}/wss/index.d.ts +0 -0
  106. /package/dist/{server → experimental/server}/wss/index.js +0 -0
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var OpenDebuggerKeyboardHandler_exports = {};
20
+ __export(OpenDebuggerKeyboardHandler_exports, {
21
+ default: () => OpenDebuggerKeyboardHandler
22
+ });
23
+ module.exports = __toCommonJS(OpenDebuggerKeyboardHandler_exports);
24
+ var import_util = require("util");
25
+ class OpenDebuggerKeyboardHandler {
26
+ #devServerUrl;
27
+ #reporter;
28
+ #targetsShownForSelection = null;
29
+ constructor({ devServerUrl, reporter }) {
30
+ this.#devServerUrl = devServerUrl;
31
+ this.#reporter = reporter;
32
+ }
33
+ async #tryOpenDebuggerForTarget(target) {
34
+ this.#targetsShownForSelection = null;
35
+ this.#clearTerminalMenu();
36
+ try {
37
+ const fetchFn = globalThis.fetch;
38
+ if (fetchFn == null) {
39
+ throw new Error("Global fetch is not available");
40
+ }
41
+ await fetchFn(new URL(`/open-debugger?target=${encodeURIComponent(target.id)}`, this.#devServerUrl).href, {
42
+ method: "POST"
43
+ });
44
+ } catch (error) {
45
+ this.#log("error", "Failed to open debugger for %s (%s): %s", target.title, target.description, "Network error");
46
+ if (error instanceof Error && error.cause != null) {
47
+ this.#log("error", "Cause: %s", error.cause);
48
+ }
49
+ this.#clearTerminalMenu();
50
+ }
51
+ }
52
+ async handleOpenDebugger() {
53
+ this.#setTerminalMenu("Fetching available debugging targets...");
54
+ this.#targetsShownForSelection = null;
55
+ try {
56
+ const fetchFn = globalThis.fetch;
57
+ if (fetchFn == null) {
58
+ throw new Error("Global fetch is not available");
59
+ }
60
+ const response = await fetchFn(new URL("/json/list", this.#devServerUrl).href, { method: "POST" });
61
+ if (response.status !== 200) {
62
+ throw new Error(`Unexpected status code: ${response.status}`);
63
+ }
64
+ const targets = await response.json();
65
+ if (!Array.isArray(targets)) {
66
+ throw new Error("Expected array.");
67
+ }
68
+ if (targets.length === 0) {
69
+ this.#log("warn", "No connected targets");
70
+ this.#clearTerminalMenu();
71
+ } else if (targets.length === 1) {
72
+ const target = targets[0];
73
+ if (target) {
74
+ void this.#tryOpenDebuggerForTarget(target);
75
+ } else {
76
+ this.#clearTerminalMenu();
77
+ }
78
+ } else {
79
+ this.#targetsShownForSelection = targets;
80
+ if (targets.length > 9) {
81
+ this.#log("warn", "10 or more debug targets available, showing the first 9.");
82
+ }
83
+ this.#setTerminalMenu(
84
+ `Multiple debug targets available, please select:
85
+ ${targets.slice(0, 9).map(({ title }, index) => `${(0, import_util.styleText)(["white", "inverse"], ` ${index + 1} `)} - "${title}"`).join("\n ")}`
86
+ );
87
+ }
88
+ } catch (error) {
89
+ const message = error instanceof Error ? error.message : String(error);
90
+ this.#log("error", `Failed to fetch debug targets: ${message}`);
91
+ this.#clearTerminalMenu();
92
+ }
93
+ }
94
+ maybeHandleTargetSelection(keyName) {
95
+ if (keyName >= "1" && keyName <= "9") {
96
+ const targetIndex = Number(keyName) - 1;
97
+ if (this.#targetsShownForSelection != null && targetIndex < this.#targetsShownForSelection.length) {
98
+ const target = this.#targetsShownForSelection[targetIndex];
99
+ if (target) {
100
+ void this.#tryOpenDebuggerForTarget(target);
101
+ return true;
102
+ }
103
+ }
104
+ }
105
+ return false;
106
+ }
107
+ dismiss() {
108
+ this.#clearTerminalMenu();
109
+ this.#targetsShownForSelection = null;
110
+ }
111
+ #log(level, ...data) {
112
+ this.#reporter.update({
113
+ type: "unstable_server_log",
114
+ level,
115
+ data
116
+ });
117
+ }
118
+ #setTerminalMenu(message) {
119
+ this.#reporter.update({
120
+ type: "unstable_server_menu_updated",
121
+ message
122
+ });
123
+ }
124
+ #clearTerminalMenu() {
125
+ this.#reporter.update({
126
+ type: "unstable_server_menu_cleared"
127
+ });
128
+ }
129
+ }
@@ -0,0 +1,15 @@
1
+ type MessageSocketEndpoint = {
2
+ broadcast: (type: string, params?: Record<string, unknown> | null) => void;
3
+ };
4
+ type Reporter = {
5
+ update: (event: {
6
+ type: string;
7
+ [key: string]: unknown;
8
+ }) => void;
9
+ };
10
+ export default function attachKeyHandlers({ devServerUrl, messageSocket, reporter, }: {
11
+ devServerUrl: string;
12
+ messageSocket: MessageSocketEndpoint;
13
+ reporter: Reporter;
14
+ }): void;
15
+ export {};
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
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
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var attachKeyHandlers_exports = {};
30
+ __export(attachKeyHandlers_exports, {
31
+ default: () => attachKeyHandlers
32
+ });
33
+ module.exports = __toCommonJS(attachKeyHandlers_exports);
34
+ var import_readline = __toESM(require("readline"));
35
+ var import_tty = require("tty");
36
+ var import_util = require("util");
37
+ var import_OpenDebuggerKeyboardHandler = __toESM(require("./OpenDebuggerKeyboardHandler"));
38
+ const CTRL_C = "";
39
+ const CTRL_D = "";
40
+ const RELOAD_TIMEOUT = 500;
41
+ const throttle = (callback, timeout) => {
42
+ let previousCallTimestamp = 0;
43
+ return () => {
44
+ const currentCallTimestamp = Date.now();
45
+ if (currentCallTimestamp - previousCallTimestamp > timeout) {
46
+ previousCallTimestamp = currentCallTimestamp;
47
+ callback();
48
+ }
49
+ };
50
+ };
51
+ function attachKeyHandlers({
52
+ devServerUrl,
53
+ messageSocket,
54
+ reporter
55
+ }) {
56
+ if (process.stdin.isTTY !== true) {
57
+ reporter.update({
58
+ type: "unstable_server_log",
59
+ level: "info",
60
+ data: "Interactive mode is not supported in this environment"
61
+ });
62
+ return;
63
+ }
64
+ import_readline.default.emitKeypressEvents(process.stdin);
65
+ setRawMode(true);
66
+ const reload = throttle(() => {
67
+ reporter.update({
68
+ type: "unstable_server_log",
69
+ level: "info",
70
+ data: "Reloading connected app(s)..."
71
+ });
72
+ messageSocket.broadcast("reload", null);
73
+ }, RELOAD_TIMEOUT);
74
+ const openDebuggerKeyboardHandler = new import_OpenDebuggerKeyboardHandler.default({
75
+ reporter,
76
+ devServerUrl
77
+ });
78
+ process.stdin.on("keypress", (_str, key) => {
79
+ void _str;
80
+ const keyName = key?.name;
81
+ if (keyName && openDebuggerKeyboardHandler.maybeHandleTargetSelection(keyName)) {
82
+ return;
83
+ }
84
+ switch (key?.sequence) {
85
+ case "r":
86
+ reload();
87
+ break;
88
+ case "d":
89
+ reporter.update({
90
+ type: "unstable_server_log",
91
+ level: "info",
92
+ data: "Opening Dev Menu..."
93
+ });
94
+ messageSocket.broadcast("devMenu", null);
95
+ break;
96
+ case "j":
97
+ void openDebuggerKeyboardHandler.handleOpenDebugger();
98
+ break;
99
+ case CTRL_C:
100
+ case CTRL_D:
101
+ openDebuggerKeyboardHandler.dismiss();
102
+ reporter.update({
103
+ type: "unstable_server_log",
104
+ level: "info",
105
+ data: "Stopping server"
106
+ });
107
+ setRawMode(false);
108
+ process.stdin.pause();
109
+ process.emit("SIGINT");
110
+ process.exit();
111
+ }
112
+ });
113
+ reporter.update({
114
+ type: "unstable_server_log",
115
+ level: "info",
116
+ data: `Key commands available:
117
+
118
+ ${(0, import_util.styleText)(["bold", "inverse"], " r ")} - reload app(s)
119
+ ${(0, import_util.styleText)(
120
+ ["bold", "inverse"],
121
+ " d "
122
+ )} - open Dev Menu
123
+ ${(0, import_util.styleText)(["bold", "inverse"], " j ")} - open DevTools
124
+ `
125
+ });
126
+ }
127
+ function setRawMode(enable) {
128
+ if (!(process.stdin instanceof import_tty.ReadStream)) {
129
+ throw new Error("process.stdin must be a readable stream to modify raw mode");
130
+ }
131
+ process.stdin.setRawMode(enable);
132
+ }
@@ -1,3 +1,2 @@
1
1
  export * as BuildUtils from './build';
2
2
  export * from './serve';
3
- export * from './experimental/serve';
@@ -34,10 +34,8 @@ __export(operations_exports, {
34
34
  module.exports = __toCommonJS(operations_exports);
35
35
  var BuildUtils = __toESM(require("./build"));
36
36
  __reExport(operations_exports, require("./serve"), module.exports);
37
- __reExport(operations_exports, require("./experimental/serve"), module.exports);
38
37
  // Annotate the CommonJS export names for ESM import in node:
39
38
  0 && (module.exports = {
40
39
  BuildUtils,
41
- ...require("./serve"),
42
- ...require("./experimental/serve")
40
+ ...require("./serve")
43
41
  });
@@ -0,0 +1,6 @@
1
+ export declare const keyReporter: {
2
+ update(event: {
3
+ type: string;
4
+ [key: string]: unknown;
5
+ }): void;
6
+ };
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var keyReporter_exports = {};
20
+ __export(keyReporter_exports, {
21
+ keyReporter: () => keyReporter
22
+ });
23
+ module.exports = __toCommonJS(keyReporter_exports);
24
+ const keyReporter = {
25
+ update(event) {
26
+ switch (event.type) {
27
+ case "unstable_server_log": {
28
+ const level = typeof event.level === "string" ? event.level : "info";
29
+ const data = event.data;
30
+ const output = typeof data === "string" ? data : Array.isArray(data) ? data.map(String).join(" ") : String(data);
31
+ if (level === "error") {
32
+ console.error(output);
33
+ } else if (level === "warn") {
34
+ console.warn(output);
35
+ } else {
36
+ console.log(output);
37
+ }
38
+ break;
39
+ }
40
+ case "unstable_server_menu_updated": {
41
+ const message = event.message;
42
+ if (typeof message === "string") {
43
+ console.log(message);
44
+ }
45
+ break;
46
+ }
47
+ case "unstable_server_menu_cleared":
48
+ break;
49
+ default:
50
+ break;
51
+ }
52
+ }
53
+ };
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ keyReporter
57
+ });
@@ -3,8 +3,7 @@ interface RunServerConfig {
3
3
  config: CompleteGraniteConfig;
4
4
  host?: string;
5
5
  port?: number;
6
- enableEmbeddedReactDevTools?: boolean;
7
6
  onServerReady?: () => Promise<void> | void;
8
7
  }
9
- export declare function runServer({ config, host, port, enableEmbeddedReactDevTools, onServerReady, }: RunServerConfig): Promise<void>;
8
+ export declare function runServer({ config, host, port, onServerReady, }: RunServerConfig): Promise<void>;
10
9
  export {};
@@ -32,11 +32,12 @@ __export(serve_exports, {
32
32
  });
33
33
  module.exports = __toCommonJS(serve_exports);
34
34
  var import_plugin_core = require("@granite-js/plugin-core");
35
+ var import_dev_middleware = require("@react-native/dev-middleware");
35
36
  var import_cli_server_api = require("@react-native-community/cli-server-api");
36
37
  var import_debug = __toESM(require("debug"));
37
- var import_backend = require("react-native-devtools-standalone/backend");
38
- var import_createDebuggerMiddleware = require("./createDebuggerMiddleware");
38
+ var import_attachKeyHandlers = __toESM(require("./attachKeyHandlers"));
39
39
  var import_constants = require("../constants");
40
+ var import_keyReporter = require("./keyReporter");
40
41
  var import_getMetroConfig = require("../metro/getMetroConfig");
41
42
  var import_printLogo = require("../utils/printLogo");
42
43
  var import_printServerUrl = require("../utils/printServerUrl");
@@ -49,13 +50,32 @@ async function runServer({
49
50
  config,
50
51
  host = import_constants.DEV_SERVER_DEFAULT_HOST,
51
52
  port = import_constants.DEV_SERVER_DEFAULT_PORT,
52
- enableEmbeddedReactDevTools = true,
53
53
  onServerReady
54
54
  }) {
55
+ const devServerHostname = host === "0.0.0.0" ? "localhost" : host;
56
+ const devServerUrl = new URL(`http://${devServerHostname}:${port}`).origin;
57
+ let keyHandlersAttached = false;
55
58
  const ref = {};
56
59
  const driver = (0, import_plugin_core.createPluginHooksDriver)(config);
57
60
  const terminal = new Terminal(process.stdout);
58
61
  const terminalReporter = new TerminalReporter(terminal);
62
+ const resolvedConfig = await (0, import_plugin_core.resolveConfig)(config);
63
+ const { middlewares = [], inspectorProxy, ...additionalMetroConfig } = resolvedConfig?.metro ?? {};
64
+ const baseConfig = await (0, import_getMetroConfig.getMetroConfig)({ rootPath: config.cwd }, additionalMetroConfig);
65
+ const metroConfig = mergeConfig(baseConfig, {
66
+ server: { port }
67
+ });
68
+ metroConfig.server.runInspectorProxy = false;
69
+ const {
70
+ middleware,
71
+ websocketEndpoints: communityWebsocketEndpoints,
72
+ eventsSocketEndpoint,
73
+ messageSocketEndpoint
74
+ } = (0, import_cli_server_api.createDevServerMiddleware)({
75
+ host,
76
+ port,
77
+ watchFolders: metroConfig.watchFolders
78
+ });
59
79
  const reporter = {
60
80
  async update(event) {
61
81
  debug("Reporter event", event);
@@ -69,9 +89,16 @@ async function runServer({
69
89
  (0, import_printLogo.printLogo)();
70
90
  break;
71
91
  case "initialize_done":
72
- enableStdinWatchMode();
73
92
  await driver.devServer.post({ host, port });
74
93
  (0, import_printServerUrl.printServerUrl)({ host, port });
94
+ if (!keyHandlersAttached) {
95
+ keyHandlersAttached = true;
96
+ (0, import_attachKeyHandlers.default)({
97
+ devServerUrl,
98
+ messageSocket: messageSocketEndpoint,
99
+ reporter: import_keyReporter.keyReporter
100
+ });
101
+ }
75
102
  await onServerReady?.();
76
103
  break;
77
104
  default:
@@ -79,24 +106,11 @@ async function runServer({
79
106
  }
80
107
  }
81
108
  };
82
- const resolvedConfig = await (0, import_plugin_core.resolveConfig)(config);
83
- const { middlewares = [], inspectorProxy, ...additionalMetroConfig } = resolvedConfig?.metro ?? {};
84
- const baseConfig = await (0, import_getMetroConfig.getMetroConfig)({ rootPath: config.cwd }, additionalMetroConfig);
85
- const metroConfig = mergeConfig(baseConfig, {
86
- server: { port },
87
- reporter
88
- });
89
- const { middleware, websocketEndpoints, messageSocketEndpoint, eventsSocketEndpoint } = (0, import_cli_server_api.createDevServerMiddleware)({
90
- host,
91
- port,
92
- watchFolders: metroConfig.watchFolders
93
- });
94
- const { middleware: debuggerMiddleware, enableStdinWatchMode } = (0, import_createDebuggerMiddleware.createDebuggerMiddleware)({
95
- port,
96
- broadcastMessage: messageSocketEndpoint.broadcast
109
+ metroConfig.reporter = reporter;
110
+ const { middleware: debuggerMiddleware, websocketEndpoints: debuggerWebSocketEndpoints } = (0, import_dev_middleware.createDevMiddleware)({
111
+ serverBaseUrl: devServerUrl
97
112
  });
98
113
  middleware.use(debuggerMiddleware);
99
- middleware.use(import_cli_server_api.indexPageMiddleware);
100
114
  const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;
101
115
  metroConfig.server.enhanceMiddleware = (metroMiddleware, server) => {
102
116
  if (customEnhanceMiddleware) {
@@ -107,26 +121,14 @@ async function runServer({
107
121
  }
108
122
  return middleware.use(metroMiddleware);
109
123
  };
110
- if (enableEmbeddedReactDevTools) {
111
- await (0, import_backend.setupDevToolsProxy)({
112
- client: {
113
- delegate: {
114
- onError: (error) => console.error("React DevTools client error", error)
115
- }
116
- },
117
- devtools: {
118
- delegate: {
119
- onError: (error) => console.error("React DevTools frontend error", error)
120
- }
121
- }
122
- });
123
- }
124
124
  ref.reportEvent = eventsSocketEndpoint.reportEvent;
125
- ref.enableStdinWatchMode = enableStdinWatchMode;
126
125
  await driver.devServer.pre({ host, port });
127
126
  const serverInstance = await Metro.runServer(metroConfig, {
128
127
  host,
129
- websocketEndpoints,
128
+ websocketEndpoints: {
129
+ ...communityWebsocketEndpoints,
130
+ ...debuggerWebSocketEndpoints
131
+ },
130
132
  inspectorProxyDelegate: inspectorProxy?.delegate
131
133
  });
132
134
  serverInstance.keepAliveTimeout = 3e4;
@@ -33,19 +33,36 @@ class AsyncTransformPipeline extends import_TransformPipeline.TransformPipeline
33
33
  return this._afterStep ? this._afterStep(code2, args2, context2) : Promise.resolve({ code: code2, done: true });
34
34
  };
35
35
  let result = await before(code, args, context);
36
- for await (const [step, config] of this.steps) {
36
+ for await (const entry of this.steps) {
37
37
  if (result.done) {
38
38
  break;
39
39
  }
40
- if (config?.conditions == null || Array.isArray(config?.conditions) && config.conditions.some((condition) => condition(result.code, args.path))) {
40
+ if (entry.type === "normal" && entry.step) {
41
41
  let trace;
42
- if (typeof step.name === "string") {
43
- trace = import_performance.Performance.trace(`step-${step.name}`, { detail: { file: args.path } });
42
+ if (typeof entry.step.name === "string") {
43
+ trace = import_performance.Performance.trace(`step-${entry.step.name}`, { detail: { file: args.path } });
44
44
  }
45
- result = await step(result.code, args, context);
45
+ result = await entry.step(result.code, args, context);
46
46
  trace?.stop();
47
- if (config?.skipOtherSteps) {
48
- break;
47
+ } else if (entry.type === "conditional" && entry.condition) {
48
+ const condition = entry.condition;
49
+ if (condition.if({ path: args.path, code: result.code })) {
50
+ let trace;
51
+ if (typeof condition.then.name === "string") {
52
+ trace = import_performance.Performance.trace(`step-${condition.then.name}`, { detail: { file: args.path } });
53
+ }
54
+ result = await condition.then(result.code, args, context);
55
+ trace?.stop();
56
+ if (condition.stopAfter) {
57
+ break;
58
+ }
59
+ } else if (condition.else) {
60
+ let trace;
61
+ if (typeof condition.else.name === "string") {
62
+ trace = import_performance.Performance.trace(`step-${condition.else.name}`, { detail: { file: args.path } });
63
+ }
64
+ result = await condition.else(result.code, args, context);
65
+ trace?.stop();
49
66
  }
50
67
  }
51
68
  }
@@ -13,24 +13,29 @@ interface TransformStep<TransformResult> {
13
13
  (code: string, args: TransformStepArgs, context: TransformStepContext): TransformResult;
14
14
  name?: string;
15
15
  }
16
- interface TransformStepConfig {
17
- /**
18
- * step 을 실행하기 위한 조건 (기본값: 항상 실행)
19
- */
20
- conditions?: Array<(code: string, path: string) => boolean>;
21
- /**
22
- * 현재 step 이 실행된 경우 done 처리 여부 (기본값: false)
23
- */
24
- skipOtherSteps?: boolean;
25
- }
26
16
  export type AsyncTransformStep = TransformStep<Promise<TransformStepResult>>;
17
+ export interface ConditionalStep {
18
+ if: (args: {
19
+ path: string;
20
+ code: string;
21
+ }) => boolean;
22
+ then: AsyncTransformStep;
23
+ else?: AsyncTransformStep;
24
+ stopAfter?: boolean;
25
+ }
26
+ export type StepInput = AsyncTransformStep | ConditionalStep;
27
+ interface StepEntry {
28
+ type: 'normal' | 'conditional';
29
+ step?: AsyncTransformStep;
30
+ condition?: ConditionalStep;
31
+ }
27
32
  export declare abstract class TransformPipeline<Step extends TransformStep<unknown>> {
28
33
  protected _beforeStep?: Step;
29
34
  protected _afterStep?: Step;
30
- protected steps: Array<[Step, TransformStepConfig | null]>;
35
+ protected steps: StepEntry[];
31
36
  beforeStep(step: Step): this;
32
37
  afterStep(step: Step): this;
33
- addStep(step: Step, config?: TransformStepConfig): this;
38
+ addStep(step: StepInput): this;
34
39
  getStepContext(args: TransformStepArgs): Promise<TransformStepContext>;
35
40
  abstract transform(code: string, args: TransformStepArgs): ReturnType<Step>;
36
41
  }
@@ -46,8 +46,12 @@ class TransformPipeline {
46
46
  this._afterStep = step;
47
47
  return this;
48
48
  }
49
- addStep(step, config) {
50
- this.steps.push([step, config ?? null]);
49
+ addStep(step) {
50
+ if (typeof step === "function") {
51
+ this.steps.push({ type: "normal", step });
52
+ } else {
53
+ this.steps.push({ type: "conditional", condition: step });
54
+ }
51
55
  return this;
52
56
  }
53
57
  async getStepContext(args) {
@@ -0,0 +1 @@
1
+ export declare function getDefaultReactNativePath(rootDir: string): string;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
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
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var getDefaultReactNativePath_exports = {};
30
+ __export(getDefaultReactNativePath_exports, {
31
+ getDefaultReactNativePath: () => getDefaultReactNativePath
32
+ });
33
+ module.exports = __toCommonJS(getDefaultReactNativePath_exports);
34
+ var import_path = __toESM(require("path"));
35
+ function getDefaultReactNativePath(rootDir) {
36
+ return import_path.default.dirname(
37
+ require.resolve("react-native/package.json", {
38
+ paths: [rootDir]
39
+ })
40
+ );
41
+ }
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ getDefaultReactNativePath
45
+ });
@@ -37,7 +37,9 @@ function getId(bundleConfig) {
37
37
  bundleConfig.buildConfig.esbuild?.loader,
38
38
  bundleConfig.buildConfig.esbuild?.resolveExtensions,
39
39
  bundleConfig.buildConfig.esbuild?.mainFields,
40
- bundleConfig.buildConfig.esbuild?.conditions
40
+ bundleConfig.buildConfig.esbuild?.conditions,
41
+ bundleConfig.buildConfig.extra?.skipReactNativePolyfills,
42
+ bundleConfig.buildConfig.extra?.skipReactNativeInitializeCore
41
43
  ])
42
44
  );
43
45
  }
@@ -3,7 +3,8 @@ const { getJsOutput } = require("./js");
3
3
  function getSourceMapInfo(module2, options) {
4
4
  return {
5
5
  ...getJsOutput(module2).data,
6
- path: module2.path,
6
+ // MARK: - 0.81
7
+ path: options.getSourceUrl(module2) ?? module2.path,
7
8
  source: options.excludeSource ? "" : getModuleSource(module2)
8
9
  };
9
10
  }