peachsim 0.1.927 → 0.1.928

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 (80) hide show
  1. package/cli/commands/detect.ts +80 -63
  2. package/cli/commands/nodeRepoFileReader.ts +22 -0
  3. package/cli/commands/repoFileReaderContract.ts +8 -0
  4. package/dist-lib/agent-daemon-client.cjs +1 -1
  5. package/dist-lib/agent-events.cjs +1 -1
  6. package/dist-lib/agent-identity.cjs +1 -1
  7. package/dist-lib/agent-sessions.cjs +1 -1
  8. package/dist-lib/attached-projects.cjs +1 -1
  9. package/dist-lib/auth/shared-session.cjs +1 -1
  10. package/dist-lib/backend-origin.cjs +1 -1
  11. package/dist-lib/beta.cjs +1 -1
  12. package/dist-lib/beta.mjs +1 -1
  13. package/dist-lib/bridge-constants.cjs +1 -1
  14. package/dist-lib/bridge-contract-input.cjs +1 -1
  15. package/dist-lib/bridge-contract-input.mjs +1 -1
  16. package/dist-lib/bridge-contract.cjs +1 -1
  17. package/dist-lib/bridge-contract.mjs +1 -1
  18. package/dist-lib/bundle-channel.cjs +1 -1
  19. package/dist-lib/capture-contract.cjs +1 -1
  20. package/dist-lib/capture-contract.mjs +1 -1
  21. package/dist-lib/cli-constants.cjs +1 -1
  22. package/dist-lib/cloud-contract.cjs +1 -1
  23. package/dist-lib/cloud-contract.mjs +1 -1
  24. package/dist-lib/cloud-test-args.cjs +1 -1
  25. package/dist-lib/cloud-test-args.mjs +1 -1
  26. package/dist-lib/cloud.cjs +1 -1
  27. package/dist-lib/cloud.mjs +1 -1
  28. package/dist-lib/config.cjs +1 -1
  29. package/dist-lib/detox/index.cjs +1 -1
  30. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  31. package/dist-lib/expo-swift-bundle.cjs +1 -1
  32. package/dist-lib/expo-swift-metadata.cjs +1 -1
  33. package/dist-lib/expo-swift-metadata.mjs +1 -1
  34. package/dist-lib/home-paths.cjs +1 -1
  35. package/dist-lib/host/bridge-host.cjs +42 -21
  36. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  37. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  38. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  39. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  40. package/dist-lib/host/websocket-proxy.cjs +1 -1
  41. package/dist-lib/index.cjs +1 -1
  42. package/dist-lib/jump-to-source-babel.cjs +1 -1
  43. package/dist-lib/jump-to-source-native.cjs +1 -1
  44. package/dist-lib/kotlin-host.cjs +1 -1
  45. package/dist-lib/menu.cjs +1 -1
  46. package/dist-lib/menu.mjs +1 -1
  47. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  48. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  49. package/dist-lib/metro-production-bundle.cjs +1 -1
  50. package/dist-lib/metro-production-bundle.mjs +1 -1
  51. package/dist-lib/metro.cjs +1 -1
  52. package/dist-lib/native-app-identity.cjs +1 -1
  53. package/dist-lib/native-app-identity.mjs +1 -1
  54. package/dist-lib/native-firebase-metadata.cjs +1 -1
  55. package/dist-lib/native-firebase-metadata.mjs +1 -1
  56. package/dist-lib/plist.cjs +1 -1
  57. package/dist-lib/plist.mjs +1 -1
  58. package/dist-lib/profiles.cjs +1 -1
  59. package/dist-lib/public-brand.cjs +1 -1
  60. package/dist-lib/react-native-host-modules.cjs +1 -1
  61. package/dist-lib/react-native-host-modules.mjs +1 -1
  62. package/dist-lib/render-mode.cjs +1 -1
  63. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  64. package/dist-lib/sdk.cjs +1 -1
  65. package/dist-lib/sdk.mjs +1 -1
  66. package/dist-lib/skills.cjs +42 -21
  67. package/dist-lib/swift-compile.cjs +1 -1
  68. package/dist-lib/swift-compile.mjs +1 -1
  69. package/dist-lib/swift-package.cjs +1 -1
  70. package/dist-lib/swift-package.mjs +1 -1
  71. package/dist-lib/swift-submit.cjs +1 -1
  72. package/dist-lib/swift-submit.mjs +1 -1
  73. package/dist-lib/swift-toolchain.cjs +1 -1
  74. package/dist-lib/swift.cjs +1 -1
  75. package/dist-lib/vite-swift.cjs +1 -1
  76. package/dist-lib/vite.cjs +1 -1
  77. package/dist-lib/worklet-executable.cjs +1 -1
  78. package/dist-lib/worklet-executable.mjs +1 -1
  79. package/package.json +1 -1
  80. package/src/vite-plugin.ts +1 -1
