@tamagui/native-ci 2.0.0-1768636514428 → 2.0.0-1768699687560

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/metro.js CHANGED
@@ -46,15 +46,21 @@ function startMetro() {
46
46
  });
47
47
  return {
48
48
  proc,
49
- kill: () => {
50
- proc.kill(), console.info("Metro stopped");
49
+ kill: async () => {
50
+ const pid = proc.pid;
51
+ if (pid)
52
+ try {
53
+ await Bun.spawn(["pkill", "-P", String(pid)], { stdout: "ignore", stderr: "ignore" }).exited;
54
+ } catch {
55
+ }
56
+ proc.kill("SIGKILL"), console.info("Metro stopped");
51
57
  }
52
58
  };
53
59
  }
54
60
  function setupSignalHandlers(metro) {
55
- const cleanup = (signal) => {
61
+ const cleanup = async (signal) => {
56
62
  console.info(`
57
- Received ${signal}, cleaning up...`), metro.kill(), process.exit(signal === "SIGINT" ? 130 : 143);
63
+ Received ${signal}, cleaning up...`), await metro.kill(), process.exit(signal === "SIGINT" ? 130 : 143);
58
64
  };
59
65
  process.on("SIGINT", () => cleanup("SIGINT")), process.on("SIGTERM", () => cleanup("SIGTERM"));
60
66
  }
@@ -66,7 +72,7 @@ async function withMetro(platform, fn) {
66
72
  throw new Error("Metro failed to start within timeout");
67
73
  return await prewarmBundle(platform), await fn();
68
74
  } finally {
69
- metro.kill();
75
+ await metro.kill();
70
76
  }
71
77
  }
72
78
  export {
package/dist/metro.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/metro.ts"],
4
- "mappings": "AAQA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAuBP,eAAsB,aAAa,SAAyC;AAC1E,QAAM;AAAA,IACJ;AAAA,IACA,cAAc;AAAA,IACd,aAAa;AAAA,EACf,IAAI;AAEJ,UAAQ,KAAK,+BAA+B;AAE5C,WAAS,IAAI,GAAG,KAAK,aAAa,KAAK;AACrC,QAAI;AAIF,WAHiB,MAAM,MAAM,GAAG,SAAS,KAAK;AAAA,QAC5C,SAAS,EAAE,iBAAiB,SAAS;AAAA,MACvC,CAAC,GACY;AACX,uBAAQ,KAAK,sBAAsB,GAC5B;AAAA,IAEX,QAAQ;AAAA,IAER;AACA,YAAQ,KAAK,yBAAyB,CAAC,IAAI,WAAW,GAAG,GACzD,MAAM,IAAI,MAAM,UAAU;AAAA,EAC5B;AAEA,SAAO;AACT;AAMA,eAAsB,cAAc,UAAmC;AACrE,UAAQ,KAAK,uBAAuB;AAEpC,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,GAAG,SAAS,KAAK;AAAA,MAC5C,SAAS,EAAE,iBAAiB,SAAS;AAAA,IACvC,CAAC;AAED,QAAI,SAAS,IAAI;AAEf,YAAM,aADY,MAAM,SAAS,KAAK,IACV,aAAa;AAEzC,MAAI,aACF,QAAQ,KAAK,yBAAyB,SAAS,EAAE,GACjD,MAAM,MAAM,SAAS,GACrB,QAAQ,KAAK,oBAAoB,KAEjC,QAAQ,KAAK,oDAAoD;AAAA,IAErE;AAAA,EACF,QAAgB;AAEd,YAAQ,KAAK,oDAAoD;AAAA,EACnE;AACF;AAOO,SAAS,aAA2B;AACzC,UAAQ,KAAK;AAAA,+BAAkC;AAI/C,QAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,QAAQ,SAAS,gBAAgB,aAAa,SAAS,GAAG;AAAA,IACxF,KAAK,EAAE,GAAG,QAAQ,KAAK,mBAAmB,OAAO;AAAA,IACjD,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA,MAAM,MAAM;AACV,WAAK,KAAK,GACV,QAAQ,KAAK,eAAe;AAAA,IAC9B;AAAA,EACF;AACF;AAMO,SAAS,oBAAoB,OAA2B;AAC7D,QAAM,UAAU,CAAC,WAAmB;AAClC,YAAQ,KAAK;AAAA,WAAc,MAAM,kBAAkB,GACnD,MAAM,KAAK,GACX,QAAQ,KAAK,WAAW,WAAW,MAAM,GAAG;AAAA,EAC9C;AAEA,UAAQ,GAAG,UAAU,MAAM,QAAQ,QAAQ,CAAC,GAC5C,QAAQ,GAAG,WAAW,MAAM,QAAQ,SAAS,CAAC;AAChD;AAOA,eAAsB,UAAa,UAAoB,IAAkC;AACvF,QAAM,QAAQ,WAAW;AACzB,sBAAoB,KAAK;AAEzB,MAAI;AAEF,QAAI,CADe,MAAM,aAAa,EAAE,SAAS,CAAC;AAEhD,YAAM,IAAI,MAAM,sCAAsC;AAGxD,iBAAM,cAAc,QAAQ,GAErB,MAAM,GAAG;AAAA,EAClB,UAAE;AACA,UAAM,KAAK;AAAA,EACb;AACF;",
4
+ "mappings": "AAQA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAuBP,eAAsB,aAAa,SAAyC;AAC1E,QAAM;AAAA,IACJ;AAAA,IACA,cAAc;AAAA,IACd,aAAa;AAAA,EACf,IAAI;AAEJ,UAAQ,KAAK,+BAA+B;AAE5C,WAAS,IAAI,GAAG,KAAK,aAAa,KAAK;AACrC,QAAI;AAIF,WAHiB,MAAM,MAAM,GAAG,SAAS,KAAK;AAAA,QAC5C,SAAS,EAAE,iBAAiB,SAAS;AAAA,MACvC,CAAC,GACY;AACX,uBAAQ,KAAK,sBAAsB,GAC5B;AAAA,IAEX,QAAQ;AAAA,IAER;AACA,YAAQ,KAAK,yBAAyB,CAAC,IAAI,WAAW,GAAG,GACzD,MAAM,IAAI,MAAM,UAAU;AAAA,EAC5B;AAEA,SAAO;AACT;AAMA,eAAsB,cAAc,UAAmC;AACrE,UAAQ,KAAK,uBAAuB;AAEpC,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,GAAG,SAAS,KAAK;AAAA,MAC5C,SAAS,EAAE,iBAAiB,SAAS;AAAA,IACvC,CAAC;AAED,QAAI,SAAS,IAAI;AAEf,YAAM,aADY,MAAM,SAAS,KAAK,IACV,aAAa;AAEzC,MAAI,aACF,QAAQ,KAAK,yBAAyB,SAAS,EAAE,GACjD,MAAM,MAAM,SAAS,GACrB,QAAQ,KAAK,oBAAoB,KAEjC,QAAQ,KAAK,oDAAoD;AAAA,IAErE;AAAA,EACF,QAAgB;AAEd,YAAQ,KAAK,oDAAoD;AAAA,EACnE;AACF;AAOO,SAAS,aAA2B;AACzC,UAAQ,KAAK;AAAA,+BAAkC;AAI/C,QAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,QAAQ,SAAS,gBAAgB,aAAa,SAAS,GAAG;AAAA,IACxF,KAAK,EAAE,GAAG,QAAQ,KAAK,mBAAmB,OAAO;AAAA,IACjD,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA,MAAM,YAAY;AAGhB,YAAM,MAAM,KAAK;AACjB,UAAI;AACF,YAAI;AAEF,gBAAM,IAAI,MAAM,CAAC,SAAS,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,QAAQ,UAAU,QAAQ,SAAS,CAAC,EAAE;AAAA,QACxF,QAAQ;AAAA,QAER;AAEF,WAAK,KAAK,SAAS,GACnB,QAAQ,KAAK,eAAe;AAAA,IAC9B;AAAA,EACF;AACF;AAMO,SAAS,oBAAoB,OAA2B;AAC7D,QAAM,UAAU,OAAO,WAAmB;AACxC,YAAQ,KAAK;AAAA,WAAc,MAAM,kBAAkB,GACnD,MAAM,MAAM,KAAK,GACjB,QAAQ,KAAK,WAAW,WAAW,MAAM,GAAG;AAAA,EAC9C;AAEA,UAAQ,GAAG,UAAU,MAAM,QAAQ,QAAQ,CAAC,GAC5C,QAAQ,GAAG,WAAW,MAAM,QAAQ,SAAS,CAAC;AAChD;AAOA,eAAsB,UAAa,UAAoB,IAAkC;AACvF,QAAM,QAAQ,WAAW;AACzB,sBAAoB,KAAK;AAEzB,MAAI;AAEF,QAAI,CADe,MAAM,aAAa,EAAE,SAAS,CAAC;AAEhD,YAAM,IAAI,MAAM,sCAAsC;AAGxD,iBAAM,cAAc,QAAQ,GAErB,MAAM,GAAG;AAAA,EAClB,UAAE;AACA,UAAM,MAAM,KAAK;AAAA,EACnB;AACF;",
5
5
  "names": []
6
6
  }
package/dist/metro.mjs CHANGED
@@ -47,15 +47,22 @@ function startMetro() {
47
47
  });
48
48
  return {
49
49
  proc,
50
- kill: () => {
51
- proc.kill(), console.info("Metro stopped");
50
+ kill: async () => {
51
+ const pid = proc.pid;
52
+ if (pid) try {
53
+ await Bun.spawn(["pkill", "-P", String(pid)], {
54
+ stdout: "ignore",
55
+ stderr: "ignore"
56
+ }).exited;
57
+ } catch {}
58
+ proc.kill("SIGKILL"), console.info("Metro stopped");
52
59
  }
53
60
  };
54
61
  }
55
62
  function setupSignalHandlers(metro) {
56
- const cleanup = signal => {
63
+ const cleanup = async signal => {
57
64
  console.info(`
58
- Received ${signal}, cleaning up...`), metro.kill(), process.exit(signal === "SIGINT" ? 130 : 143);
65
+ Received ${signal}, cleaning up...`), await metro.kill(), process.exit(signal === "SIGINT" ? 130 : 143);
59
66
  };
60
67
  process.on("SIGINT", () => cleanup("SIGINT")), process.on("SIGTERM", () => cleanup("SIGTERM"));
61
68
  }
