peachsim 0.1.1625 → 0.1.1640

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 (169) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +15 -2
  3. package/cli/app-config.ts +18 -6
  4. package/cli/app-fonts.ts +37 -17
  5. package/cli/app-stubs.ts +284 -20
  6. package/cli/bridge-flow-runner.ts +66 -45
  7. package/cli/cloud-client.ts +60 -40
  8. package/cli/command-registry.ts +1 -0
  9. package/cli/commands/control.ts +283 -49
  10. package/cli/commands/doctor.ts +30 -189
  11. package/cli/commands/flow.ts +79 -11
  12. package/cli/commands/inspect/core.ts +10 -5
  13. package/cli/commands/inspect/settling.ts +14 -2
  14. package/cli/commands/inspect/shared.ts +9 -4
  15. package/cli/commands/inspect/wait-ready.ts +12 -0
  16. package/cli/commands/inspect.ts +91 -50
  17. package/cli/commands/install-desktop.ts +1 -0
  18. package/cli/commands/maestro-compare.ts +97 -38
  19. package/cli/commands/maestro.ts +9 -1
  20. package/cli/commands/preview.ts +1 -1
  21. package/cli/commands/record.ts +118 -48
  22. package/cli/commands/screenshot.ts +23 -1
  23. package/cli/commands/serve.ts +7 -2
  24. package/cli/commands/setup.ts +19 -42
  25. package/cli/commands/swift.ts +14 -3
  26. package/cli/commands/upload.ts +93 -48
  27. package/cli/desktop-companion.ts +102 -17
  28. package/cli/drivers/desktop.ts +14 -1
  29. package/cli/drivers/playwright-sim-host.ts +103 -45
  30. package/cli/drivers/playwright.ts +9 -8
  31. package/cli/drivers/types.ts +5 -0
  32. package/cli/maestro-accessibility.ts +1 -1
  33. package/cli/maestro-compare.ts +84 -12
  34. package/cli/main.ts +3 -2
  35. package/cli/outbound-endpoints.ts +20 -6
  36. package/cli/pause-aware-timeout.ts +106 -0
  37. package/cli/scene-video.ts +89 -0
  38. package/cli/ws-bridge.ts +37 -19
  39. package/detox/attempt-events.cjs +66 -5
  40. package/detox/attempt-events.d.cts +7 -0
  41. package/detox/expectations.ts +7 -3
  42. package/detox/index.ts +269 -170
  43. package/detox/motion-change.cjs +206 -21
  44. package/detox/motion-change.d.cts +39 -2
  45. package/detox/navigation-lifecycle.ts +35 -3
  46. package/dist-lib/agent-daemon-client.cjs +1 -1
  47. package/dist-lib/agent-events.cjs +1 -1
  48. package/dist-lib/attached-projects.cjs +1 -1
  49. package/dist-lib/auth/shared-session.cjs +1 -1
  50. package/dist-lib/backend-origin.cjs +8 -7
  51. package/dist-lib/beta.cjs +1 -1
  52. package/dist-lib/beta.mjs +1 -1
  53. package/dist-lib/bridge-constants.cjs +13 -1
  54. package/dist-lib/bridge-contract-input.cjs +1 -1
  55. package/dist-lib/bridge-contract-input.mjs +1 -1
  56. package/dist-lib/bridge-contract.cjs +14 -8
  57. package/dist-lib/bridge-contract.mjs +13 -7
  58. package/dist-lib/bundle-channel.cjs +11887 -7900
  59. package/dist-lib/capture-contract.cjs +1 -1
  60. package/dist-lib/capture-contract.mjs +1 -1
  61. package/dist-lib/cloud-contract.cjs +1 -1
  62. package/dist-lib/cloud-contract.mjs +1 -1
  63. package/dist-lib/cloud-test-args.cjs +1 -1
  64. package/dist-lib/cloud-test-args.mjs +1 -1
  65. package/dist-lib/cloud.cjs +1 -1
  66. package/dist-lib/cloud.mjs +1 -1
  67. package/dist-lib/config.cjs +6 -3
  68. package/dist-lib/config.mjs +6 -3
  69. package/dist-lib/detox/index.cjs +1379 -725
  70. package/dist-lib/dev-bundle-resolution.cjs +14 -2
  71. package/dist-lib/expo-swift-bundle.cjs +9341 -5462
  72. package/dist-lib/expo-swift-metadata.cjs +11 -7
  73. package/dist-lib/expo-swift-metadata.mjs +11 -7
  74. package/dist-lib/home-paths.cjs +32 -3
  75. package/dist-lib/host/bridge-host.cjs +50204 -7258
  76. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  77. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  78. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  79. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  80. package/dist-lib/host/websocket-proxy.cjs +1 -1
  81. package/dist-lib/index.cjs +3541 -448
  82. package/dist-lib/jump-to-source-babel.cjs +1 -1
  83. package/dist-lib/jump-to-source-native.cjs +1 -1
  84. package/dist-lib/kotlin-host.cjs +1 -1
  85. package/dist-lib/menu.cjs +1 -1
  86. package/dist-lib/menu.mjs +1 -1
  87. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  88. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  89. package/dist-lib/metro-production-bundle.cjs +1 -1
  90. package/dist-lib/metro-production-bundle.mjs +1 -1
  91. package/dist-lib/metro.cjs +2931 -104
  92. package/dist-lib/native-app-identity-project.cjs +289 -49
  93. package/dist-lib/native-app-identity-project.mjs +289 -49
  94. package/dist-lib/native-app-identity.cjs +77 -26
  95. package/dist-lib/native-app-identity.mjs +76 -26
  96. package/dist-lib/native-firebase-metadata.cjs +1 -1
  97. package/dist-lib/native-firebase-metadata.mjs +1 -1
  98. package/dist-lib/plist.cjs +1 -1
  99. package/dist-lib/plist.mjs +1 -1
  100. package/dist-lib/profiles.cjs +1 -1
  101. package/dist-lib/public-brand.cjs +1 -1
  102. package/dist-lib/react-native-host-modules.cjs +6 -2
  103. package/dist-lib/react-native-host-modules.mjs +6 -2
  104. package/dist-lib/scripts/dev-server-scanner.cjs +22 -8
  105. package/dist-lib/sdk.cjs +27 -11
  106. package/dist-lib/sdk.mjs +27 -10
  107. package/dist-lib/skills.cjs +72201 -26208
  108. package/dist-lib/swift-compile.cjs +1007 -140
  109. package/dist-lib/swift-compile.mjs +1049 -174
  110. package/dist-lib/swift-package.cjs +12 -3
  111. package/dist-lib/swift-package.mjs +12 -3
  112. package/dist-lib/swift-submit.cjs +13 -5
  113. package/dist-lib/swift-submit.mjs +11 -5
  114. package/dist-lib/swift-toolchain.cjs +423 -33
  115. package/dist-lib/swift.cjs +1 -1
  116. package/dist-lib/vite-swift.cjs +8628 -5268
  117. package/dist-lib/vite.cjs +2859 -12
  118. package/dist-lib/worklet-executable.cjs +14 -2
  119. package/dist-lib/worklet-executable.mjs +14 -2
  120. package/kotlin/AppSources/dev/peach/app/PeachDrawable.kt +21 -14
  121. package/kotlin/Sources/androidx/annotation/DrawableRes.kt +14 -0
  122. package/package.json +1 -1
  123. package/scripts/dev-server-scanner.ts +2 -1
  124. package/skills/peach-perf/SKILL.md +11 -5
  125. package/skills/peach-setup/SKILL.md +16 -19
  126. package/src/backend-origin.ts +13 -6
  127. package/src/bridge-constants.ts +11 -0
  128. package/src/bridge-contract.ts +22 -34
  129. package/src/config.ts +15 -0
  130. package/src/desktop-host-delivery.ts +5 -1
  131. package/src/dev-bundle-resolution.ts +2 -1
  132. package/src/expo-manifest-body.ts +13 -0
  133. package/src/expo-swift-host.ts +196 -49
  134. package/src/expo-swift-ready.ts +78 -0
  135. package/src/expoKotlinContract.ts +4 -7
  136. package/src/expoSwiftContract.ts +17 -6
  137. package/src/home-paths.ts +48 -2
  138. package/src/host/bridge-host.ts +5 -2
  139. package/src/host/staged-host-files.ts +9 -0
  140. package/src/native-app-identity-project.ts +27 -6
  141. package/src/native-app-identity.ts +91 -4
  142. package/src/native-firebase-config.ts +209 -13
  143. package/src/nativeAppIconContract.ts +1 -4
  144. package/src/output-lock-stdio.ts +36 -0
  145. package/src/process-group.ts +25 -2
  146. package/src/react-native-bridge-modules.ts +431 -0
  147. package/src/react-native-host-modules.ts +8 -1
  148. package/src/settings-bundle.ts +1 -4
  149. package/src/swift-binary-modules.ts +2 -2
  150. package/src/swift-compile.ts +918 -109
  151. package/src/swift-compiler-digest.ts +14 -0
  152. package/src/swift-distribution.lock.json +24 -12
  153. package/src/swift-distribution.ts +103 -4
  154. package/src/swift-host.ts +180 -55
  155. package/src/swift-icu.ts +27 -13
  156. package/src/swift-objc-compile.ts +355 -0
  157. package/src/swift-objc-sdk.ts +821 -27
  158. package/src/swift-objc-standin.ts +148 -14
  159. package/src/swift-package-manifest.ts +60 -7
  160. package/src/swift-package.ts +15 -1
  161. package/src/swift-packages.ts +154 -81
  162. package/src/swift-standin-emit.ts +96 -15
  163. package/src/swift-standins.ts +530 -116
  164. package/src/swift-submit.ts +13 -5
  165. package/src/swift-toolchain.ts +500 -42
  166. package/src/vite-plugin.ts +12 -1
  167. package/src/worker-system-chunks.ts +11 -12
  168. package/src/worklet-executable.ts +19 -1
  169. package/src/xcode-project.ts +270 -30
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1625 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1640 | (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;
@@ -158,7 +158,11 @@ function swiftPackageIdentity(url) {
158
158
  function swiftManifestTargets(manifest, resourcePaths = []) {
159
159
  const implicitResources = swiftImplicitResourcePaths(resourcePaths);
160
160
  const targets = [];
161
- const declarations = manifestCalls(manifest, ["executableTarget", "target"]);
161
+ const declarations = manifestCalls(manifest, [
162
+ "executableTarget",
163
+ "target",
164
+ "systemLibrary"
165
+ ]);
162
166
  const targetNames = new Set(
163
167
  declarations.flatMap(({ flat }) => {
164
168
  const name = /\bname\s*:\s*"([^"]+)"/.exec(flat)?.[1];
@@ -181,6 +185,9 @@ function swiftManifestTargets(manifest, resourcePaths = []) {
181
185
  const defines = [
182
186
  ...call.matchAll(/\.define\(\s*"([A-Za-z_][A-Za-z0-9_]*)"\s*\)/g)
183
187
  ].map((match) => match[1]);
188
+ const linkedLibraries = [...call.matchAll(/\.linkedLibrary\(\s*"([^"]+)"\s*\)/g)].map(
189
+ (match) => match[1]
190
+ );
184
191
  const excluded = [
185
192
  ...(/\bexclude\s*:\s*\[([^\]]*)\]/.exec(flat)?.[1] ?? "").matchAll(/"([^"]+)"/g)
186
193
  ].map((match) => match[1].replace(/^\.\//, "").replace(/\/+$/, ""));
@@ -215,10 +222,12 @@ function swiftManifestTargets(manifest, resourcePaths = []) {
215
222
  name,
216
223
  path: targetPath,
217
224
  executable,
225
+ ...kind === "systemLibrary" ? { systemLibrary: true } : {},
218
226
  languageMode,
219
227
  mainActorIsolation,
220
228
  ...cxxInterop ? { cxxInterop: true } : {},
221
229
  ...defines.length === 0 ? {} : { defines },
230
+ ...linkedLibraries.length === 0 ? {} : { linkedLibraries },
222
231
  resources,
223
232
  ...dependencies.length === 0 ? {} : { dependencies },
224
233
  ...excluded.length === 0 ? {} : { exclude: excluded }
@@ -282,7 +291,7 @@ function swiftMetalSourceFiles(files) {
282
291
  }
283
292
  function swiftPackagePartition(manifest, resourcePaths = []) {
284
293
  const targets = swiftManifestTargets(manifest, resourcePaths);
285
- return targets.length === 1 && targets[0].executable && targets[0].path === "." && targets[0].languageMode === 5 && !targets[0].mainActorIsolation && !targets[0].defines?.length && !targets[0].cxxInterop && !swiftManifestCxxLanguageStandard(manifest) ? [] : targets;
294
+ return targets.length === 1 && targets[0].executable && targets[0].path === "." && targets[0].languageMode === 5 && !targets[0].mainActorIsolation && !targets[0].defines?.length && !targets[0].linkedLibraries?.length && !targets[0].cxxInterop && !swiftManifestCxxLanguageStandard(manifest) ? [] : targets;
286
295
  }
287
296
  // Annotate the CommonJS export names for ESM import in node:
288
297
  0 && (module.exports = {
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1625 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1640 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/swift-package.ts
4
4
  function isSwiftManifestFile(file) {
@@ -123,7 +123,11 @@ function swiftPackageIdentity(url) {
123
123
  function swiftManifestTargets(manifest, resourcePaths = []) {
124
124
  const implicitResources = swiftImplicitResourcePaths(resourcePaths);
125
125
  const targets = [];
126
- const declarations = manifestCalls(manifest, ["executableTarget", "target"]);
126
+ const declarations = manifestCalls(manifest, [
127
+ "executableTarget",
128
+ "target",
129
+ "systemLibrary"
130
+ ]);
127
131
  const targetNames = new Set(
128
132
  declarations.flatMap(({ flat }) => {
129
133
  const name = /\bname\s*:\s*"([^"]+)"/.exec(flat)?.[1];
@@ -146,6 +150,9 @@ function swiftManifestTargets(manifest, resourcePaths = []) {
146
150
  const defines = [
147
151
  ...call.matchAll(/\.define\(\s*"([A-Za-z_][A-Za-z0-9_]*)"\s*\)/g)
148
152
  ].map((match) => match[1]);
153
+ const linkedLibraries = [...call.matchAll(/\.linkedLibrary\(\s*"([^"]+)"\s*\)/g)].map(
154
+ (match) => match[1]
155
+ );
149
156
  const excluded = [
150
157
  ...(/\bexclude\s*:\s*\[([^\]]*)\]/.exec(flat)?.[1] ?? "").matchAll(/"([^"]+)"/g)
151
158
  ].map((match) => match[1].replace(/^\.\//, "").replace(/\/+$/, ""));
@@ -180,10 +187,12 @@ function swiftManifestTargets(manifest, resourcePaths = []) {
180
187
  name,
181
188
  path: targetPath,
182
189
  executable,
190
+ ...kind === "systemLibrary" ? { systemLibrary: true } : {},
183
191
  languageMode,
184
192
  mainActorIsolation,
185
193
  ...cxxInterop ? { cxxInterop: true } : {},
186
194
  ...defines.length === 0 ? {} : { defines },
195
+ ...linkedLibraries.length === 0 ? {} : { linkedLibraries },
187
196
  resources,
188
197
  ...dependencies.length === 0 ? {} : { dependencies },
189
198
  ...excluded.length === 0 ? {} : { exclude: excluded }
@@ -247,7 +256,7 @@ function swiftMetalSourceFiles(files) {
247
256
  }
248
257
  function swiftPackagePartition(manifest, resourcePaths = []) {
249
258
  const targets = swiftManifestTargets(manifest, resourcePaths);
250
- return targets.length === 1 && targets[0].executable && targets[0].path === "." && targets[0].languageMode === 5 && !targets[0].mainActorIsolation && !targets[0].defines?.length && !targets[0].cxxInterop && !swiftManifestCxxLanguageStandard(manifest) ? [] : targets;
259
+ return targets.length === 1 && targets[0].executable && targets[0].path === "." && targets[0].languageMode === 5 && !targets[0].mainActorIsolation && !targets[0].defines?.length && !targets[0].linkedLibraries?.length && !targets[0].cxxInterop && !swiftManifestCxxLanguageStandard(manifest) ? [] : targets;
251
260
  }
252
261
  export {
253
262
  SWIFT_NATIVE_SOURCE_EXTENSIONS,
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1625 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1640 | (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;
@@ -22,6 +22,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
22
22
  // src/swift-submit.ts
23
23
  var swift_submit_exports = {};
24
24
  __export(swift_submit_exports, {
25
+ DEFAULT_SWIFT_COMPILE_BUILD_MS: () => DEFAULT_SWIFT_COMPILE_BUILD_MS,
26
+ MAX_SWIFT_COMPILE_BUILD_MS: () => MAX_SWIFT_COMPILE_BUILD_MS,
25
27
  MAX_SWIFT_COMPILE_FILES: () => MAX_SWIFT_COMPILE_FILES,
26
28
  MAX_SWIFT_COMPILE_IMAGES: () => MAX_SWIFT_COMPILE_IMAGES,
27
29
  MAX_SWIFT_COMPILE_IMAGE_BYTES: () => MAX_SWIFT_COMPILE_IMAGE_BYTES,
@@ -44,6 +46,11 @@ __export(swift_submit_exports, {
44
46
  });
45
47
  module.exports = __toCommonJS(swift_submit_exports);
46
48
 
49
+ // src/is-record.ts
50
+ function isRecord(value) {
51
+ return typeof value === "object" && value !== null && !Array.isArray(value);
52
+ }
53
+
47
54
  // src/swiftContract.ts
48
55
  function isSwiftResourcePath(value) {
49
56
  return typeof value === "string" && value.length <= 4096 && !value.startsWith("/") && !value.includes("\\") && !value.includes("\0") && value.split("/").every((part) => part !== "" && part !== "." && part !== "..");
@@ -67,6 +74,8 @@ var SWIFT_COMPILE_PATH = "/api/swift-compile";
67
74
  var SWIFT_PACKAGE_PATH = "/__peach/swift-package/";
68
75
  var SWIFT_HMR_PATH = "/__peach/swift-hmr";
69
76
  var MAX_SWIFT_COMPILE_FILES = 256;
77
+ var DEFAULT_SWIFT_COMPILE_BUILD_MS = 10 * 6e4;
78
+ var MAX_SWIFT_COMPILE_BUILD_MS = 60 * 6e4;
70
79
  var MAX_SWIFT_COMPILE_SOURCE_BYTES = 2 * 1024 * 1024;
71
80
  var MAX_SWIFT_COMPILE_RESOURCES = 128;
72
81
  var MAX_SWIFT_COMPILE_RESOURCE_BYTES = 2 * 1024 * 1024;
@@ -77,7 +86,7 @@ var MAX_SWIFT_COMPILE_METAL_TOTAL_BYTES = 8 * 1024 * 1024;
77
86
  var MAX_SWIFT_COMPILE_IMAGES = 128;
78
87
  var MAX_SWIFT_COMPILE_IMAGE_BYTES = 4 * 1024 * 1024;
79
88
  var MAX_SWIFT_COMPILE_IMAGE_TOTAL_BYTES = 16 * 1024 * 1024;
80
- var SWIFT_HOST_ABI = 46;
89
+ var SWIFT_HOST_ABI = 47;
81
90
  var POLL_INTERVAL_MS = 1500;
82
91
  function swiftNativeEntry(native, file) {
83
92
  return {
@@ -129,9 +138,6 @@ function httpSwiftCompileSubmit(context) {
129
138
  return outcome;
130
139
  };
131
140
  }
132
- function isRecord(value) {
133
- return typeof value === "object" && value !== null && !Array.isArray(value);
134
- }
135
141
  function isSwiftNativeModules(value) {
136
142
  return isRecord(value) && typeof value.packageId === "string" && typeof value.hash === "string" && isRecord(value.files) && isRecord(value.modules) && isRecord(value.views) && [
137
143
  ...Object.values(value.files),
@@ -217,6 +223,8 @@ async function compileSwiftProject(submit, work, origin, signal) {
217
223
  }
218
224
  // Annotate the CommonJS export names for ESM import in node:
219
225
  0 && (module.exports = {
226
+ DEFAULT_SWIFT_COMPILE_BUILD_MS,
227
+ MAX_SWIFT_COMPILE_BUILD_MS,
220
228
  MAX_SWIFT_COMPILE_FILES,
221
229
  MAX_SWIFT_COMPILE_IMAGES,
222
230
  MAX_SWIFT_COMPILE_IMAGE_BYTES,
@@ -1,4 +1,9 @@
1
- /*! peach v0.1.1625 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1640 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
+
3
+ // src/is-record.ts
4
+ function isRecord(value) {
5
+ return typeof value === "object" && value !== null && !Array.isArray(value);
6
+ }
2
7
 
3
8
  // src/swiftContract.ts
4
9
  function isSwiftResourcePath(value) {
@@ -23,6 +28,8 @@ var SWIFT_COMPILE_PATH = "/api/swift-compile";
23
28
  var SWIFT_PACKAGE_PATH = "/__peach/swift-package/";
24
29
  var SWIFT_HMR_PATH = "/__peach/swift-hmr";
25
30
  var MAX_SWIFT_COMPILE_FILES = 256;
31
+ var DEFAULT_SWIFT_COMPILE_BUILD_MS = 10 * 6e4;
32
+ var MAX_SWIFT_COMPILE_BUILD_MS = 60 * 6e4;
26
33
  var MAX_SWIFT_COMPILE_SOURCE_BYTES = 2 * 1024 * 1024;
27
34
  var MAX_SWIFT_COMPILE_RESOURCES = 128;
28
35
  var MAX_SWIFT_COMPILE_RESOURCE_BYTES = 2 * 1024 * 1024;
@@ -33,7 +40,7 @@ var MAX_SWIFT_COMPILE_METAL_TOTAL_BYTES = 8 * 1024 * 1024;
33
40
  var MAX_SWIFT_COMPILE_IMAGES = 128;
34
41
  var MAX_SWIFT_COMPILE_IMAGE_BYTES = 4 * 1024 * 1024;
35
42
  var MAX_SWIFT_COMPILE_IMAGE_TOTAL_BYTES = 16 * 1024 * 1024;
36
- var SWIFT_HOST_ABI = 46;
43
+ var SWIFT_HOST_ABI = 47;
37
44
  var POLL_INTERVAL_MS = 1500;
38
45
  function swiftNativeEntry(native, file) {
39
46
  return {
@@ -85,9 +92,6 @@ function httpSwiftCompileSubmit(context) {
85
92
  return outcome;
86
93
  };
87
94
  }
88
- function isRecord(value) {
89
- return typeof value === "object" && value !== null && !Array.isArray(value);
90
- }
91
95
  function isSwiftNativeModules(value) {
92
96
  return isRecord(value) && typeof value.packageId === "string" && typeof value.hash === "string" && isRecord(value.files) && isRecord(value.modules) && isRecord(value.views) && [
93
97
  ...Object.values(value.files),
@@ -172,6 +176,8 @@ async function compileSwiftProject(submit, work, origin, signal) {
172
176
  }
173
177
  }
174
178
  export {
179
+ DEFAULT_SWIFT_COMPILE_BUILD_MS,
180
+ MAX_SWIFT_COMPILE_BUILD_MS,
175
181
  MAX_SWIFT_COMPILE_FILES,
176
182
  MAX_SWIFT_COMPILE_IMAGES,
177
183
  MAX_SWIFT_COMPILE_IMAGE_BYTES,