peachsim 0.1.2220 → 0.1.2222

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 (128) hide show
  1. package/cli/commands/compat.ts +4 -4
  2. package/cli/commands/inspect.ts +4 -4
  3. package/cli/commands/report-issue.ts +1 -1
  4. package/cli/runtime-compat.ts +7 -2
  5. package/dist-lib/agent-daemon-client.cjs +1 -1
  6. package/dist-lib/agent-events.cjs +1 -1
  7. package/dist-lib/attached-projects.cjs +1 -1
  8. package/dist-lib/auth/shared-session.cjs +1 -1
  9. package/dist-lib/backend-origin.cjs +1 -1
  10. package/dist-lib/beta.cjs +1 -1
  11. package/dist-lib/beta.mjs +1 -1
  12. package/dist-lib/bridge-constants.cjs +1 -1
  13. package/dist-lib/bridge-contract-input.cjs +1 -1
  14. package/dist-lib/bridge-contract-input.mjs +1 -1
  15. package/dist-lib/bridge-contract.cjs +1 -1
  16. package/dist-lib/bridge-contract.mjs +1 -1
  17. package/dist-lib/bundle-channel.cjs +475 -381
  18. package/dist-lib/capture-contract.cjs +1 -1
  19. package/dist-lib/capture-contract.mjs +1 -1
  20. package/dist-lib/cloud-contract.cjs +1 -1
  21. package/dist-lib/cloud-contract.mjs +1 -1
  22. package/dist-lib/cloud-test-args.cjs +1 -1
  23. package/dist-lib/cloud-test-args.mjs +1 -1
  24. package/dist-lib/cloud.cjs +1 -1
  25. package/dist-lib/cloud.mjs +1 -1
  26. package/dist-lib/config.cjs +1 -1
  27. package/dist-lib/config.mjs +1 -1
  28. package/dist-lib/detox/index.cjs +3 -2
  29. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  30. package/dist-lib/expo-swift-bundle.cjs +472 -379
  31. package/dist-lib/expo-swift-metadata.cjs +1 -1
  32. package/dist-lib/expo-swift-metadata.mjs +1 -1
  33. package/dist-lib/home-paths.cjs +1 -1
  34. package/dist-lib/host/bridge-host.cjs +695 -574
  35. package/dist-lib/host/fetch-proxy-handler.cjs +10 -7
  36. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  37. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  38. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  39. package/dist-lib/host/websocket-proxy.cjs +1 -1
  40. package/dist-lib/index.cjs +8232 -7815
  41. package/dist-lib/jump-to-source-babel.cjs +1 -1
  42. package/dist-lib/jump-to-source-native.cjs +1 -1
  43. package/dist-lib/kotlin-host.cjs +1 -1
  44. package/dist-lib/menu.cjs +1 -1
  45. package/dist-lib/menu.mjs +1 -1
  46. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  47. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  48. package/dist-lib/metro-production-bundle.cjs +1 -1
  49. package/dist-lib/metro-production-bundle.mjs +1 -1
  50. package/dist-lib/metro.cjs +8146 -7737
  51. package/dist-lib/native-app-identity-project.cjs +331 -13
  52. package/dist-lib/native-app-identity-project.mjs +331 -13
  53. package/dist-lib/native-app-identity.cjs +16 -3
  54. package/dist-lib/native-app-identity.mjs +16 -3
  55. package/dist-lib/native-firebase-metadata.cjs +1 -1
  56. package/dist-lib/native-firebase-metadata.mjs +1 -1
  57. package/dist-lib/pdfium-raster.cjs +1 -1
  58. package/dist-lib/pdfium-raster.mjs +1 -1
  59. package/dist-lib/plist.cjs +1 -1
  60. package/dist-lib/plist.mjs +1 -1
  61. package/dist-lib/profiles.cjs +1 -1
  62. package/dist-lib/public-brand.cjs +1 -1
  63. package/dist-lib/public-origins-lib-esm.json +25 -24
  64. package/dist-lib/public-origins-lib.json +99 -96
  65. package/dist-lib/react-native-host-modules.cjs +1 -1
  66. package/dist-lib/react-native-host-modules.mjs +1 -1
  67. package/dist-lib/reap-browser.cjs +1 -1
  68. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  69. package/dist-lib/sdk.cjs +1 -1
  70. package/dist-lib/sdk.mjs +1 -1
  71. package/dist-lib/skills.cjs +532 -420
  72. package/dist-lib/swift-compile.cjs +84 -49
  73. package/dist-lib/swift-compile.mjs +84 -49
  74. package/dist-lib/swift-package.cjs +1 -1
  75. package/dist-lib/swift-package.mjs +1 -1
  76. package/dist-lib/swift-submit.cjs +1 -1
  77. package/dist-lib/swift-submit.mjs +1 -1
  78. package/dist-lib/swift-toolchain.cjs +1 -1
  79. package/dist-lib/swift.cjs +1 -1
  80. package/dist-lib/vite-swift.cjs +158 -69
  81. package/dist-lib/vite.cjs +2930 -2800
  82. package/dist-lib/worklet-executable.cjs +1 -1
  83. package/dist-lib/worklet-executable.mjs +1 -1
  84. package/dist-types/packages/peach-engine/src/cli-companion.d.ts +1 -0
  85. package/dist-types/packages/peach-engine/src/cli-host-terser.d.ts +7 -0
  86. package/dist-types/packages/peach-engine/src/engine/glass-material.d.ts +1 -1
  87. package/dist-types/packages/peach-engine/src/engine/liquid-glass.d.ts +1 -0
  88. package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +1 -0
  89. package/dist-types/packages/peach-engine/src/engine/node.d.ts +5 -0
  90. package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +8 -1
  91. package/dist-types/packages/peach-engine/src/engine/types.d.ts +3 -0
  92. package/dist-types/packages/peach-engine/src/engine/yoga-layout.d.ts +1 -1
  93. package/dist-types/packages/peach-engine/src/remote-stream/cloud-display.d.ts +2 -2
  94. package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1 -0
  95. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +1 -2
  96. package/dist-types/packages/peach-kit/src/internal.d.ts +1 -0
  97. package/dist-types/packages/peach-kit/src/ios-tint.d.ts +1 -0
  98. package/dist-types/packages/peach-kit/src/transitions/screen-transition-math.d.ts +25 -0
  99. package/kotlin/sdk.tar.gz +0 -0
  100. package/package.json +1 -1
  101. package/runtime-companion.json +1 -1
  102. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNAnimation.h +4 -4
  103. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNCameraController.h +1 -1
  104. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNConstraint.h +5 -5
  105. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNGeometry.h +1 -1
  106. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNLevelOfDetail.h +1 -1
  107. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNParametricGeometry.h +9 -9
  108. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNParticleSystem.h +1 -1
  109. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNPhysicsBehavior.h +7 -7
  110. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNRenderer.h +1 -1
  111. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNShadable.h +1 -1
  112. package/sdk/ios/System/Library/Frameworks/SceneKit.framework/Headers/SCNTechnique.h +1 -1
  113. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/NSLayoutConstraint.h +1 -8
  114. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Modules/module.modulemap +1 -0
  115. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UIKitTypes.h +1 -0
  116. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UILayoutPriority.h +11 -0
  117. package/src/cli-runtime.ts +1 -0
  118. package/src/expo-native-workspace.ts +14 -10
  119. package/src/expo-workspace-exclusion.ts +10 -7
  120. package/src/react-native-autolinking.ts +2 -1
  121. package/src/runtime-delivery.ts +7 -0
  122. package/src/swift-compile.ts +90 -54
  123. package/src/swift-coverage/xcode-assets.ts +4 -2
  124. package/src/swift-host.ts +53 -14
  125. package/src/swift-objc-import.ts +4 -0
  126. package/src/wasm-optimize.ts +5 -1
  127. package/src/xcode-project.ts +26 -5
  128. package/src/xcode-target-members.ts +25 -3