@@ -68,7 +75,7 @@ async function withMetro(platform, fn) {
68
75
  }))) throw new Error("Metro failed to start within timeout");
69
76
  return await prewarmBundle(platform), await fn();
70
77
  } finally {
71
- metro.kill();
78
+ await metro.kill();
72
79
  }
73
80
  }
74
81
  export { prewarmBundle, setupSignalHandlers, startMetro, waitForMetro, withMetro };
@@ -1 +1 @@
1
- {"version":3,"names":["METRO_URL","DEFAULT_METRO_WAIT_ATTEMPTS","DEFAULT_METRO_WAIT_INTERVAL_MS","waitForMetro","options","platform","maxAttempts","intervalMs","console","info","i","fetch","headers","ok","Bun","sleep","prewarmBundle","response","bundleUrl","json","launchAsset","url","startMetro","proc","spawn","env","process","EXPO_NO_TELEMETRY","stdout","stderr","kill","setupSignalHandlers","metro","cleanup","signal","exit","on","withMetro","fn","Error"],"sources":["../src/metro.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["METRO_URL","DEFAULT_METRO_WAIT_ATTEMPTS","DEFAULT_METRO_WAIT_INTERVAL_MS","waitForMetro","options","platform","maxAttempts","intervalMs","console","info","i","fetch","headers","ok","Bun","sleep","prewarmBundle","response","bundleUrl","json","launchAsset","url","startMetro","proc","spawn","env","process","EXPO_NO_TELEMETRY","stdout","stderr","kill","pid","String","exited","setupSignalHandlers","metro","cleanup","signal","exit","on","withMetro","fn","Error"],"sources":["../src/metro.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/native-ci",
3
- "version": "2.0.0-1768636514428",
3
+ "version": "2.0.0-1768699687560",
4
4
  "description": "Native CI/CD helpers for React Native apps with Expo - fingerprinting, caching, and build optimization",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -39,7 +39,7 @@
39
39
  "@expo/fingerprint": "^0.15.3"
40
40
  },
41
41
  "devDependencies": {
42
- "@tamagui/build": "2.0.0-1768636514428",
42
+ "@tamagui/build": "2.0.0-1768699687560",
43
43
  "@types/bun": "^1.1.0",
44
44
  "@types/node": "^22.1.0"
45
45
  },
package/src/ios.ts CHANGED
@@ -63,8 +63,9 @@ export async function ensureIOSApp(config: string = 'ios.sim.debug'): Promise<vo
63
63
  console.info(`\n--- iOS app not found at ${appPath}, building... ---`)
64
64
 
65
65
  // Ensure pods are installed first
66
- const podsPath = join(process.cwd(), 'ios', 'Pods')
67
- if (!existsSync(podsPath)) {
66
+ // Check for actual pod config files, not just the Pods directory (which may be incomplete)
67
+ const podConfigPath = join(process.cwd(), 'ios', 'Pods', 'Target Support Files', 'Pods-tamaguikitchensink', 'Pods-tamaguikitchensink.debug.xcconfig')
68
+ if (!existsSync(podConfigPath)) {
68
69
  console.info('Installing CocoaPods dependencies...')
69
70
  await $`pod install --project-directory=ios`
70
71
  }
package/src/metro.ts CHANGED
@@ -26,8 +26,8 @@ export interface MetroOptions {
26
26
  export interface MetroProcess {
27
27
  /** The underlying Bun subprocess */
28
28
  proc: Subprocess
29
- /** Kill the Metro process */
30
- kill: () => void
29
+ /** Kill the Metro process and its children */
30
+ kill: () => Promise<void>
31
31
  }
32
32
 
33
33
  /**
@@ -111,8 +111,19 @@ export function startMetro(): MetroProcess {
111
111
 
112
112
  return {
113
113
  proc,
114
- kill: () => {
115
- proc.kill()
114
+ kill: async () => {
115
+ // Metro spawns child processes (watchman, etc.) that may survive a simple kill
116
+ // Use pkill to kill the entire process tree by parent PID
117
+ const pid = proc.pid
118
+ if (pid) {
119
+ try {
120
+ // Kill all child processes first (works on macOS and Linux)
121
+ await Bun.spawn(['pkill', '-P', String(pid)], { stdout: 'ignore', stderr: 'ignore' }).exited
122
+ } catch {
123
+ // Ignore errors - children may already be dead
124
+ }
125
+ }
126
+ proc.kill('SIGKILL')
116
127
  console.info('Metro stopped')
117
128
  },
118
129
  }
@@ -123,9 +134,9 @@ export function startMetro(): MetroProcess {
123
134
  * This prevents orphaned Metro processes when CI jobs are cancelled.
124
135
  */
125
136
  export function setupSignalHandlers(metro: MetroProcess): void {
126
- const cleanup = (signal: string) => {
137
+ const cleanup = async (signal: string) => {
127
138
  console.info(`\nReceived ${signal}, cleaning up...`)
128
- metro.kill()
139
+ await metro.kill()
129
140
  process.exit(signal === 'SIGINT' ? 130 : 143)
130
141
  }
131
142
 
@@ -152,6 +163,6 @@ export async function withMetro<T>(platform: Platform, fn: () => Promise<T>): Pr
152
163
 
153
164
  return await fn()
154
165
  } finally {
155
- metro.kill()
166
+ await metro.kill()
156
167
  }
157
168
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../src/ios.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBrD;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,MAAM,GAAE,MAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgClF"}
1
+ {"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../src/ios.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBrD;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,MAAM,GAAE,MAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiClF"}
package/types/metro.d.ts CHANGED
@@ -17,8 +17,8 @@ export interface MetroOptions {
17
17
  export interface MetroProcess {
18
18
  /** The underlying Bun subprocess */
19
19
  proc: Subprocess;
20
- /** Kill the Metro process */
21
- kill: () => void;
20
+ /** Kill the Metro process and its children */
21
+ kill: () => Promise<void>;
22
22
  }
23
23
  /**
24
24
  * Wait for Metro bundler to be ready and responding to requests.
@@ -1 +1 @@
1
- {"version":3,"file":"metro.d.ts","sourceRoot":"","sources":["../src/metro.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AACrC,OAAO,EAIL,KAAK,QAAQ,EAEd,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,QAAQ,EAAE,QAAQ,CAAA;IAClB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CA0B1E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBrE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAkBzC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAS7D;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAgBvF"}
1
+ {"version":3,"file":"metro.d.ts","sourceRoot":"","sources":["../src/metro.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AACrC,OAAO,EAIL,KAAK,QAAQ,EAEd,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,QAAQ,EAAE,QAAQ,CAAA;IAClB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CA0B1E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBrE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,YAAY,CA6BzC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAS7D;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAgBvF"}