@@ -1,17 +1,12 @@
1
1
  // project detection — finds project root, detects framework, scans monorepo workspaces
2
2
 
3
- import {
4
- existsSync,
5
- lstatSync,
6
- opendirSync,
7
- readFileSync,
8
- readdirSync,
9
- statSync,
10
- } from 'node:fs'
3
+ import { existsSync, opendirSync, readFileSync, statSync } from 'node:fs'
11
4
  import { basename, dirname, join } from 'node:path'
12
5
  import JSON5 from 'json5'
13
6
  import { parse as parseYaml } from 'yaml'
7
+ import { nodeRepoFileReader } from './nodeRepoFileReader'
14
8
  import type { DependencyVersion, ProjectManifest } from './projectReportContract'
9
+ import type { RepoFileReader } from './repoFileReaderContract'
15
10
 
16
11
  export type Framework = 'one' | 'expo' | 'bare' | 'unknown'
17
12
  export type PackageManager = 'bun' | 'pnpm' | 'npm' | 'yarn'
@@ -35,25 +30,29 @@ export interface DetectedWorkspace {
35
30
 
36
31
  const CONFIG_EXTENSIONS = ['ts', 'js', 'cjs', 'mjs', 'mts', 'cts']
37
32
 
38
- export function findProjectRoot(cwd: string, includeNativeRepository = false): string {
33
+ export function findProjectRoot(
34
+ cwd: string,
35
+ includeNativeRepository = false,
36
+ files: RepoFileReader = nodeRepoFileReader,
37
+ ): string {
39
38
  let swiftRoot: string | undefined
40
39
  let dir = cwd
41
40
  while (true) {
42
41
  if (
43
- existsSync(join(dir, 'turbo.json')) ||
44
- existsSync(join(dir, 'nx.json')) ||
45
- existsSync(join(dir, 'lerna.json')) ||
46
- existsSync(join(dir, 'pnpm-workspace.yaml'))
42
+ files.exists(join(dir, 'turbo.json')) ||
43
+ files.exists(join(dir, 'nx.json')) ||
44
+ files.exists(join(dir, 'lerna.json')) ||
45
+ files.exists(join(dir, 'pnpm-workspace.yaml'))
47
46
  ) {
48
47
  return dir
49
48
  }
50
49
 
51
- if (metadataValue(readProjectJson(join(dir, 'package.json')), 'workspaces'))
50
+ if (metadataValue(readProjectJson(join(dir, 'package.json'), files), 'workspaces'))
52
51
  return dir
53
52
 
54
53
  if (includeNativeRepository) {
55
- if (existsSync(join(dir, '.git'))) return dir
56
- if (!swiftRoot && existsSync(join(dir, 'Package.swift'))) swiftRoot = dir
54
+ if (files.exists(join(dir, '.git'))) return dir
55
+ if (!swiftRoot && files.exists(join(dir, 'Package.swift'))) swiftRoot = dir
57
56
  }
58
57
  const parent = dirname(dir)
59
58
  if (parent === dir) break
@@ -62,9 +61,12 @@ export function findProjectRoot(cwd: string, includeNativeRepository = false): s
62
61
  return swiftRoot ?? cwd
63
62
  }
64
63
 
65
- export function detectPackageManager(root: string): PackageManager {
64
+ export function detectPackageManager(
65
+ root: string,
66
+ files: RepoFileReader = nodeRepoFileReader,
67
+ ): PackageManager {
66
68
  const manager = metadataValue(
67
- readProjectJson(join(root, 'package.json')),
69
+ readProjectJson(join(root, 'package.json'), files),
68
70
  'packageManager',
69
71
  )
70
72
  if (typeof manager === 'string') {
@@ -72,21 +74,24 @@ export function detectPackageManager(root: string): PackageManager {
72
74
  if (name === 'bun' || name === 'pnpm' || name === 'npm' || name === 'yarn')
73
75
  return name
74
76
  }
75
- if (existsSync(join(root, 'bun.lock')) || existsSync(join(root, 'bun.lockb'))) {
77
+ if (files.exists(join(root, 'bun.lock')) || files.exists(join(root, 'bun.lockb'))) {
76
78
  return 'bun'
77
79
  }
78
- if (existsSync(join(root, 'pnpm-lock.yaml'))) return 'pnpm'
79
- if (existsSync(join(root, 'yarn.lock'))) return 'yarn'
80
+ if (files.exists(join(root, 'pnpm-lock.yaml'))) return 'pnpm'
81
+ if (files.exists(join(root, 'yarn.lock'))) return 'yarn'
80
82
  return 'npm'
81
83
  }
82
84
 
83
- export function detectMonorepoType(root: string): MonorepoType {
84
- if (existsSync(join(root, 'turbo.json'))) return 'turbo'
85
- if (existsSync(join(root, 'nx.json'))) return 'nx'
86
- if (existsSync(join(root, 'pnpm-workspace.yaml'))) return 'pnpm'
85
+ export function detectMonorepoType(
86
+ root: string,
87
+ files: RepoFileReader = nodeRepoFileReader,
88
+ ): MonorepoType {
89
+ if (files.exists(join(root, 'turbo.json'))) return 'turbo'
90
+ if (files.exists(join(root, 'nx.json'))) return 'nx'
91
+ if (files.exists(join(root, 'pnpm-workspace.yaml'))) return 'pnpm'
87
92
 
88
- if (existsSync(join(root, 'lerna.json'))) return 'lerna'
89
- if (metadataValue(readProjectJson(join(root, 'package.json')), 'workspaces'))
93
+ if (files.exists(join(root, 'lerna.json'))) return 'lerna'
94
+ if (metadataValue(readProjectJson(join(root, 'package.json'), files), 'workspaces'))
90
95
  return 'npm-workspaces'
91
96
  return 'single'
92
97
  }
@@ -98,16 +103,19 @@ export function detectFramework(deps: Record<string, string>): Framework {
98
103
  return 'unknown'
99
104
  }
100
105
 
101
- export function detectProject(dir: string): DetectedProject | null {
106
+ export function detectProject(
107
+ dir: string,
108
+ files: RepoFileReader = nodeRepoFileReader,
109
+ ): DetectedProject | null {
102
110
  const pkgPath = join(dir, 'package.json')
103
- if (!existsSync(pkgPath)) return null
111
+ if (!files.exists(pkgPath)) return null
104
112
 
105
- const pkg = readProjectManifest(dir)
113
+ const pkg = readProjectManifest(dir, files)
106
114
  if (!pkg) return null
107
115
 
108
116
  const deps = { ...pkg.dependencies, ...pkg.devDependencies }
109
117
  const devCommand = metadataValue(
110
- metadataValue(readProjectJson(pkgPath), 'scripts'),
118
+ metadataValue(readProjectJson(pkgPath, files), 'scripts'),
111
119
  'dev',
112
120
  )
113
121
  const framework = detectFramework(deps)
@@ -122,41 +130,44 @@ export function detectProject(dir: string): DetectedProject | null {
122
130
  // apps write .cjs as often as .js, and missing one reads as "this project
123
131
  // has no bundler config" and sends the user to create a second one.
124
132
  hasViteConfig: CONFIG_EXTENSIONS.some((ext) =>
125
- existsSync(join(dir, `vite.config.${ext}`)),
133
+ files.exists(join(dir, `vite.config.${ext}`)),
126
134
  ),
127
135
  hasMetroConfig: CONFIG_EXTENSIONS.some((ext) =>
128
- existsSync(join(dir, `metro.config.${ext}`)),
136
+ files.exists(join(dir, `metro.config.${ext}`)),
129
137
  ),
130
138
  devCommand: typeof devCommand === 'string' ? devCommand : null,
131
139
  }
132
140
  }
133
141
 
134
- function getWorkspaceDirs(root: string): string[] {
142
+ function getWorkspaceDirs(
143
+ root: string,
144
+ files: RepoFileReader = nodeRepoFileReader,
145
+ ): string[] {
135
146
  const dirs: string[] = []
136
147
 
137
148
  const pnpmWs = join(root, 'pnpm-workspace.yaml')
138
- if (existsSync(pnpmWs)) {
139
- const content = readFileSync(pnpmWs, 'utf8')
149
+ if (files.exists(pnpmWs)) {
150
+ const content = files.readText(pnpmWs)
140
151
  const match = content.match(/packages:\s*\n((?:\s+-\s+.+\n?)+)/)
141
152
  if (match) {
142
153
  const lines = match[1].split('\n').filter(Boolean)
143
154
  for (const line of lines) {
144
155
  const glob = line.replace(/^\s*-\s*['"]?/, '').replace(/['"]?\s*$/, '')
145
- if (glob) dirs.push(...expandGlob(root, glob))
156
+ if (glob) dirs.push(...expandGlob(root, glob, files))
146
157
  }
147
158
  }
148
159
  return dirs
149
160
  }
150
161
 
151
162
  const pkgPath = join(root, 'package.json')
152
- if (existsSync(pkgPath)) {
163
+ if (files.exists(pkgPath)) {
153
164
  try {
154
- const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))
165
+ const pkg = JSON.parse(files.readText(pkgPath))
155
166
  const workspaces = Array.isArray(pkg.workspaces)
156
167
  ? pkg.workspaces
157
168
  : pkg.workspaces?.packages || []
158
169
  for (const glob of workspaces) {
159
- dirs.push(...expandGlob(root, glob))
170
+ dirs.push(...expandGlob(root, glob, files))
160
171
  }
161
172
  } catch {}
162
173
  }
@@ -164,19 +175,19 @@ function getWorkspaceDirs(root: string): string[] {
164
175
  return dirs
165
176
  }
166
177
 
167
- function expandGlob(root: string, pattern: string): string[] {
178
+ function expandGlob(root: string, pattern: string, files: RepoFileReader): string[] {
168
179
  const clean = pattern.replace(/\/\*\*?$/, '').replace(/\*$/, '')
169
180
  const baseDir = join(root, clean)
170
181
 
171
- if (!existsSync(baseDir)) return []
182
+ if (!files.exists(baseDir)) return []
172
183
 
173
184
  try {
174
- const entries = readdirSync(baseDir)
185
+ const entries = files.entries(baseDir).map((entry) => entry.name)
175
186
  return entries
176
187
  .map((entry) => join(baseDir, entry))
177
188
  .filter((path) => {
178
189
  try {
179
- return statSync(path).isDirectory() && existsSync(join(path, 'package.json'))
190
+ return files.isDirectory(path) && files.exists(join(path, 'package.json'))
180
191
  } catch {
181
192
  return false
182
193
  }
@@ -186,12 +197,15 @@ function expandGlob(root: string, pattern: string): string[] {
186
197
  }
187
198
  }
188
199
 
189
- export function scanWorkspace(root: string): DetectedWorkspace {
190
- const type = detectMonorepoType(root)
191
- const packageManager = detectPackageManager(root)
200
+ export function scanWorkspace(
201
+ root: string,
202
+ files: RepoFileReader = nodeRepoFileReader,
203
+ ): DetectedWorkspace {
204
+ const type = detectMonorepoType(root, files)
205
+ const packageManager = detectPackageManager(root, files)
192
206
 
193
207
  if (type === 'single') {
194
- const project = detectProject(root)
208
+ const project = detectProject(root, files)
195
209
  return {
196
210
  root,
197
211
  type,
@@ -200,15 +214,15 @@ export function scanWorkspace(root: string): DetectedWorkspace {
200
214
  }
201
215
  }
202
216
 
203
- const workspaceDirs = getWorkspaceDirs(root)
217
+ const workspaceDirs = getWorkspaceDirs(root, files)
204
218
  const apps: DetectedProject[] = []
205
219
 
206
- const rootProject = detectProject(root)
220
+ const rootProject = detectProject(root, files)
207
221
  if (rootProject) apps.push(rootProject)
208
222
 
209
223
  for (const dir of workspaceDirs) {
210
224
  if (dir === root) continue
211
- const project = detectProject(dir)
225
+ const project = detectProject(dir, files)
212
226
  if (project) apps.push(project)
213
227
  }
214
228
 
@@ -286,14 +300,11 @@ export function scanRepository(root: string): {
286
300
 
287
301
  // inspect only regular, bounded metadata files. errors are data, never a reason
288
302
  // to execute project code. symlinks may point outside the checkout.
289
- export function readProjectMetadata(path: string): string | null {
290
- try {
291
- const info = lstatSync(path)
292
- if (!info.isFile() || info.size > 4 * 1024 * 1024) return null
293
- return readFileSync(path, 'utf8')
294
- } catch {
295
- return null
296
- }
303
+ export function readProjectMetadata(
304
+ filePath: string,
305
+ files: RepoFileReader = nodeRepoFileReader,
306
+ ): string | null {
307
+ return files.readMetadata(filePath)
297
308
  }
298
309
 
299
310
  export function metadataValue(value: unknown, key: string): unknown {
@@ -301,8 +312,11 @@ export function metadataValue(value: unknown, key: string): unknown {
301
312
  return Object.getOwnPropertyDescriptor(value, key)?.value
302
313
  }
303
314
 
304
- export function readProjectJson(path: string): unknown {
305
- const text = readProjectMetadata(path)
315
+ export function readProjectJson(
316
+ path: string,
317
+ files: RepoFileReader = nodeRepoFileReader,
318
+ ): unknown {
319
+ const text = readProjectMetadata(path, files)
306
320
  if (text === null) return null
307
321
  try {
308
322
  const value: unknown = JSON.parse(text)
@@ -312,8 +326,11 @@ export function readProjectJson(path: string): unknown {
312
326
  }
313
327
  }
314
328
 
315
- export function readProjectManifest(dir: string): ProjectManifest | null {
316
- const parsed = readProjectJson(join(dir, 'package.json'))
329
+ export function readProjectManifest(
330
+ dir: string,
331
+ files: RepoFileReader = nodeRepoFileReader,
332
+ ): ProjectManifest | null {
333
+ const parsed = readProjectJson(join(dir, 'package.json'), files)
317
334
  if (!parsed || typeof parsed !== 'object') return null
318
335
  const record = (value: unknown): Record<string, string> => {
319
336
  if (!value || typeof value !== 'object') return {}
@@ -0,0 +1,22 @@
1
+ import { existsSync, lstatSync, readFileSync, readdirSync, statSync } from 'node:fs'
2
+ import type { RepoFileReader } from './repoFileReaderContract'
3
+
4
+ export const nodeRepoFileReader: RepoFileReader = {
5
+ exists: existsSync,
6
+ readText: (filePath) => readFileSync(filePath, 'utf8'),
7
+ entries: (directory) =>
8
+ readdirSync(directory, { withFileTypes: true }).map((entry) => ({
9
+ name: entry.name,
10
+ directory: entry.isDirectory(),
11
+ })),
12
+ isDirectory: (filePath) => statSync(filePath).isDirectory(),
13
+ readMetadata(filePath) {
14
+ try {
15
+ const info = lstatSync(filePath)
16
+ if (!info.isFile() || info.size > 4 * 1024 * 1024) return null
17
+ return readFileSync(filePath, 'utf8')
18
+ } catch {
19
+ return null
20
+ }
21
+ },
22
+ }
@@ -0,0 +1,8 @@
1
+ // scanners accept the same repository view for local files and downloaded archives.
2
+ export interface RepoFileReader {
3
+ exists(filePath: string): boolean
4
+ readText(filePath: string): string
5
+ entries(directory: string): Array<{ name: string; directory: boolean }>
6
+ isDirectory(filePath: string): boolean
7
+ readMetadata(filePath: string): string | null
8
+ }
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/beta.ts
4
4
  var IS_BETA = true;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var SIM_LONG_PRESS_MAX_MS = 5e3;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var REFUSED_PERFORM_STEP_TYPES = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/capture-contract.ts
4
4
  var RNX_SCREEN_CAPTURE_VERSION = 1;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/cloud-contract.ts
4
4
  var RNX_CLOUD_MAX_ARTIFACT_BYTES = 20 * 1024 * 1024;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/cloud-test-args.ts
4
4
  var CLOUD_TEST_ARGS_MAX_COUNT = 32;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/expoSwiftContract.ts
4
4
  function record(value) {
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -8308,6 +8308,33 @@ var init_browser = __esm({
8308
8308
  }
8309
8309
  });
8310
8310
 
8311
+ // cli/commands/nodeRepoFileReader.ts
8312
+ var import_node_fs29, nodeRepoFileReader;
8313
+ var init_nodeRepoFileReader = __esm({
8314
+ "cli/commands/nodeRepoFileReader.ts"() {
8315
+ "use strict";
8316
+ import_node_fs29 = require("node:fs");
8317
+ nodeRepoFileReader = {
8318
+ exists: import_node_fs29.existsSync,
8319
+ readText: (filePath) => (0, import_node_fs29.readFileSync)(filePath, "utf8"),
8320
+ entries: (directory) => (0, import_node_fs29.readdirSync)(directory, { withFileTypes: true }).map((entry) => ({
8321
+ name: entry.name,
8322
+ directory: entry.isDirectory()
8323
+ })),
8324
+ isDirectory: (filePath) => (0, import_node_fs29.statSync)(filePath).isDirectory(),
8325
+ readMetadata(filePath) {
8326
+ try {
8327
+ const info = (0, import_node_fs29.lstatSync)(filePath);
8328
+ if (!info.isFile() || info.size > 4 * 1024 * 1024) return null;
8329
+ return (0, import_node_fs29.readFileSync)(filePath, "utf8");
8330
+ } catch {
8331
+ return null;
8332
+ }
8333
+ }
8334
+ };
8335
+ }
8336
+ });
8337
+
8311
8338
  // cli/commands/detect.ts
8312
8339
  function detectFramework(deps) {
8313
8340
  if (deps.one) return "one";
@@ -8315,14 +8342,14 @@ function detectFramework(deps) {
8315
8342
  if (deps["react-native"]) return "bare";
8316
8343
  return "unknown";
8317
8344
  }
8318
- function detectProject(dir) {
8345
+ function detectProject(dir, files2 = nodeRepoFileReader) {
8319
8346
  const pkgPath = (0, import_node_path30.join)(dir, "package.json");
8320
- if (!(0, import_node_fs29.existsSync)(pkgPath)) return null;
8321
- const pkg = readProjectManifest(dir);
8347
+ if (!files2.exists(pkgPath)) return null;
8348
+ const pkg = readProjectManifest(dir, files2);
8322
8349
  if (!pkg) return null;
8323
8350
  const deps = { ...pkg.dependencies, ...pkg.devDependencies };
8324
8351
  const devCommand = metadataValue(
8325
- metadataValue(readProjectJson(pkgPath), "scripts"),
8352
+ metadataValue(readProjectJson(pkgPath, files2), "scripts"),
8326
8353
  "dev"
8327
8354
  );
8328
8355
  const framework = detectFramework(deps);
@@ -8335,29 +8362,23 @@ function detectProject(dir) {
8335
8362
  // apps write .cjs as often as .js, and missing one reads as "this project
8336
8363
  // has no bundler config" and sends the user to create a second one.
8337
8364
  hasViteConfig: CONFIG_EXTENSIONS.some(
8338
- (ext) => (0, import_node_fs29.existsSync)((0, import_node_path30.join)(dir, `vite.config.${ext}`))
8365
+ (ext) => files2.exists((0, import_node_path30.join)(dir, `vite.config.${ext}`))
8339
8366
  ),
8340
8367
  hasMetroConfig: CONFIG_EXTENSIONS.some(
8341
- (ext) => (0, import_node_fs29.existsSync)((0, import_node_path30.join)(dir, `metro.config.${ext}`))
8368
+ (ext) => files2.exists((0, import_node_path30.join)(dir, `metro.config.${ext}`))
8342
8369
  ),
8343
8370
  devCommand: typeof devCommand === "string" ? devCommand : null
8344
8371
  };
8345
8372
  }
8346
- function readProjectMetadata(path26) {
8347
- try {
8348
- const info = (0, import_node_fs29.lstatSync)(path26);
8349
- if (!info.isFile() || info.size > 4 * 1024 * 1024) return null;
8350
- return (0, import_node_fs29.readFileSync)(path26, "utf8");
8351
- } catch {
8352
- return null;
8353
- }
8373
+ function readProjectMetadata(filePath, files2 = nodeRepoFileReader) {
8374
+ return files2.readMetadata(filePath);
8354
8375
  }
8355
8376
  function metadataValue(value, key2) {
8356
8377
  if (!value || typeof value !== "object") return void 0;
8357
8378
  return Object.getOwnPropertyDescriptor(value, key2)?.value;
8358
8379
  }
8359
- function readProjectJson(path26) {
8360
- const text3 = readProjectMetadata(path26);
8380
+ function readProjectJson(path26, files2 = nodeRepoFileReader) {
8381
+ const text3 = readProjectMetadata(path26, files2);
8361
8382
  if (text3 === null) return null;
8362
8383
  try {
8363
8384
  const value = JSON.parse(text3);
@@ -8366,8 +8387,8 @@ function readProjectJson(path26) {
8366
8387
  return null;
8367
8388
  }
8368
8389
  }
8369
- function readProjectManifest(dir) {
8370
- const parsed = readProjectJson((0, import_node_path30.join)(dir, "package.json"));
8390
+ function readProjectManifest(dir, files2 = nodeRepoFileReader) {
8391
+ const parsed = readProjectJson((0, import_node_path30.join)(dir, "package.json"), files2);
8371
8392
  if (!parsed || typeof parsed !== "object") return null;
8372
8393
  const record2 = (value) => {
8373
8394
  if (!value || typeof value !== "object") return {};
@@ -8384,14 +8405,14 @@ function readProjectManifest(dir) {
8384
8405
  devDependencies: record2(metadataValue(parsed, "devDependencies"))
8385
8406
  };
8386
8407
  }
8387
- var import_node_fs29, import_node_path30, import_json52, CONFIG_EXTENSIONS;
8408
+ var import_node_path30, import_json52, CONFIG_EXTENSIONS;
8388
8409
  var init_detect = __esm({
8389
8410
  "cli/commands/detect.ts"() {
8390
8411
  "use strict";
8391
- import_node_fs29 = require("node:fs");
8392
8412
  import_node_path30 = require("node:path");
8393
8413
  import_json52 = __toESM(require_lib(), 1);
8394
8414
  init_browser();
8415
+ init_nodeRepoFileReader();
8395
8416
  CONFIG_EXTENSIONS = ["ts", "js", "cjs", "mjs", "mts", "cts"];
8396
8417
  }
8397
8418
  });
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_NATIVE_USER_AGENT_HEADER = "x-sootsim-native-user-agent";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/public-brand.ts
4
4
  var name = "Peach";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/is-record.ts
4
4
  function isRecord(value) {
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/metro-production-bundle.ts
4
4
  var RNXSIM_METRO_MODULE_PATHS_PREFIX = "globalThis.__sootsimModulePaths=";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/native-app-identity.ts
4
4
  var NATIVE_APP_IDENTITY_PREFIX = "globalThis.__sootsimNativeAppIdentity=";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/native-firebase-metadata.ts
4
4
  var PREFIX = "globalThis.__peachNativeFirebaseConfig=";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/plist.ts
4
4
  import plist from "plist";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/react-native-host-modules.ts
4
4
  var REACT_NATIVE_PASSTHROUGH_SPECIFIERS = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -44763,6 +44763,33 @@ var init_cloud_session = __esm({
44763
44763
  }
44764
44764
  });
44765
44765
 
44766
+ // cli/commands/nodeRepoFileReader.ts
44767
+ var import_node_fs29, nodeRepoFileReader;
44768
+ var init_nodeRepoFileReader = __esm({
44769
+ "cli/commands/nodeRepoFileReader.ts"() {
44770
+ "use strict";
44771
+ import_node_fs29 = require("node:fs");
44772
+ nodeRepoFileReader = {
44773
+ exists: import_node_fs29.existsSync,
44774
+ readText: (filePath) => (0, import_node_fs29.readFileSync)(filePath, "utf8"),
44775
+ entries: (directory) => (0, import_node_fs29.readdirSync)(directory, { withFileTypes: true }).map((entry) => ({
44776
+ name: entry.name,
44777
+ directory: entry.isDirectory()
44778
+ })),
44779
+ isDirectory: (filePath) => (0, import_node_fs29.statSync)(filePath).isDirectory(),
44780
+ readMetadata(filePath) {
44781
+ try {
44782
+ const info = (0, import_node_fs29.lstatSync)(filePath);
44783
+ if (!info.isFile() || info.size > 4 * 1024 * 1024) return null;
44784
+ return (0, import_node_fs29.readFileSync)(filePath, "utf8");
44785
+ } catch {
44786
+ return null;
44787
+ }
44788
+ }
44789
+ };
44790
+ }
44791
+ });
44792
+
44766
44793
  // cli/commands/detect.ts
44767
44794
  function detectFramework2(deps) {
44768
44795
  if (deps.one) return "one";
@@ -44770,14 +44797,14 @@ function detectFramework2(deps) {
44770
44797
  if (deps["react-native"]) return "bare";
44771
44798
  return "unknown";
44772
44799
  }
44773
- function detectProject(dir) {
44800
+ function detectProject(dir, files2 = nodeRepoFileReader) {
44774
44801
  const pkgPath = (0, import_node_path30.join)(dir, "package.json");
44775
- if (!(0, import_node_fs29.existsSync)(pkgPath)) return null;
44776
- const pkg = readProjectManifest(dir);
44802
+ if (!files2.exists(pkgPath)) return null;
44803
+ const pkg = readProjectManifest(dir, files2);
44777
44804
  if (!pkg) return null;
44778
44805
  const deps = { ...pkg.dependencies, ...pkg.devDependencies };
44779
44806
  const devCommand = metadataValue(
44780
- metadataValue(readProjectJson(pkgPath), "scripts"),
44807
+ metadataValue(readProjectJson(pkgPath, files2), "scripts"),
44781
44808
  "dev"
44782
44809
  );
44783
44810
  const framework = detectFramework2(deps);
@@ -44790,29 +44817,23 @@ function detectProject(dir) {
44790
44817
  // apps write .cjs as often as .js, and missing one reads as "this project
44791
44818
  // has no bundler config" and sends the user to create a second one.
44792
44819
  hasViteConfig: CONFIG_EXTENSIONS.some(
44793
- (ext) => (0, import_node_fs29.existsSync)((0, import_node_path30.join)(dir, `vite.config.${ext}`))
44820
+ (ext) => files2.exists((0, import_node_path30.join)(dir, `vite.config.${ext}`))
44794
44821
  ),
44795
44822
  hasMetroConfig: CONFIG_EXTENSIONS.some(
44796
- (ext) => (0, import_node_fs29.existsSync)((0, import_node_path30.join)(dir, `metro.config.${ext}`))
44823
+ (ext) => files2.exists((0, import_node_path30.join)(dir, `metro.config.${ext}`))
44797
44824
  ),
44798
44825
  devCommand: typeof devCommand === "string" ? devCommand : null
44799
44826
  };
44800
44827
  }
44801
- function readProjectMetadata(path38) {
44802
- try {
44803
- const info = (0, import_node_fs29.lstatSync)(path38);
44804
- if (!info.isFile() || info.size > 4 * 1024 * 1024) return null;
44805
- return (0, import_node_fs29.readFileSync)(path38, "utf8");
44806
- } catch {
44807
- return null;
44808
- }
44828
+ function readProjectMetadata(filePath, files2 = nodeRepoFileReader) {
44829
+ return files2.readMetadata(filePath);
44809
44830
  }
44810
44831
  function metadataValue(value, key2) {
44811
44832
  if (!value || typeof value !== "object") return void 0;
44812
44833
  return Object.getOwnPropertyDescriptor(value, key2)?.value;
44813
44834
  }
44814
- function readProjectJson(path38) {
44815
- const text3 = readProjectMetadata(path38);
44835
+ function readProjectJson(path38, files2 = nodeRepoFileReader) {
44836
+ const text3 = readProjectMetadata(path38, files2);
44816
44837
  if (text3 === null) return null;
44817
44838
  try {
44818
44839
  const value = JSON.parse(text3);
@@ -44821,8 +44842,8 @@ function readProjectJson(path38) {
44821
44842
  return null;
44822
44843
  }
44823
44844
  }
44824
- function readProjectManifest(dir) {
44825
- const parsed = readProjectJson((0, import_node_path30.join)(dir, "package.json"));
44845
+ function readProjectManifest(dir, files2 = nodeRepoFileReader) {
44846
+ const parsed = readProjectJson((0, import_node_path30.join)(dir, "package.json"), files2);
44826
44847
  if (!parsed || typeof parsed !== "object") return null;
44827
44848
  const record2 = (value) => {
44828
44849
  if (!value || typeof value !== "object") return {};
@@ -44839,14 +44860,14 @@ function readProjectManifest(dir) {
44839
44860
  devDependencies: record2(metadataValue(parsed, "devDependencies"))
44840
44861
  };
44841
44862
  }
44842
- var import_node_fs29, import_node_path30, import_json52, CONFIG_EXTENSIONS;
44863
+ var import_node_path30, import_json52, CONFIG_EXTENSIONS;
44843
44864
  var init_detect = __esm({
44844
44865
  "cli/commands/detect.ts"() {
44845
44866
  "use strict";
44846
- import_node_fs29 = require("node:fs");
44847
44867
  import_node_path30 = require("node:path");
44848
44868
  import_json52 = __toESM(require_lib(), 1);
44849
44869
  init_browser();
44870
+ init_nodeRepoFileReader();
44850
44871
  CONFIG_EXTENSIONS = ["ts", "js", "cjs", "mjs", "mts", "cts"];
44851
44872
  }
44852
44873
  });
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/swift-compile.ts
4
4
  import { execFile as execFile2, execFileSync } from "node:child_process";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/swift-package.ts
4
4
  function isSwiftManifestFile(file) {
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/swift-submit.ts
4
4
  var SWIFT_COMPILE_PATH = "/api/swift-compile";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.927 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.928 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/worklet-executable.ts
4
4
  import { parse } from "acorn";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peachsim",
3
- "version": "0.1.927",
3
+ "version": "0.1.928",
4
4
  "description": "Vite and Metro plugins, testing drivers, and SDK exports for peach.",
5
5
  "author": "Tamagui LLC",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -684,7 +684,7 @@ export function workerBootChunkPlugin(closures: WorkerBootClosure[]): Plugin {
684
684
  if (!transformed.map) this.error('worker transform produced no source map')
685
685
  const compact = await minify(transformed.code, {
686
686
  module: true,
687
- compress: { passes: 2 },
687
+ compress: { passes: 3 },
688
688
  mangle: true,
689
689
  sourceMap: { content: JSON.stringify(transformed.map) },
690
690
  })