@granite-js/mpack 0.1.23 → 0.1.25
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/CHANGELOG.md +18 -0
- package/dist/operations/serve.js +3 -2
- package/dist/server/DevServer.js +1 -1
- package/dist/server/debugger/DebuggerEventHandler.d.ts +3 -0
- package/dist/server/debugger/DebuggerEventHandler.js +19 -8
- package/dist/server/types.d.ts +2 -1
- package/dist/vendors/metro/src/index.flow.js +3 -1
- package/dist/vendors/metro-inspector-proxy/src/Device.js +17 -11
- package/dist/vendors/metro-inspector-proxy/src/InspectorProxy.js +8 -2
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @granite-js/mpack
|
|
2
2
|
|
|
3
|
+
## 0.1.25
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- @granite-js/devtools-frontend@0.1.25
|
|
8
|
+
- @granite-js/plugin-core@0.1.25
|
|
9
|
+
- @granite-js/utils@0.1.25
|
|
10
|
+
|
|
11
|
+
## 0.1.24
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 6e42c3d: add inspectorProxy options
|
|
16
|
+
- Updated dependencies [6e42c3d]
|
|
17
|
+
- @granite-js/plugin-core@0.1.24
|
|
18
|
+
- @granite-js/devtools-frontend@0.1.24
|
|
19
|
+
- @granite-js/utils@0.1.24
|
|
20
|
+
|
|
3
21
|
## 0.1.23
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/operations/serve.js
CHANGED
|
@@ -80,7 +80,7 @@ async function runServer({
|
|
|
80
80
|
}
|
|
81
81
|
};
|
|
82
82
|
const resolvedConfig = await (0, import_plugin_core.resolveConfig)(config);
|
|
83
|
-
const { middlewares = [], ...additionalMetroConfig } = resolvedConfig?.metro ?? {};
|
|
83
|
+
const { middlewares = [], inspectorProxy, ...additionalMetroConfig } = resolvedConfig?.metro ?? {};
|
|
84
84
|
const baseConfig = await (0, import_getMetroConfig.getMetroConfig)({ rootPath: config.cwd }, additionalMetroConfig);
|
|
85
85
|
const metroConfig = mergeConfig(baseConfig, {
|
|
86
86
|
server: { port },
|
|
@@ -126,7 +126,8 @@ async function runServer({
|
|
|
126
126
|
await driver.devServer.pre({ host, port });
|
|
127
127
|
const serverInstance = await Metro.runServer(metroConfig, {
|
|
128
128
|
host,
|
|
129
|
-
websocketEndpoints
|
|
129
|
+
websocketEndpoints,
|
|
130
|
+
inspectorProxyDelegate: inspectorProxy?.delegate
|
|
130
131
|
});
|
|
131
132
|
serverInstance.keepAliveTimeout = 3e4;
|
|
132
133
|
}
|
package/dist/server/DevServer.js
CHANGED
|
@@ -99,7 +99,7 @@ class DevServer {
|
|
|
99
99
|
async setup(app) {
|
|
100
100
|
const baseRoot = this.devServerOptions.rootDir;
|
|
101
101
|
const serverBaseUrl = this.getBaseUrl();
|
|
102
|
-
const debuggerEventHandler = new import_DebuggerEventHandler.DebuggerEventHandler();
|
|
102
|
+
const debuggerEventHandler = new import_DebuggerEventHandler.DebuggerEventHandler(this.devServerOptions.inspectorProxy?.delegate);
|
|
103
103
|
const inspectorProxy = new import_dev_middleware.InspectorProxy({ root: baseRoot, serverBaseUrl });
|
|
104
104
|
const inspectorProxyWss = inspectorProxy.createWebSocketServers({
|
|
105
105
|
onDeviceWebSocketConnected: (socket) => {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import type { InspectorProxyConfig } from '@granite-js/plugin-core';
|
|
1
2
|
import * as ws from 'ws';
|
|
2
3
|
export declare class DebuggerEventHandler {
|
|
4
|
+
private delegate?;
|
|
3
5
|
private networkResponseData;
|
|
6
|
+
constructor(delegate?: InspectorProxyConfig['delegate']);
|
|
4
7
|
setDeviceWebSocketHandler(socket: ws.WebSocket): void;
|
|
5
8
|
setDebuggerWebSocketHandler(socket: ws.WebSocket): void;
|
|
6
9
|
/**
|
|
@@ -35,6 +35,9 @@ var import_debug = __toESM(require("debug"));
|
|
|
35
35
|
var import_parseDomain = require("./parseDomain");
|
|
36
36
|
const debug = (0, import_debug.default)("dev-server:debugger");
|
|
37
37
|
class DebuggerEventHandler {
|
|
38
|
+
constructor(delegate) {
|
|
39
|
+
this.delegate = delegate;
|
|
40
|
+
}
|
|
38
41
|
networkResponseData = /* @__PURE__ */ new Map();
|
|
39
42
|
setDeviceWebSocketHandler(socket) {
|
|
40
43
|
socket.on("message", (message) => this.handleDeviceMessage(socket, message));
|
|
@@ -92,12 +95,15 @@ class DebuggerEventHandler {
|
|
|
92
95
|
return null;
|
|
93
96
|
}
|
|
94
97
|
}
|
|
95
|
-
handleDeviceMessage(
|
|
98
|
+
handleDeviceMessage(socket, message) {
|
|
96
99
|
const customEvent = this.safetyParseCustomEvent(message);
|
|
97
100
|
if (customEvent == null) {
|
|
98
101
|
return;
|
|
99
102
|
}
|
|
100
103
|
debug("handleDeviceMessage", customEvent);
|
|
104
|
+
if (this.delegate?.onDeviceMessage?.(customEvent, socket)) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
101
107
|
switch (customEvent.method) {
|
|
102
108
|
case "Bedrock.networkResponseData":
|
|
103
109
|
case "Granite.networkResponseData":
|
|
@@ -106,17 +112,22 @@ class DebuggerEventHandler {
|
|
|
106
112
|
}
|
|
107
113
|
}
|
|
108
114
|
handleDebuggerMessage(socket, message) {
|
|
109
|
-
let handled
|
|
115
|
+
let handled;
|
|
110
116
|
const debuggerEvent = this.safetyParseDebuggerEvent(message);
|
|
111
117
|
if (debuggerEvent == null) {
|
|
112
118
|
return;
|
|
113
119
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
+
if (this.delegate?.onDebuggerMessage?.(debuggerEvent, socket)) {
|
|
121
|
+
handled = true;
|
|
122
|
+
} else {
|
|
123
|
+
switch (debuggerEvent.method) {
|
|
124
|
+
case "Network.getResponseBody":
|
|
125
|
+
this.handleGetResponseBody(socket, debuggerEvent);
|
|
126
|
+
handled = true;
|
|
127
|
+
break;
|
|
128
|
+
default:
|
|
129
|
+
handled = false;
|
|
130
|
+
}
|
|
120
131
|
}
|
|
121
132
|
if (handled) {
|
|
122
133
|
debug("handleDebuggerMessage", debuggerEvent);
|
package/dist/server/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Middleware, BuildConfig } from '@granite-js/plugin-core';
|
|
1
|
+
import type { Middleware, BuildConfig, InspectorProxyConfig } from '@granite-js/plugin-core';
|
|
2
2
|
import type { Bundler } from '../bundler';
|
|
3
3
|
import type { BuildStatusProgressBar } from '../utils/progressBar';
|
|
4
4
|
export type Platform = 'android' | 'ios';
|
|
@@ -8,6 +8,7 @@ export interface DevServerOptions {
|
|
|
8
8
|
port?: number;
|
|
9
9
|
buildConfig: Omit<BuildConfig, 'platform' | 'outfile'>;
|
|
10
10
|
middlewares?: Middleware[];
|
|
11
|
+
inspectorProxy?: InspectorProxyConfig;
|
|
11
12
|
}
|
|
12
13
|
export interface DevServerContext {
|
|
13
14
|
rootDir: string;
|
|
@@ -94,6 +94,8 @@ exports.runServer = async (config, {
|
|
|
94
94
|
// deprecated
|
|
95
95
|
secureKey,
|
|
96
96
|
// deprecated
|
|
97
|
+
inspectorProxyDelegate,
|
|
98
|
+
// MARK: - GRANITE
|
|
97
99
|
waitForBundler = false,
|
|
98
100
|
websocketEndpoints = {}
|
|
99
101
|
}) => {
|
|
@@ -113,7 +115,7 @@ exports.runServer = async (config, {
|
|
|
113
115
|
serverApp.use(middleware);
|
|
114
116
|
let inspectorProxy = null;
|
|
115
117
|
if (config.server.runInspectorProxy) {
|
|
116
|
-
inspectorProxy = new InspectorProxy(config.projectRoot);
|
|
118
|
+
inspectorProxy = new InspectorProxy(config.projectRoot, inspectorProxyDelegate);
|
|
117
119
|
}
|
|
118
120
|
let httpServer;
|
|
119
121
|
if (secure || secureServerOptions != null) {
|
|
@@ -55,15 +55,18 @@ class Device {
|
|
|
55
55
|
// Root of the project used for relative to absolute source path conversion.
|
|
56
56
|
_projectRoot;
|
|
57
57
|
// MARK: - GRANITE
|
|
58
|
+
_delegate;
|
|
59
|
+
// MARK: - GRANITE
|
|
58
60
|
// 네트워크 응답 데이터 저장하기 위한 변수 (key: requestId, value: { data: string, base64Encoded: bool })
|
|
59
61
|
_networkResponseData = /* @__PURE__ */ new Map();
|
|
60
|
-
constructor(id, name, app, socket, projectRoot) {
|
|
62
|
+
constructor(id, name, app, socket, projectRoot, delegate) {
|
|
61
63
|
this._id = id;
|
|
62
64
|
this._name = name;
|
|
63
65
|
this._app = app;
|
|
64
66
|
this._pages = [];
|
|
65
67
|
this._deviceSocket = socket;
|
|
66
68
|
this._projectRoot = projectRoot;
|
|
69
|
+
this._delegate = delegate;
|
|
67
70
|
this._deviceSocket.on("message", (message) => {
|
|
68
71
|
const parsedMessage = JSON.parse(message);
|
|
69
72
|
if (parsedMessage.event === "getPages") {
|
|
@@ -254,6 +257,9 @@ class Device {
|
|
|
254
257
|
}
|
|
255
258
|
// Allows to make changes in incoming message from device.
|
|
256
259
|
_processMessageFromDevice(payload, debuggerInfo) {
|
|
260
|
+
if (this._delegate?.onDeviceMessage?.(payload, debuggerInfo.socket)) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
257
263
|
if (payload.method === "Debugger.scriptParsed") {
|
|
258
264
|
const params = payload.params || {};
|
|
259
265
|
if ("sourceMapURL" in params) {
|
|
@@ -314,6 +320,9 @@ class Device {
|
|
|
314
320
|
// Allows to make changes in incoming messages from debugger.
|
|
315
321
|
_interceptMessageFromDebugger(req, debuggerInfo) {
|
|
316
322
|
let response = null;
|
|
323
|
+
if (this._delegate?.onDebuggerMessage?.(req, debuggerInfo.socket)) {
|
|
324
|
+
return null;
|
|
325
|
+
}
|
|
317
326
|
if (req.method === "Debugger.setBreakpointByUrl") {
|
|
318
327
|
this._processDebuggerSetBreakpointByUrl(req, debuggerInfo);
|
|
319
328
|
} else if (req.method === "Debugger.getScriptSource") {
|
|
@@ -322,25 +331,22 @@ class Device {
|
|
|
322
331
|
result: this._processDebuggerGetScriptSource(req)
|
|
323
332
|
};
|
|
324
333
|
} else if (req.method === "Network.getResponseBody") {
|
|
325
|
-
|
|
334
|
+
response = this._processDebuggerGetResponseBody(req, debuggerInfo.socket);
|
|
326
335
|
}
|
|
327
336
|
return response;
|
|
328
337
|
}
|
|
329
338
|
// MARK: - GRANITE
|
|
330
|
-
_processDebuggerGetResponseBody(req
|
|
339
|
+
_processDebuggerGetResponseBody(req) {
|
|
331
340
|
const { requestId } = req.params;
|
|
332
341
|
if (this._networkResponseData.has(requestId)) {
|
|
333
342
|
const responseData = this._networkResponseData.get(requestId);
|
|
334
343
|
this._networkResponseData.delete(requestId);
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
})
|
|
340
|
-
);
|
|
341
|
-
return true;
|
|
344
|
+
return {
|
|
345
|
+
id: req.id,
|
|
346
|
+
result: this._createNetworkResponseData(responseData)
|
|
347
|
+
};
|
|
342
348
|
}
|
|
343
|
-
return
|
|
349
|
+
return null;
|
|
344
350
|
}
|
|
345
351
|
// MARK: - GRANITE
|
|
346
352
|
_createNetworkResponseData(responseData) {
|
|
@@ -12,6 +12,8 @@ const INTERNAL_ERROR_CODE = 1011;
|
|
|
12
12
|
class InspectorProxy {
|
|
13
13
|
// MARK: - GRANITE
|
|
14
14
|
static devices;
|
|
15
|
+
// MARK: - GRANITE
|
|
16
|
+
_delegate;
|
|
15
17
|
// Root of the project used for relative to absolute source path conversion.
|
|
16
18
|
_projectRoot;
|
|
17
19
|
// MARK: - GRANITE
|
|
@@ -24,8 +26,9 @@ class InspectorProxy {
|
|
|
24
26
|
// (devtoolsFrontendUrl and webSocketDebuggerUrl) for page descriptions. These URLs are used
|
|
25
27
|
// by debugger to know where to connect.
|
|
26
28
|
_serverAddressWithPort = "";
|
|
27
|
-
constructor(projectRoot) {
|
|
29
|
+
constructor(projectRoot, delegate) {
|
|
28
30
|
this._projectRoot = projectRoot;
|
|
31
|
+
this._delegate = delegate;
|
|
29
32
|
InspectorProxy.devices = /* @__PURE__ */ new Map();
|
|
30
33
|
}
|
|
31
34
|
// Process HTTP request sent to server. We only respond to 2 HTTP requests:
|
|
@@ -106,7 +109,10 @@ class InspectorProxy {
|
|
|
106
109
|
const deviceName = query.name || "Unknown";
|
|
107
110
|
const appName = query.app || "Unknown";
|
|
108
111
|
const deviceId = this._deviceCounter++;
|
|
109
|
-
InspectorProxy.devices.set(
|
|
112
|
+
InspectorProxy.devices.set(
|
|
113
|
+
deviceId,
|
|
114
|
+
new Device(deviceId, deviceName, appName, socket, this._projectRoot, this._delegate)
|
|
115
|
+
);
|
|
110
116
|
debug(`Got new connection: device=${deviceName}, app=${appName}`);
|
|
111
117
|
socket.on("close", () => {
|
|
112
118
|
InspectorProxy.devices.delete(deviceId);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@granite-js/mpack",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.25",
|
|
4
4
|
"description": "A bundler for Granite apps",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -84,9 +84,9 @@
|
|
|
84
84
|
"@babel/traverse": "^7.14.0",
|
|
85
85
|
"@babel/types": "^7.0.0",
|
|
86
86
|
"@fastify/static": "7.0.1",
|
|
87
|
-
"@granite-js/devtools-frontend": "0.1.
|
|
88
|
-
"@granite-js/plugin-core": "0.1.
|
|
89
|
-
"@granite-js/utils": "0.1.
|
|
87
|
+
"@granite-js/devtools-frontend": "0.1.25",
|
|
88
|
+
"@granite-js/plugin-core": "0.1.25",
|
|
89
|
+
"@granite-js/utils": "0.1.25",
|
|
90
90
|
"@inquirer/prompts": "^7.2.3",
|
|
91
91
|
"@react-native-community/cli-plugin-metro": "11.3.7",
|
|
92
92
|
"@react-native-community/cli-server-api": "11.3.7",
|