@@ -22,8 +22,11 @@ const FEATURES = [
22
22
  'sign-ext',
23
23
  ]
24
24
 
25
+ // PEACH_SWIFT_NAMES=1 keeps the name section so a trap stack names its functions.
26
+ export const KEEP_WASM_NAMES = process.env.PEACH_SWIFT_NAMES === '1'
27
+
25
28
  /** feeds the artifact hash: a new optimizer or flag set is a new artifact. */
26
- export const WASM_OPTIMIZE_IDENTITY = `wasm-opt ${BINARYEN_VERSION} -Oz ${FEATURES.join(',')}`
29
+ export const WASM_OPTIMIZE_IDENTITY = `wasm-opt ${BINARYEN_VERSION} -Oz ${FEATURES.join(',')}${KEEP_WASM_NAMES ? ' -g' : ''}`
27
30
 
28
31
  // the sha256 of each Binaryen release archive wasm-opt resolves for its own platform
29
32
  // keys; update both when the wasm-opt package moves BINARYEN_VERSION.
@@ -73,6 +76,7 @@ async function runWasmOpt(
73
76
  const result = await wasmOpt(
74
77
  [
75
78
  '-Oz',
79
+ ...(KEEP_WASM_NAMES ? ['-g'] : []),
76
80
  ...skipPasses.flatMap((pass) => ['--skip-pass', pass]),
77
81
  ...FEATURES.map((feature) => `--enable-${feature}`),
78
82
  file,
@@ -12,6 +12,7 @@ import { createHash } from 'node:crypto'
12
12
  import fs from 'node:fs'
13
13
  import path from 'node:path'
14
14
  import plist from 'plist'
15
+ import iosSdk from './ios-sdk-frameworks.json' with { type: 'json' }
15
16
  import { isRecord } from './is-record'
16
17
  import { readKeychainAccessGroups } from './native-app-identity'
17
18
  import { preparedXcodePhase } from './prepared-xcode-phases'
@@ -93,6 +94,8 @@ export interface XcodeModuleTarget {
93
94
  allSources: string[]
94
95
  /** absolute paths of every resource file the target copies, bundles expanded. */
95
96
  resources: string[]
97
+ /** a folder reference's files by their path in the bundle, which keeps the folder. */
98
+ resourceNames: Record<string, string>
96
99
  /** files the target's shell phases copy with a plain `cp`, resolved from the phase's own assignments and the build settings. */
97
100
  copiedFiles: { from: string; to: string }[]
98
101
  /** a shell phase of the target generates its INFOPLIST_FILE, which exists only once prepared. */
@@ -1032,6 +1035,7 @@ function targetMembers(
1032
1035
  ): {
1033
1036
  sources: string[]
1034
1037
  resources: string[]
1038
+ resourceNames: Record<string, string>
1035
1039
  copiedFiles: { from: string; to: string }[]
1036
1040
  generatedInfoPlist: boolean
1037
1041
  allSources: string[]
@@ -1043,6 +1047,7 @@ function targetMembers(
1043
1047
  const allSources = new Set<string>()
1044
1048
  const headers = new Set<string>()
1045
1049
  const resources = new Set<string>()
1050
+ const resourceNames: Record<string, string> = {}
1046
1051
  const scriptForOutput = new Map<string, string>()
1047
1052
  const copiedFiles: { from: string; to: string }[] = []
1048
1053
  let generatedInfoPlist = false
@@ -1232,13 +1237,14 @@ function targetMembers(
1232
1237
  xcodePathResolver(project.objects, project.projectDir, path.join, settings),
1233
1238
  (file) => (isDirectory(file) ? walkFiles(file) : fs.existsSync(file) ? [file] : []),
1234
1239
  path.join,
1235
- (file, kind) => {
1240
+ (file, kind, bundleName) => {
1236
1241
  if (kind === 'header') {
1237
1242
  headers.add(file)
1238
1243
  return
1239
1244
  }
1240
1245
  if (kind === 'resource') {
1241
1246
  resources.add(file)
1247
+ if (bundleName) resourceNames[file] = bundleName
1242
1248
  return
1243
1249
  }
1244
1250
  if (!fs.existsSync(file)) {
@@ -1376,6 +1382,7 @@ function targetMembers(
1376
1382
  return {
1377
1383
  sources: [...sources].sort(),
1378
1384
  resources: [...resources].sort(),
1385
+ resourceNames,
1379
1386
  copiedFiles,
1380
1387
  generatedInfoPlist,
1381
1388
  allSources: [...allSources].sort(),
@@ -3117,10 +3124,17 @@ export function readXcodeAppTarget(
3117
3124
  )
3118
3125
  continue
3119
3126
  const resolved = fileId ? project.resolvePath(fileId) : null
3120
- if (fileId && resolved !== null && !fs.existsSync(resolved))
3121
- throw new Error(
3122
- `${str(target.name) ?? 'target'}: linked framework ${name} (${fileId}) points at missing ${resolved} in ${project.projectFile}`,
3123
- )
3127
+ // a reference to a file that is not there still links -framework
3128
+ // <name> (xcode 27.1, iOS simulator): the sdk's framework answers it,
3129
+ // and a name the sdk lacks fails the link
3130
+ if (fileId && resolved !== null && !fs.existsSync(resolved)) {
3131
+ if (!iosSdk.frameworks.includes(name))
3132
+ throw new Error(
3133
+ `${str(target.name) ?? 'target'}: linked framework ${name} (${fileId}) points at missing ${resolved} in ${project.projectFile}`,
3134
+ )
3135
+ sdkFrameworks.add(name)
3136
+ continue
3137
+ }
3124
3138
  if (!binaryFrameworks.get(name)) binaryFrameworks.set(name, resolved)
3125
3139
  }
3126
3140
  }
@@ -3234,6 +3248,13 @@ export function readXcodeAppTarget(
3234
3248
  source.kind === 'local' && fs.existsSync(source.dir) ? [source.dir] : [],
3235
3249
  ),
3236
3250
  ...new Set(podSourceDirs),
3251
+ // a target's own files may sit beside the project, such as an asset
3252
+ // catalog one folder up, and xcode builds them from there
3253
+ ...new Set(
3254
+ [...module.allSources, ...module.resources]
3255
+ .filter((file) => fs.existsSync(file))
3256
+ .map((file) => path.dirname(file)),
3257
+ ),
3237
3258
  ].map((dir) => fs.realpathSync.native(dir)),
3238
3259
  ),
3239
3260
  projectFiles: [
@@ -4,6 +4,8 @@ import { isDict, list, str, type PlistDict } from './openstep-plist'
4
4
 
5
5
  const NEVER_MEMBER =
6
6
  /(?:^|\/)(?:Info\.plist|[^/]+\.entitlements|[^/]+\.xcconfig|\.DS_Store)$/
7
+ // a folder reference and a scenekit asset catalog copy as one directory of that name.
8
+ const FOLDER_REFERENCE = /^(?:folder|wrapper\.scnassets)$/
7
9
  const BUNDLE_DIR =
8
10
  /\.(xcassets|bundle|lproj|xcdatamodeld|scnassets|spriteatlas|rcproject|storyboardc|icon)$/
9
11
 
@@ -71,7 +73,11 @@ export function xcodeTargetMemberVisitor(objects: PlistDict) {
71
73
  resolvePath: (id: string) => string | null,
72
74
  filesUnder: (path: string) => string[],
73
75
  join: (base: string, own: string) => string,
74
- visit: (file: string, kind: 'source' | 'header' | 'resource') => void,
76
+ visit: (
77
+ file: string,
78
+ kind: 'source' | 'header' | 'resource',
79
+ bundleName?: string,
80
+ ) => void,
75
81
  ): void => {
76
82
  const target = objects[targetId]
77
83
  if (!isDict(target)) return
@@ -93,8 +99,24 @@ export function xcodeTargetMemberVisitor(objects: PlistDict) {
93
99
  for (const id of refs) {
94
100
  const file = resolvePath(id)
95
101
  if (file === null) continue
96
- if (phase.isa === 'PBXSourcesBuildPhase') visit(file, 'source')
97
- else for (const inner of filesUnder(file)) visit(inner, 'resource')
102
+ if (phase.isa === 'PBXSourcesBuildPhase') {
103
+ visit(file, 'source')
104
+ continue
105
+ }
106
+ const ref = objects[id]
107
+ const type = isDict(ref)
108
+ ? (str(ref.lastKnownFileType) ?? str(ref.explicitFileType) ?? '')
109
+ : ''
110
+ const root = file.replace(/[\\/]+$/, '')
111
+ const folder = FOLDER_REFERENCE.test(type)
112
+ ? root.split(/[\\/]/).pop()
113
+ : undefined
114
+ for (const inner of filesUnder(file))
115
+ visit(
116
+ inner,
117
+ 'resource',
118
+ folder && `${folder}/${inner.slice(root.length + 1).replaceAll('\\', '/')}`,
119
+ )
98
120
  }
99
121
  }
100
122
  }