@vxrn/vite-plugin-metro 1.17.6 → 1.17.9-1779398888939

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.
@@ -105,6 +105,14 @@ function ensureProcessExitsAfterDelay(waitUntilExitMs = 1e4, startedAtMs = Date.
105
105
  }
106
106
  debug(`process is trying to exit, but is stuck on unexpected active resources:`, unexpectedActiveResources);
107
107
  const elapsedTime = Date.now() - startedAtMs;
108
+ const killedChildren = killActiveChildProcesses(elapsedTime < 200 ? "SIGTERM" : "SIGKILL");
109
+ if (killedChildren > 0) {
110
+ const recheck = setTimeout(() => {
111
+ clearTimeout(recheck);
112
+ ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
113
+ }, 50);
114
+ return;
115
+ }
108
116
  if (elapsedTime > waitUntilExitMs) {
109
117
  debug("active handles detected past the exit delay, forcefully exiting:", activeResources);
110
118
  tryWarnActiveProcesses();
@@ -115,6 +123,22 @@ function ensureProcessExitsAfterDelay(waitUntilExitMs = 1e4, startedAtMs = Date.
115
123
  ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
116
124
  }, 100);
117
125
  }
126
+ function killActiveChildProcesses(signal) {
127
+ try {
128
+ const children = import_node_process.default._getActiveHandles().filter(handle => handle instanceof import_node_child_process.ChildProcess);
129
+ for (const child of children) {
130
+ try {
131
+ child.kill(signal);
132
+ } catch (err) {
133
+ debug("failed to kill child process:", err);
134
+ }
135
+ }
136
+ return children.length;
137
+ } catch (err) {
138
+ debug("failed to enumerate active child processes:", err);
139
+ return 0;
140
+ }
141
+ }
118
142
  function tryWarnActiveProcesses() {
119
143
  let activeProcesses = [];
120
144
  try {
@@ -178,6 +178,14 @@ function ensureProcessExitsAfterDelay() {
178
178
  }
179
179
  debug(`process is trying to exit, but is stuck on unexpected active resources:`, unexpectedActiveResources);
180
180
  var elapsedTime = Date.now() - startedAtMs;
181
+ var killedChildren = killActiveChildProcesses(elapsedTime < 200 ? "SIGTERM" : "SIGKILL");
182
+ if (killedChildren > 0) {
183
+ var recheck = setTimeout(function () {
184
+ clearTimeout(recheck);
185
+ ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
186
+ }, 50);
187
+ return;
188
+ }
181
189
  if (elapsedTime > waitUntilExitMs) {
182
190
  debug("active handles detected past the exit delay, forcefully exiting:", activeResources);
183
191
  tryWarnActiveProcesses();
@@ -188,6 +196,43 @@ function ensureProcessExitsAfterDelay() {
188
196
  ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
189
197
  }, 100);
190
198
  }
199
+ function killActiveChildProcesses(signal) {
200
+ try {
201
+ var children = import_process.default._getActiveHandles().filter(function (handle) {
202
+ return _instanceof(handle, import_child_process.ChildProcess);
203
+ });
204
+ var _iteratorNormalCompletion = true,
205
+ _didIteratorError = false,
206
+ _iteratorError = void 0;
207
+ try {
208
+ for (var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
209
+ var child = _step.value;
210
+ try {
211
+ child.kill(signal);
212
+ } catch (err) {
213
+ debug("failed to kill child process:", err);
214
+ }
215
+ }
216
+ } catch (err) {
217
+ _didIteratorError = true;
218
+ _iteratorError = err;
219
+ } finally {
220
+ try {
221
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
222
+ _iterator.return();
223
+ }
224
+ } finally {
225
+ if (_didIteratorError) {
226
+ throw _iteratorError;
227
+ }
228
+ }
229
+ }
230
+ return children.length;
231
+ } catch (err) {
232
+ debug("failed to enumerate active child processes:", err);
233
+ return 0;
234
+ }
235
+ }
191
236
  function tryWarnActiveProcesses() {
192
237
  var activeProcesses = [];
193
238
  try {
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","exit_exports","__export","ensureProcessExitsAfterDelay","guardAsync","installExitHooks","warn","module","exports","import_child_process","require","import_process","__toESM","import_picocolors","_instanceof","left","right","Symbol","hasInstance","debug","_len","arguments","length","_","Array","_key","PRE_EXIT_SIGNALS","queue","unsubscribe","asyncExitHook","attachMasterListener","push","index","indexOf","splice","createExitHook","signal","_process_exitCode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","iterator","_step","next","done","hookAsync","error","err","return","default","exitCode","exit","hooks","hook","on","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","signal2","hook2","removeListener"],"sources":["../../../src/utils/exit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","exit_exports","__export","ensureProcessExitsAfterDelay","guardAsync","installExitHooks","warn","module","exports","import_child_process","require","import_process","__toESM","import_picocolors","_instanceof","left","right","Symbol","hasInstance","debug","_len","arguments","length","_","Array","_key","PRE_EXIT_SIGNALS","queue","unsubscribe","asyncExitHook","attachMasterListener","push","index","indexOf","splice","createExitHook","signal","_process_exitCode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","iterator","_step","next","done","hookAsync","error","err","return","default","exitCode","exit","hooks","hook","on","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","signal2","hook2","removeListener","waitUntilExitMs","startedAtMs","Date","now","expectedResources","stdout","isTTY","stderr","stdin","activeResources","getActiveResourcesInfo","unexpectedActiveResources","filter","activeResource","canExitProcess","elapsedTime","killedChildren","killActiveChildProcesses","recheck","setTimeout","clearTimeout"],"sources":["../../../src/utils/exit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -64,6 +64,14 @@ function ensureProcessExitsAfterDelay(waitUntilExitMs = 1e4, startedAtMs = Date.
64
64
  }
65
65
  debug(`process is trying to exit, but is stuck on unexpected active resources:`, unexpectedActiveResources);
66
66
  const elapsedTime = Date.now() - startedAtMs;
67
+ const killedChildren = killActiveChildProcesses(elapsedTime < 200 ? "SIGTERM" : "SIGKILL");
68
+ if (killedChildren > 0) {
69
+ const recheck = setTimeout(() => {
70
+ clearTimeout(recheck);
71
+ ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
72
+ }, 50);
73
+ return;
74
+ }
67
75
  if (elapsedTime > waitUntilExitMs) {
68
76
  debug("active handles detected past the exit delay, forcefully exiting:", activeResources);
69
77
  tryWarnActiveProcesses();
@@ -74,6 +82,22 @@ function ensureProcessExitsAfterDelay(waitUntilExitMs = 1e4, startedAtMs = Date.
74
82
  ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
75
83
  }, 100);
76
84
  }
85
+ function killActiveChildProcesses(signal) {
86
+ try {
87
+ const children = process._getActiveHandles().filter(handle => handle instanceof ChildProcess);
88
+ for (const child of children) {
89
+ try {
90
+ child.kill(signal);
91
+ } catch (err) {
92
+ debug("failed to kill child process:", err);
93
+ }
94
+ }
95
+ return children.length;
96
+ } catch (err) {
97
+ debug("failed to enumerate active child processes:", err);
98
+ return 0;
99
+ }
100
+ }
77
101
  function tryWarnActiveProcesses() {
78
102
  let activeProcesses = [];
79
103
  try {
@@ -1 +1 @@
1
- {"version":3,"names":["ChildProcess","process","colors","debug","_","PRE_EXIT_SIGNALS","queue","unsubscribe","installExitHooks","asyncExitHook","length","attachMasterListener","push","index","indexOf","splice","createExitHook","signal","guardAsync","hookAsync","Object","entries","error","exitCode","exit","hooks","hook","on","removeListener","ensureProcessExitsAfterDelay","waitUntilExitMs","startedAtMs","Date","now","expectedResources","stdout","isTTY","stderr","stdin","activeResources","getActiveResourcesInfo","unexpectedActiveResources","filter","activeResource","canExitProcess","elapsedTime","tryWarnActiveProcesses","timeoutId","setTimeout","clearTimeout","activeProcesses","children","_getActiveHandles","handle","map","child","spawnargs","join","warn","singularOrPlural","fn","invoked","returnValue","guard","args","message","console","value","yellow"],"sources":["../../../src/utils/exit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ChildProcess","process","colors","debug","_","PRE_EXIT_SIGNALS","queue","unsubscribe","installExitHooks","asyncExitHook","length","attachMasterListener","push","index","indexOf","splice","createExitHook","signal","guardAsync","hookAsync","Object","entries","error","exitCode","exit","hooks","hook","on","removeListener","ensureProcessExitsAfterDelay","waitUntilExitMs","startedAtMs","Date","now","expectedResources","stdout","isTTY","stderr","stdin","activeResources","getActiveResourcesInfo","unexpectedActiveResources","filter","activeResource","canExitProcess","elapsedTime","killedChildren","killActiveChildProcesses","recheck","setTimeout","clearTimeout","tryWarnActiveProcesses","timeoutId","children","_getActiveHandles","handle","child","kill","err","activeProcesses","map","spawnargs","join","warn","singularOrPlural","fn","invoked","returnValue","guard","args","message","console","value","yellow"],"sources":["../../../src/utils/exit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -135,6 +135,14 @@ function ensureProcessExitsAfterDelay() {
135
135
  }
136
136
  debug(`process is trying to exit, but is stuck on unexpected active resources:`, unexpectedActiveResources);
137
137
  var elapsedTime = Date.now() - startedAtMs;
138
+ var killedChildren = killActiveChildProcesses(elapsedTime < 200 ? "SIGTERM" : "SIGKILL");
139
+ if (killedChildren > 0) {
140
+ var recheck = setTimeout(function () {
141
+ clearTimeout(recheck);
142
+ ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
143
+ }, 50);
144
+ return;
145
+ }
138
146
  if (elapsedTime > waitUntilExitMs) {
139
147
  debug("active handles detected past the exit delay, forcefully exiting:", activeResources);
140
148
  tryWarnActiveProcesses();
@@ -145,6 +153,43 @@ function ensureProcessExitsAfterDelay() {
145
153
  ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
146
154
  }, 100);
147
155
  }
156
+ function killActiveChildProcesses(signal) {
157
+ try {
158
+ var children = process._getActiveHandles().filter(function (handle) {
159
+ return _instanceof(handle, ChildProcess);
160
+ });
161
+ var _iteratorNormalCompletion = true,
162
+ _didIteratorError = false,
163
+ _iteratorError = void 0;
164
+ try {
165
+ for (var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
166
+ var child = _step.value;
167
+ try {
168
+ child.kill(signal);
169
+ } catch (err) {
170
+ debug("failed to kill child process:", err);
171
+ }
172
+ }
173
+ } catch (err) {
174
+ _didIteratorError = true;
175
+ _iteratorError = err;
176
+ } finally {
177
+ try {
178
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
179
+ _iterator.return();
180
+ }
181
+ } finally {
182
+ if (_didIteratorError) {
183
+ throw _iteratorError;
184
+ }
185
+ }
186
+ }
187
+ return children.length;
188
+ } catch (err) {
189
+ debug("failed to enumerate active child processes:", err);
190
+ return 0;
191
+ }
192
+ }
148
193
  function tryWarnActiveProcesses() {
149
194
  var activeProcesses = [];
150
195
  try {
@@ -1 +1 @@
1
- {"version":3,"names":["ChildProcess","process","colors","_instanceof","left","right","Symbol","hasInstance","debug","_len","arguments","length","_","Array","_key","PRE_EXIT_SIGNALS","queue","unsubscribe","installExitHooks","asyncExitHook","attachMasterListener","push","index","indexOf","splice","createExitHook","signal","guardAsync","_process_exitCode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","iterator","_step","next","done","hookAsync","value","error","err","return","exitCode","exit","hooks","hook","on","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","signal2","hook2","removeListener","ensureProcessExitsAfterDelay","waitUntilExitMs","startedAtMs","Date","now"],"sources":["../../../src/utils/exit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ChildProcess","process","colors","_instanceof","left","right","Symbol","hasInstance","debug","_len","arguments","length","_","Array","_key","PRE_EXIT_SIGNALS","queue","unsubscribe","installExitHooks","asyncExitHook","attachMasterListener","push","index","indexOf","splice","createExitHook","signal","guardAsync","_process_exitCode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","iterator","_step","next","done","hookAsync","value","error","err","return","exitCode","exit","hooks","hook","on","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","signal2","hook2","removeListener","ensureProcessExitsAfterDelay","waitUntilExitMs","startedAtMs","Date","now","expectedResources","stdout","isTTY","stderr","stdin","activeResources","getActiveResourcesInfo","unexpectedActiveResources","filter","activeResource","canExitProcess","elapsedTime","killedChildren","killActiveChildProcesses","recheck","setTimeout","clearTimeout"],"sources":["../../../src/utils/exit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vxrn/vite-plugin-metro",
3
- "version": "1.17.6",
3
+ "version": "1.17.9-1779398888939",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "main": "dist/cjs",
@@ -61,7 +61,7 @@
61
61
  "@babel/core": "^7.28.5",
62
62
  "@babel/helper-plugin-utils": "^7.27.1",
63
63
  "@babel/types": "^7.28.5",
64
- "@vxrn/debug": "1.17.6",
64
+ "@vxrn/debug": "1.17.9-1779398888939",
65
65
  "babel-preset-expo": "*",
66
66
  "launch-editor": "^2.10.0",
67
67
  "micromatch": "^4.0.8",
@@ -1,3 +1,4 @@
1
+ import { resolve } from 'node:path'
1
2
  import { TLSSocket } from 'node:tls'
2
3
  import type { PluginOption } from 'vite'
3
4
 
@@ -27,7 +28,8 @@ export function expoManifestRequestHandlerPlugin(
27
28
  // projectRoot = config.root
28
29
  // },
29
30
  configureServer(server) {
30
- const { root: projectRoot } = server.config
31
+ // mirrors metroPlugin.ts: Expo middleware expects native-separator projectRoot
32
+ const projectRoot = resolve(server.config.root)
31
33
 
32
34
  // Lazy load the ExpoGoManifestHandlerMiddleware to avoid blocking Vite startup
33
35
  let ExpoGoManifestHandlerMiddleware: any
package/src/utils/exit.ts CHANGED
@@ -80,6 +80,13 @@ function attachMasterListener() {
80
80
  * Monitor if the current process is exiting before the delay is reached.
81
81
  * If there are active resources, the process will be forced to exit after the delay is reached.
82
82
  *
83
+ * When invoked under a parent process that waits on stdio pipe EOF (e.g. Gradle's
84
+ * `createBundleReleaseJsAndAssets` exec'ing this CLI), a plain process.exit() is
85
+ * not enough — orphaned child processes can keep the inherited stdio file
86
+ * descriptors open and the parent hangs until its own timeout. To avoid that,
87
+ * we kill any lingering child handles before exiting so the parent sees a clean
88
+ * EOF and proceeds immediately.
89
+ *
83
90
  * @see https://nodejs.org/docs/latest-v18.x/api/process.html#processgetactiveresourcesinfo
84
91
  */
85
92
  export function ensureProcessExitsAfterDelay(
@@ -115,8 +122,26 @@ export function ensureProcessExitsAfterDelay(
115
122
  unexpectedActiveResources
116
123
  )
117
124
 
118
- // Check if the process needs to be force-closed
125
+ // if a lingering child process is keeping the loop alive, terminate it
126
+ // straight away — under Gradle exec, orphaned children hold inherited
127
+ // pipe FDs open and the parent (Gradle) never sees EOF. on first pass
128
+ // we SIGTERM (lets esbuild's service close cleanly); on subsequent
129
+ // passes we escalate to SIGKILL for anything still attached.
119
130
  const elapsedTime = Date.now() - startedAtMs
131
+ const killedChildren = killActiveChildProcesses(
132
+ elapsedTime < 200 ? 'SIGTERM' : 'SIGKILL'
133
+ )
134
+ if (killedChildren > 0) {
135
+ // give the OS a tick to reap the killed children, then re-check;
136
+ // if nothing else is holding the loop, node exits naturally with EOF
137
+ const recheck = setTimeout(() => {
138
+ clearTimeout(recheck)
139
+ ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs)
140
+ }, 50)
141
+ return
142
+ }
143
+
144
+ // Check if the process needs to be force-closed
120
145
  if (elapsedTime > waitUntilExitMs) {
121
146
  debug(
122
147
  'active handles detected past the exit delay, forcefully exiting:',
@@ -134,6 +159,31 @@ export function ensureProcessExitsAfterDelay(
134
159
  }, 100)
135
160
  }
136
161
 
162
+ /**
163
+ * Kill any child processes still attached to the current process. Returns the
164
+ * number of children that were signalled.
165
+ */
166
+ function killActiveChildProcesses(signal: NodeJS.Signals): number {
167
+ try {
168
+ const children: ChildProcess[] = process
169
+ // @ts-expect-error internal API, but it's the only way to enumerate live handles
170
+ ._getActiveHandles()
171
+ .filter((handle: any) => handle instanceof ChildProcess)
172
+
173
+ for (const child of children) {
174
+ try {
175
+ child.kill(signal)
176
+ } catch (err) {
177
+ debug('failed to kill child process:', err)
178
+ }
179
+ }
180
+ return children.length
181
+ } catch (err) {
182
+ debug('failed to enumerate active child processes:', err)
183
+ return 0
184
+ }
185
+ }
186
+
137
187
  /**
138
188
  * Try to warn the user about unexpected active processes running in the background.
139
189
  * This uses the internal `process._getActiveHandles` method, within a try-catch block.
@@ -5,6 +5,13 @@ export declare function installExitHooks(asyncExitHook: AsyncExitHook): () => vo
5
5
  * Monitor if the current process is exiting before the delay is reached.
6
6
  * If there are active resources, the process will be forced to exit after the delay is reached.
7
7
  *
8
+ * When invoked under a parent process that waits on stdio pipe EOF (e.g. Gradle's
9
+ * `createBundleReleaseJsAndAssets` exec'ing this CLI), a plain process.exit() is
10
+ * not enough — orphaned child processes can keep the inherited stdio file
11
+ * descriptors open and the parent hangs until its own timeout. To avoid that,
12
+ * we kill any lingering child handles before exiting so the parent sees a clean
13
+ * EOF and proceeds immediately.
14
+ *
8
15
  * @see https://nodejs.org/docs/latest-v18.x/api/process.html#processgetactiveresourcesinfo
9
16
  */
10
17
  export declare function ensureProcessExitsAfterDelay(waitUntilExitMs?: number, startedAtMs?: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"exit.d.ts","sourceRoot":"","sources":["../../src/utils/exit.ts"],"names":[],"mappings":"AAaA,KAAK,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAUrE,sGAAsG;AACtG,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,IAAI,CAmBzE;AAmCD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,eAAe,SAAQ,EACvB,WAAW,SAAa,QAgDzB;AA2CD,+HAA+H;AAC/H,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAchF;AACD,wBAAgB,IAAI,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAE/C"}
1
+ {"version":3,"file":"exit.d.ts","sourceRoot":"","sources":["../../src/utils/exit.ts"],"names":[],"mappings":"AAaA,KAAK,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAUrE,sGAAsG;AACtG,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,IAAI,CAmBzE;AAmCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,eAAe,SAAQ,EACvB,WAAW,SAAa,QAkEzB;AAoED,+HAA+H;AAC/H,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAchF;AACD,wBAAgB,IAAI,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAE/C"}