peachsim 0.1.2225 → 0.1.2228

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 (110) hide show
  1. package/cli/bridge-flow-runner.ts +56 -3
  2. package/cli/commands/control.ts +27 -1
  3. package/cli/commands/flow.ts +26 -0
  4. package/cli/commands/package.ts +9 -2
  5. package/cli/drivers/playwright.ts +1 -0
  6. package/cli/drivers/types.ts +3 -0
  7. package/dist-lib/agent-daemon-client.cjs +1 -1
  8. package/dist-lib/agent-events.cjs +1 -1
  9. package/dist-lib/attached-projects.cjs +1 -1
  10. package/dist-lib/auth/shared-session.cjs +1 -1
  11. package/dist-lib/backend-origin.cjs +1 -1
  12. package/dist-lib/beta.cjs +1 -1
  13. package/dist-lib/beta.mjs +1 -1
  14. package/dist-lib/bridge-constants.cjs +1 -1
  15. package/dist-lib/bridge-contract-input.cjs +1 -1
  16. package/dist-lib/bridge-contract-input.mjs +1 -1
  17. package/dist-lib/bridge-contract.cjs +1 -1
  18. package/dist-lib/bridge-contract.mjs +1 -1
  19. package/dist-lib/bundle-channel.cjs +78 -9
  20. package/dist-lib/capture-contract.cjs +1 -1
  21. package/dist-lib/capture-contract.mjs +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/config.mjs +1 -1
  30. package/dist-lib/detox/index.cjs +2 -2
  31. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  32. package/dist-lib/expo-swift-bundle.cjs +76 -7
  33. package/dist-lib/expo-swift-metadata.cjs +1 -1
  34. package/dist-lib/expo-swift-metadata.mjs +1 -1
  35. package/dist-lib/home-paths.cjs +1 -1
  36. package/dist-lib/host/bridge-host.cjs +78 -9
  37. package/dist-lib/host/fetch-proxy-handler.cjs +4 -4
  38. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  39. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  40. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  41. package/dist-lib/host/websocket-proxy.cjs +1 -1
  42. package/dist-lib/index.cjs +4 -4
  43. package/dist-lib/jump-to-source-babel.cjs +1 -1
  44. package/dist-lib/jump-to-source-native.cjs +1 -1
  45. package/dist-lib/kotlin-host.cjs +1 -1
  46. package/dist-lib/menu.cjs +1 -1
  47. package/dist-lib/menu.mjs +1 -1
  48. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  49. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  50. package/dist-lib/metro-production-bundle.cjs +11 -4
  51. package/dist-lib/metro-production-bundle.mjs +10 -4
  52. package/dist-lib/metro.cjs +4 -4
  53. package/dist-lib/native-app-identity-project.cjs +2 -2
  54. package/dist-lib/native-app-identity-project.mjs +2 -2
  55. package/dist-lib/native-app-identity.cjs +1 -1
  56. package/dist-lib/native-app-identity.mjs +1 -1
  57. package/dist-lib/native-firebase-metadata.cjs +1 -1
  58. package/dist-lib/native-firebase-metadata.mjs +1 -1
  59. package/dist-lib/pdfium-raster.cjs +1 -1
  60. package/dist-lib/pdfium-raster.mjs +1 -1
  61. package/dist-lib/plist.cjs +1 -1
  62. package/dist-lib/plist.mjs +1 -1
  63. package/dist-lib/profiles.cjs +1 -1
  64. package/dist-lib/public-brand.cjs +1 -1
  65. package/dist-lib/public-origins-lib-esm.json +24 -24
  66. package/dist-lib/public-origins-lib.json +54 -53
  67. package/dist-lib/react-native-host-modules.cjs +1 -1
  68. package/dist-lib/react-native-host-modules.mjs +1 -1
  69. package/dist-lib/reap-browser.cjs +1 -1
  70. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  71. package/dist-lib/sdk.cjs +1 -1
  72. package/dist-lib/sdk.mjs +1 -1
  73. package/dist-lib/skills.cjs +153 -23
  74. package/dist-lib/swift-compile.cjs +68 -4
  75. package/dist-lib/swift-compile.mjs +67 -4
  76. package/dist-lib/swift-package.cjs +1 -1
  77. package/dist-lib/swift-package.mjs +1 -1
  78. package/dist-lib/swift-submit.cjs +1 -1
  79. package/dist-lib/swift-submit.mjs +1 -1
  80. package/dist-lib/swift-toolchain.cjs +1 -1
  81. package/dist-lib/swift.cjs +1 -1
  82. package/dist-lib/vite-swift.cjs +75 -6
  83. package/dist-lib/vite.cjs +4 -4
  84. package/dist-lib/worklet-executable.cjs +1 -1
  85. package/dist-lib/worklet-executable.mjs +1 -1
  86. package/dist-types/packages/peach-engine/src/bundle-parse-receipt.d.ts +17 -0
  87. package/dist-types/packages/peach-engine/src/engine/canvaskit-api.d.ts +2 -1
  88. package/dist-types/packages/peach-engine/src/engine/font-config.d.ts +2 -2
  89. package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +1 -0
  90. package/dist-types/packages/peach-engine/src/engine/native-paragraph.d.ts +4 -0
  91. package/dist-types/packages/peach-engine/src/engine/node.d.ts +2 -0
  92. package/dist-types/packages/peach-engine/src/engine/types.d.ts +7 -0
  93. package/dist-types/packages/peach-engine/src/engine/yoga-layout.d.ts +2 -0
  94. package/dist-types/packages/peach-engine/src/metro-fingerprint.d.ts +3 -2
  95. package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1 -0
  96. package/dist-types/packages/peach-engine/src/render-worker/protocol.d.ts +3 -3
  97. package/dist-types/packages/peach-engine/src/rolldown-bundle-inventory.d.ts +0 -5
  98. package/dist-types/packages/peach-kit/src/capabilities.d.ts +2 -0
  99. package/dist-types/packages/peach-kit/src/internal.d.ts +1 -1
  100. package/dist-types/packages/peach-kit/src/ios-tint.d.ts +2 -0
  101. package/kotlin/sdk.tar.gz +0 -0
  102. package/package.json +1 -1
  103. package/runtime-companion.json +1 -1
  104. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/UIControl.h +0 -26
  105. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UIKitTypes.h +27 -0
  106. package/sdk/ios/usr/include/ObjectiveC.apinotes +380 -7
  107. package/src/metro-production-bundle.ts +15 -2
  108. package/src/swift-compile.ts +77 -2
  109. package/src/swift-standin-emit.ts +1 -0
  110. package/src/swift-standins.ts +8 -0
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -7102,7 +7102,7 @@ function emitSwiftStandin(sourceGraphs, options) {
7102
7102
  "Equatable",
7103
7103
  "CustomStringConvertible",
7104
7104
  "CustomDebugStringConvertible"
7105
- ].includes(name3)) && !(name3 === nsObjectProtocol && externalRoot(id) === nsObject) && !options.unconformed?.get(path51)?.has(name3)
7105
+ ].includes(name3)) && !(name3 === nsObjectProtocol && externalRoot(id) === nsObject) && !options.unconformed?.get(path51)?.has(name3.split(/::|\./).pop()) && !options.unconformed?.get(path51)?.has(name3)
7106
7106
  )
7107
7107
  ].filter((name3, at, all2) => all2.indexOf(name3) === at);
7108
7108
  const parentSymbol = superId.has(id) ? byId.get(superId.get(id)) : void 0;
@@ -16960,6 +16960,20 @@ var clangInterfaceHeader = (header) => header.replace(/^@import (?:UIKitCore|UIK
16960
16960
  /^@import (?:CoreFoundation|FoundationNetworking);$/gm,
16961
16961
  "@import Foundation;"
16962
16962
  ).replace(/\b_TtC10Foundation\d+(NS\w+)\b/g, "$1").replace(/\b__attribute__\(\(objc_subclassing_restricted\)\)\s*/g, "");
16963
+ function swiftHeaderWithSuperclassImports(header, interfaceFor) {
16964
+ const superclasses = new Set(
16965
+ [...header.matchAll(/@interface\s+\w+\s*:\s*(\w+)/g)].map((match) => match[1])
16966
+ );
16967
+ return header.replace(/^@import (\w+);$/gm, (statement, name3) => {
16968
+ const dependency = interfaceFor(name3);
16969
+ if (!dependency || ![...swiftInterfaceDeclarations(dependency.header)].some(
16970
+ (name4) => superclasses.has(name4)
16971
+ ))
16972
+ return statement;
16973
+ return `${statement}
16974
+ #import ${JSON.stringify(dependency.file)}`;
16975
+ });
16976
+ }
16963
16977
  var swiftInterfaceDeclarations = (header) => /* @__PURE__ */ new Set([
16964
16978
  ...[
16965
16979
  ...header.matchAll(
@@ -17313,7 +17327,7 @@ var OPTIONAL_FRAMEWORKS = new Set(Object.keys(OPTIONAL_FRAMEWORK_DEPENDENCIES));
17313
17327
  function swiftOptionalFramework(name3) {
17314
17328
  return OPTIONAL_FRAMEWORKS.has(name3);
17315
17329
  }
17316
- var SWIFT_IMPORT = /^\s*(?:@\w+(?:\([^)]*\))?\s+)*import\s+(?:(?:typealias|struct|class|enum|protocol|let|var|func)\s+)?([A-Za-z_][A-Za-z0-9_]*)/;
17330
+ var SWIFT_IMPORT = /^\s*(?:@\w+(?:\([^)]*\))?\s+|(?:public|package|internal|fileprivate|private)\s+)*import\s+(?:(?:typealias|struct|class|enum|protocol|let|var|func)\s+)?([A-Za-z_][A-Za-z0-9_]*)/;
17317
17331
  var kleeneNot = (value) => value === void 0 ? void 0 : !value;
17318
17332
  var kleeneAnd = (left, right) => left === false || right === false ? false : left === true && right === true ? true : void 0;
17319
17333
  var kleeneOr = (left, right) => left === true || right === true ? true : left === false && right === false ? false : void 0;
@@ -17814,7 +17828,7 @@ var darwinRecordsRegion = (quoted2) => quoted2.length ? ["-Wl,--start-lib", ...q
17814
17828
  var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
17815
17829
  var MULTI_MANIFEST_VERSION = 68;
17816
17830
  var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
17817
- var compilerSourceDigest = true ? "645b0e6bc4e374f7c82da4d402e0ec9ddedfc49d6e5a74b73284852f1fbd4efc" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
17831
+ var compilerSourceDigest = true ? "280e858b01b1c1393d3765c8d6ff1b3ce4a1a93d7fb7e3dd2d4d3e5f1d5f1ac2" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
17818
17832
  function swiftArtifactHash(input, release, moduleRoot) {
17819
17833
  const hash = (0, import_node_crypto13.createHash)("sha256");
17820
17834
  hash.update(`swift-compile
@@ -22027,6 +22041,51 @@ function compileSwiftProjectOnce(input, options) {
22027
22041
  if ((0, import_node_fs27.existsSync)(linked) && (0, import_node_fs27.statSync)(linked).size <= 8)
22028
22042
  (0, import_node_fs27.rmSync)(linked, { force: true });
22029
22043
  report("compiling and linking Swift modules");
22044
+ const frameworkInterfaces = /* @__PURE__ */ new Map();
22045
+ const frameworkInterface = (name3) => {
22046
+ if (frameworkInterfaces.has(name3)) return frameworkInterfaces.get(name3);
22047
+ const source = distribution ? import_node_path27.default.join(frameworkRoot, "modules", `${name3}-Swift.h`) : import_node_path27.default.join(
22048
+ prebuilt.modules,
22049
+ "..",
22050
+ `${name3}.build/include/${name3}-Swift.h`
22051
+ );
22052
+ if (!(0, import_node_fs27.existsSync)(source)) {
22053
+ frameworkInterfaces.set(name3, null);
22054
+ return null;
22055
+ }
22056
+ const headers = import_node_path27.default.join(
22057
+ swiftSdkPaths(frameworkRoot, options.toolchainBin).darwin,
22058
+ `System/Library/Frameworks/${name3}.framework/Headers`
22059
+ );
22060
+ const declared = /* @__PURE__ */ new Set();
22061
+ if ((0, import_node_fs27.existsSync)(headers)) {
22062
+ for (const file of (0, import_node_fs27.readdirSync)(headers, {
22063
+ recursive: true,
22064
+ encoding: "utf8"
22065
+ }))
22066
+ if (file.endsWith(".h"))
22067
+ for (const name4 of swiftInterfaceDeclarations(
22068
+ (0, import_node_fs27.readFileSync)(import_node_path27.default.join(headers, file), "utf8")
22069
+ ))
22070
+ declared.add(name4);
22071
+ }
22072
+ const header = withoutSwiftDeclarations(
22073
+ clangInterfaceHeader((0, import_node_fs27.readFileSync)(source, "utf8")),
22074
+ declared,
22075
+ `#import <${name3}/${name3}.h>`
22076
+ );
22077
+ const value = {
22078
+ file: import_node_path27.default.join(root, ".build/peach-framework-objc", `${name3}-Swift.h`),
22079
+ header
22080
+ };
22081
+ frameworkInterfaces.set(name3, value);
22082
+ writeBuildFile(
22083
+ value.file,
22084
+ ((0, import_node_fs27.existsSync)(import_node_path27.default.join(headers, `${name3}.h`)) ? `#import <${name3}/${name3}.h>
22085
+ ` : "") + swiftHeaderWithSuperclassImports(header, frameworkInterface)
22086
+ );
22087
+ return value;
22088
+ };
22030
22089
  try {
22031
22090
  const headerBuilds = preparation.headerProductTarget ? [
22032
22091
  ...Object.keys(preparation.nativeHeaderDeclarations),
@@ -22054,7 +22113,10 @@ function compileSwiftProjectOnce(input, options) {
22054
22113
  writeBuildFile(
22055
22114
  emitted,
22056
22115
  withoutSwiftDeclarations(
22057
- clangInterfaceHeader((0, import_node_fs27.readFileSync)(original, "utf8")),
22116
+ swiftHeaderWithSuperclassImports(
22117
+ clangInterfaceHeader((0, import_node_fs27.readFileSync)(original, "utf8")),
22118
+ frameworkInterface
22119
+ ),
22058
22120
  new Set(preparation.nativeHeaderDeclarations[producer]),
22059
22121
  `#import <${producer}/${producer}.h>`
22060
22122
  )
@@ -31378,7 +31440,7 @@ function sourceClosureDigest(srcDir, entrypoints) {
31378
31440
  return hash.digest("hex");
31379
31441
  }
31380
31442
  var standinSourceDigest = (srcDir = __sootsim_import_meta_dirname) => sourceClosureDigest(srcDir, STANDIN_DIGEST_ENTRYPOINTS);
31381
- var STANDIN_SOURCE_DIGEST = true ? "7ad2d908aa8d716181e88c4bc1a8e1fb721aa69e8090d0d7ad5851f9b8de0944" : standinSourceDigest();
31443
+ var STANDIN_SOURCE_DIGEST = true ? "c157dea0314bab3ba5af4145cc3ba5b8a4d824fa6677166162e49713afe384bb" : standinSourceDigest();
31382
31444
 
31383
31445
  // src/swift-standins.ts
31384
31446
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -33599,6 +33661,13 @@ function graphStandin(module2, graphs, values, wasm, binary, toolchain, work, re
33599
33661
  unconformed.set(owner, /* @__PURE__ */ new Set([...unconformed.get(owner) ?? [], conformance]));
33600
33662
  continue;
33601
33663
  }
33664
+ const redundant = /^redundant conformance of '\w+' to protocol '(\w+)'$/.exec(
33665
+ match[3]
33666
+ )?.[1];
33667
+ if (owner && redundant) {
33668
+ unconformed.set(owner, /* @__PURE__ */ new Set([...unconformed.get(owner) ?? [], redundant]));
33669
+ continue;
33670
+ }
33602
33671
  if (owner && swiftPaths.has(owner))
33603
33672
  throw new Error(
33604
33673
  `Swift declaration ${module2}.${owner} does not typecheck: ${match[3]}`
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1072,7 +1072,7 @@ var init_src = __esm({
1072
1072
  var runtime_companion_default;
1073
1073
  var init_runtime_companion = __esm({
1074
1074
  "runtime-companion.json"() {
1075
- runtime_companion_default = { abi: 1, sha256: "ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42", file: "node/cli-ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42.cjs" };
1075
+ runtime_companion_default = { abi: 1, sha256: "286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa", file: "node/cli-286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa.cjs" };
1076
1076
  }
1077
1077
  });
1078
1078
 
@@ -3228,7 +3228,7 @@ function readIosSdkTree(root) {
3228
3228
 
3229
3229
  // src/swift-standin-digest.ts
3230
3230
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
3231
- var STANDIN_SOURCE_DIGEST = true ? "7ad2d908aa8d716181e88c4bc1a8e1fb721aa69e8090d0d7ad5851f9b8de0944" : standinSourceDigest();
3231
+ var STANDIN_SOURCE_DIGEST = true ? "c157dea0314bab3ba5af4145cc3ba5b8a4d824fa6677166162e49713afe384bb" : standinSourceDigest();
3232
3232
 
3233
3233
  // src/expo-native-workspace.ts
3234
3234
  init_define_SWIFT_COVERAGE_SOURCE_DIGESTS();
@@ -6785,7 +6785,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
6785
6785
  var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
6786
6786
  (module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
6787
6787
  ).join("");
6788
- var compilerSourceDigest = true ? "645b0e6bc4e374f7c82da4d402e0ec9ddedfc49d6e5a74b73284852f1fbd4efc" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
6788
+ var compilerSourceDigest = true ? "280e858b01b1c1393d3765c8d6ff1b3ce4a1a93d7fb7e3dd2d4d3e5f1d5f1ac2" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
6789
6789
  var CORE_FOUNDATION_HANDLE_IMPORTS = [
6790
6790
  "CFAllocator",
6791
6791
  "CFArray",
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2225 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2228 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/worklet-executable.ts
4
4
  import { parse } from "acorn";
@@ -0,0 +1,17 @@
1
+ import type { RolldownBundleInventory } from './rolldown-bundle-inventory.d.ts';
2
+ export type MetroBundleLayout = RNXMetroBundleLayout;
3
+ import type { RNXMetroBundleLayout } from '../../../../src/metro-production-bundle.ts';
4
+ export type BundleParseReceipt = {
5
+ kind: 'rolldown';
6
+ key: string;
7
+ inventory: RolldownBundleInventory;
8
+ } | {
9
+ kind: 'metro';
10
+ key: string;
11
+ layout: MetroBundleLayout;
12
+ };
13
+ export declare function carryBundleParse(receipt: BundleParseReceipt | null, report: (receipt: BundleParseReceipt) => void): void;
14
+ export declare function sha256Hex(text: string): Promise<string>;
15
+ export declare function bundleParseKey(textHash: string): string;
16
+ export declare function takeCarriedBundleParse(key: string): BundleParseReceipt | null;
17
+ export declare function reportBundleParse(receipt: BundleParseReceipt): void;
@@ -1,7 +1,7 @@
1
1
  import type { RuntimePlatform } from '../../../../../src/device-catalog.ts';
2
2
  import type { CanvasKitReanimatedApi } from './nativeReanimatedContract.d.ts';
3
3
  import type { CanvasKitReplayApi } from './nativeReplayContract.d.ts';
4
- import type { Canvas, CanvasKit, ImageFilter, Image, RuntimeEffect, Surface, SkPicture } from 'canvaskit-wasm';
4
+ import type { Canvas, FontCollection, Paragraph, CanvasKit, ImageFilter, Image, RuntimeEffect, Surface, SkPicture } from 'canvaskit-wasm';
5
5
  export interface CanvasKitSvgPaintApi {
6
6
  p18(): RuntimeEffect;
7
7
  p17(k1: number, k2: number, k3: number, k4: number, android: boolean, in1: ImageFilter | null, in2: ImageFilter | null): ImageFilter;
@@ -50,6 +50,7 @@ export interface CanvasKitGifApi {
50
50
  _peachSkottieGifDemand(json: string, assets?: Record<string, ArrayBuffer | Uint8Array>): number;
51
51
  }
52
52
  export interface CanvasKitTextDataApi {
53
+ _peachMakeParagraph(collection: FontCollection, pointer: number, length: number): Paragraph | null;
53
54
  HEAPU8: Uint8Array;
54
55
  _malloc(length: number): number;
55
56
  _free(pointer: number): void;
@@ -2,7 +2,7 @@ import { SF_PRO_FONT_URL } from './generated/sf-pro-font.d.ts';
2
2
  import type { DeviceSpec, RuntimePlatform } from '../../../../../src/device-catalog.ts';
3
3
  import type { CanvasKitRenderingApi } from './canvaskit-api.d.ts';
4
4
  import type { SootSimStyle } from './types.d.ts';
5
- import type { FontMgr, ParagraphBuilder, ParagraphStyle } from 'canvaskit-wasm';
5
+ import type { FontMgr, ParagraphStyle } from 'canvaskit-wasm';
6
6
  export declare const DEFAULT_FONT_FAMILY = "SF Pro";
7
7
  export declare const SF_PRO_VERTICAL_METRICS: {
8
8
  ascender: number;
@@ -105,7 +105,7 @@ export declare function noteTextSymbolRegistered(): void;
105
105
  export declare function registerEngineFontFamily(family: string): void;
106
106
  export declare function markSystemNamedFaceFamily(face: SystemNamedFace): void;
107
107
  export declare function registerLazySystemFontFamily(family: string): void;
108
- export declare function makeParagraphBuilder(ck: CanvasKitRenderingApi, style: ParagraphStyle, fontMgr: FontMgr): ParagraphBuilder;
108
+ export declare function makeParagraphBuilder(ck: CanvasKitRenderingApi, style: ParagraphStyle, fontMgr: FontMgr): import("./native-paragraph.d.ts").NativeParagraphBuilder;
109
109
  export declare function registerEngineAppFontFace(aliases: readonly string[], face: AppFontFaceStyle): void;
110
110
  export declare function isFontFamilyRegistered(family: string): boolean;
111
111
  export declare function getRegisteredFontFamilies(): string[];
@@ -18,6 +18,7 @@ export interface NativeLayoutExports {
18
18
  _peach_layout_freed_nodes(): number;
19
19
  _peach_layout_bind(slot: number, tag: number, observers: number, scale: number): void;
20
20
  _peach_layout_apply(slot: number): void;
21
+ _peach_layout_centered(slot: number, leading: number, trailing: number, margin: number, width: number, gap: number, ownerScale: number, leadingScale: number, trailingScale: number): void;
21
22
  _peach_layout_alignment(slot: number, alignmentAxis: number, alignmentGuide: number, alignmentFraction: number, alignmentScale: number): void;
22
23
  _peach_layout_attach(parent: number, child: number, index: number): void;
23
24
  _peach_layout_detach(parent: number, child: number): void;
@@ -0,0 +1,4 @@
1
+ import type { CanvasKitRenderingApi } from './canvaskit-api.d.ts';
2
+ import type { FontCollection, ParagraphBuilder, ParagraphStyle } from 'canvaskit-wasm';
3
+ export type NativeParagraphBuilder = Pick<ParagraphBuilder, 'addText' | 'pushStyle' | 'pop' | 'addPlaceholder' | 'build' | 'reset' | 'delete'>;
4
+ export declare function makeNativeParagraphBuilder(ck: CanvasKitRenderingApi, style: ParagraphStyle, collection: FontCollection): NativeParagraphBuilder;
@@ -1,5 +1,6 @@
1
1
  import type { DamageRect } from './damage-rect.d.ts';
2
2
  import type { TextGuides } from './text-first-baseline.d.ts';
3
+ import type { CenteredLayoutPlacement } from './types.d.ts';
3
4
  export { beginReadFrame, endReadFrame, readAnimatedValue, readPresentedAnimatedValue, } from './animated-value.d.ts';
4
5
  import type { NativeRenderer } from '../../../../../src/config.ts';
5
6
  import type { AndroidEdgeEffectState } from './android-stretch-effect.d.ts';
@@ -253,6 +254,7 @@ export declare class SootSimNode {
253
254
  _memberVersion: number;
254
255
  _memberOf: boolean;
255
256
  _hookPlacement: LayoutHookPlacement | null;
257
+ _centeredPlacement: CenteredLayoutPlacement | null;
256
258
  _onLayoutDispatchScheduled: boolean;
257
259
  private _classicLayoutAnimFrom;
258
260
  get _layoutAnimFrom(): SootSimLayout | null;
@@ -10,6 +10,13 @@ import type { FrameDamage } from './render-damage.d.ts';
10
10
  import type { AttributedParagraphStyle } from './text-paragraphContract.d.ts';
11
11
  import type { NumericTextPaintRequest } from '../../../peach-globals/src/index.d.ts';
12
12
  import type { Surface, Canvas, FontMgr, Image as SkImage } from 'canvaskit-wasm';
13
+ export interface CenteredLayoutPlacement {
14
+ leading: unknown;
15
+ trailing: unknown;
16
+ margin: number;
17
+ width: number;
18
+ gap: number;
19
+ }
13
20
  export type Falsy = undefined | null | false;
14
21
  export type RecursiveArray<T> = Array<T | RecursiveArray<T>>;
15
22
  export type StyleProp<T> = T | RecursiveArray<T | Falsy> | Falsy;
@@ -1,5 +1,6 @@
1
1
  import { type LayoutHookPlacement, SootSimNode } from './node.d.ts';
2
2
  import { type TextGuides } from './text-first-baseline.d.ts';
3
+ import type { CenteredLayoutPlacement } from './types.d.ts';
3
4
  import type { SootSimStyle, SootSimLayout, SootSimTextLayoutLine, MeasureContext } from './types.d.ts';
4
5
  export declare function setLayoutEventDispatcher(dispatcher: ((callback: () => void) => void) | null): void;
5
6
  export interface TextInkBox {
@@ -57,6 +58,7 @@ export declare function setLayoutHook(target: unknown, hook: ((view: SootSimNode
57
58
  export declare function invalidateLayoutHook(target: unknown): void;
58
59
  export declare function placeFromLayoutHook(target: unknown, placement: LayoutHookPlacement | null): void;
59
60
  export declare function layoutHookFrame(target: unknown): SootSimLayout | null;
61
+ export declare function setCenteredLayout(target: unknown, placement: CenteredLayoutPlacement | null): void;
60
62
  export declare function releaseYogaRoot(root: SootSimNode): void;
61
63
  export declare function nestsInParkedYogaTree(root: SootSimNode, owner: SootSimNode): boolean;
62
64
  export declare function parkYogaRoot(root: SootSimNode): boolean;
@@ -1,5 +1,5 @@
1
1
  import type { RNXMetroFingerprintAtom, RNXMetroFingerprintRegistry } from '../../../../src/metro-fingerprint-registry.ts';
2
- import type { RNXMetroModulePathMap } from '../../../../src/metro-production-bundle.ts';
2
+ import type { RNXMetroBundleLayout, RNXMetroModulePathMap } from '../../../../src/metro-production-bundle.ts';
3
3
  export interface BlindMetroModuleFingerprint extends RNXMetroFingerprintAtom {
4
4
  moduleId: number;
5
5
  dependencies: Array<number | null>;
@@ -24,10 +24,11 @@ export declare function metroFingerprintDiscriminators(input: {
24
24
  }>;
25
25
  export declare function isHermesBytecodeHeader(header: Uint8Array): boolean;
26
26
  export declare function isHermesBytecodeText(source: string): boolean;
27
- export declare function fingerprintBlindMetroBundle(source: string): Promise<BlindMetroModuleFingerprint[]>;
27
+ export declare function fingerprintBlindMetroBundle(source: string, knownLayout?: RNXMetroBundleLayout): Promise<BlindMetroModuleFingerprint[]>;
28
28
  export declare function metroFingerprintModuleClaimRoute(packageName: string, modulePath: string): string;
29
29
  export declare function inferMetroModuleIdentity(args: {
30
30
  source: string;
31
31
  registry: RNXMetroFingerprintRegistry;
32
32
  registryIntegrity: string;
33
+ layout?: RNXMetroBundleLayout;
33
34
  }): Promise<InferredMetroModuleIdentity>;
@@ -1097,6 +1097,7 @@ export interface CompositorStats {
1097
1097
  viewTag: number;
1098
1098
  targetExists: boolean;
1099
1099
  dirty: boolean;
1100
+ state: readonly string[];
1100
1101
  slotCount: number;
1101
1102
  graphSlots: number;
1102
1103
  objectKeys: readonly string[] | null;
@@ -160,7 +160,7 @@ export type HostToWorker = {
160
160
  simScopeId?: string;
161
161
  secureItemDeviceDomain: import('../../../peach-globals/src/secure-item-store.d.ts').SecureItemDeviceDomain;
162
162
  appLoad: AppLoadRequest;
163
- rolldownInventory?: import('../rolldown-bundle-inventory.d.ts').RolldownInventoryReceipt;
163
+ bundleParse?: import('../bundle-parse-receipt.d.ts').BundleParseReceipt;
164
164
  localStorageEntries?: Array<[string, string]>;
165
165
  sessionStorageEntries?: Array<[string, string]>;
166
166
  prefersDark?: boolean;
@@ -867,8 +867,8 @@ export type WorkerToHost = {
867
867
  type: 'bundleProgress';
868
868
  percent: number | null;
869
869
  } | {
870
- type: 'rolldownInventory';
871
- receipt: import('../rolldown-bundle-inventory.d.ts').RolldownInventoryReceipt;
870
+ type: 'bundleParse';
871
+ receipt: import('../bundle-parse-receipt.d.ts').BundleParseReceipt;
872
872
  } | ({
873
873
  type: 'shellScene';
874
874
  } & ShellScenePayload) | {
@@ -76,11 +76,6 @@ export interface LocalNameOffsets {
76
76
  ends: Int32Array;
77
77
  shorthand: Uint8Array;
78
78
  }
79
- export interface RolldownInventoryReceipt {
80
- key: string;
81
- inventory: RolldownBundleInventory;
82
- }
83
- export declare function carryRolldownBundleInventory(receipt: RolldownInventoryReceipt | null, report: (receipt: RolldownInventoryReceipt) => void): void;
84
79
  export declare function stripRolldownBundleInventoryFooter(source: string): string;
85
80
  export declare function hasRolldownInventoryMarkers(source: string, format?: TextBundleFormat): boolean;
86
81
  export declare function buildRolldownBundleInventory(source: string): Promise<RolldownBundleInventory>;
@@ -222,6 +222,7 @@ export interface SootSimEngineConfig {
222
222
  }) => void;
223
223
  invalidateLayoutHook: (view: unknown) => void;
224
224
  placeFromLayoutHook: (view: unknown, placement: LayoutHookPlacement | null) => void;
225
+ setCenteredLayout: (view: unknown, placement: SlotContainer['_centeredPlacement']) => void;
225
226
  layoutHookFrame: (view: unknown) => {
226
227
  x: number;
227
228
  y: number;
@@ -549,6 +550,7 @@ export interface NativeAlertsConfig {
549
550
  dismissActionSheet: (handle: number) => void;
550
551
  isWindowTintDimmed: () => boolean;
551
552
  subscribeWindowTintDimmed: (listener: () => void) => () => void;
553
+ dimWindowTint: () => () => void;
552
554
  }
553
555
  export interface NativeNotificationsConfig {
554
556
  push: (spec: {
@@ -3,4 +3,4 @@ export { bindReact } from './react-bridge.d.ts';
3
3
  export { POPOVER_ARROWS, POPOVER_ARROW_DEPTH, POPOVER_CORNER_RADIUS, placePopover, centerArrowlessPopover, popoverGlassArrow, popoverRegion, } from './ui/popover-placement.d.ts';
4
4
  export { KeyboardToolbarAccessoryContext, type KeyboardToolbarAccessory, } from './ui/keyboard-toolbar.d.ts';
5
5
  export { childControllerLayoutMargin, HostingSafeAreaContext, systemLayoutMargin, type HostingSafeAreaContainer, } from './ui/hosting-safe-area.d.ts';
6
- export { dimmedIOSTint } from './ios-tint.d.ts';
6
+ export { dimmedIOSTint, PresentedTintContext, useWindowTintDimmed } from './ios-tint.d.ts';
@@ -1 +1,3 @@
1
+ export declare const PresentedTintContext: import("react").Context<boolean>;
2
+ export declare function useWindowTintDimmed(): boolean;
1
3
  export declare function dimmedIOSTint(color: string): string;
package/kotlin/sdk.tar.gz CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peachsim",
3
- "version": "0.1.2225",
3
+ "version": "0.1.2228",
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",
@@ -1 +1 @@
1
- {"abi":1,"sha256":"ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42","file":"node/cli-ef38a3e8be87c77f4035640cf265efa9aff735577a2de14feb63c8a09afabd42.cjs"}
1
+ {"abi":1,"sha256":"286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa","file":"node/cli-286145bc3b2ca79a64228c88d8c2e088a592754d61b5855d0388974ee88863fa.cjs"}
@@ -14,32 +14,6 @@
14
14
 
15
15
  NS_HEADER_AUDIT_BEGIN(nullability, sendability)
16
16
 
17
- typedef NS_OPTIONS(NSUInteger, UIControlEvents) {
18
- UIControlEventTouchDown = 1 << 0, // on all touch downs
19
- UIControlEventTouchDownRepeat = 1 << 1, // on multiple touchdowns (tap count > 1)
20
- UIControlEventTouchDragInside = 1 << 2,
21
- UIControlEventTouchDragOutside = 1 << 3,
22
- UIControlEventTouchDragEnter = 1 << 4,
23
- UIControlEventTouchDragExit = 1 << 5,
24
- UIControlEventTouchUpInside = 1 << 6,
25
- UIControlEventTouchUpOutside = 1 << 7,
26
- UIControlEventTouchCancel = 1 << 8,
27
-
28
- UIControlEventValueChanged = 1 << 12, // sliders, etc.
29
- UIControlEventPrimaryActionTriggered API_AVAILABLE(ios(9.0)) = 1 << 13, // semantic action: for buttons, etc.
30
- UIControlEventMenuActionTriggered API_AVAILABLE(ios(14.0)) API_UNAVAILABLE(watchos) = 1 << 14, // triggered when the menu gesture fires but before the menu presents
31
-
32
- UIControlEventEditingDidBegin = 1 << 16, // UITextField
33
- UIControlEventEditingChanged = 1 << 17,
34
- UIControlEventEditingDidEnd = 1 << 18,
35
- UIControlEventEditingDidEndOnExit = 1 << 19, // 'return key' ending editing
36
-
37
- UIControlEventAllTouchEvents = 0x00000FFF, // for touch events
38
- UIControlEventAllEditingEvents = 0x000F0000, // for UITextField
39
- UIControlEventApplicationReserved = 0x0F000000, // range available for application use
40
- UIControlEventSystemReserved = 0xF0000000, // range reserved for internal framework use
41
- UIControlEventAllEvents = 0xFFFFFFFF
42
- } API_UNAVAILABLE(watchos);
43
17
 
44
18
 
45
19
 
@@ -2391,6 +2391,33 @@ typedef NS_ENUM(NSInteger, UIScrollViewContentInsetAdjustmentBehavior) {
2391
2391
  UIScrollViewContentInsetAdjustmentAlways, // contentInset is always adjusted by the scroll view's safeAreaInsets
2392
2392
  } API_AVAILABLE(ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos);
2393
2393
 
2394
+ typedef NS_OPTIONS(NSUInteger, UIControlEvents) {
2395
+ UIControlEventTouchDown = 1 << 0, // on all touch downs
2396
+ UIControlEventTouchDownRepeat = 1 << 1, // on multiple touchdowns (tap count > 1)
2397
+ UIControlEventTouchDragInside = 1 << 2,
2398
+ UIControlEventTouchDragOutside = 1 << 3,
2399
+ UIControlEventTouchDragEnter = 1 << 4,
2400
+ UIControlEventTouchDragExit = 1 << 5,
2401
+ UIControlEventTouchUpInside = 1 << 6,
2402
+ UIControlEventTouchUpOutside = 1 << 7,
2403
+ UIControlEventTouchCancel = 1 << 8,
2404
+
2405
+ UIControlEventValueChanged = 1 << 12, // sliders, etc.
2406
+ UIControlEventPrimaryActionTriggered API_AVAILABLE(ios(9.0)) = 1 << 13, // semantic action: for buttons, etc.
2407
+ UIControlEventMenuActionTriggered API_AVAILABLE(ios(14.0)) API_UNAVAILABLE(watchos) = 1 << 14, // triggered when the menu gesture fires but before the menu presents
2408
+
2409
+ UIControlEventEditingDidBegin = 1 << 16, // UITextField
2410
+ UIControlEventEditingChanged = 1 << 17,
2411
+ UIControlEventEditingDidEnd = 1 << 18,
2412
+ UIControlEventEditingDidEndOnExit = 1 << 19, // 'return key' ending editing
2413
+
2414
+ UIControlEventAllTouchEvents = 0x00000FFF, // for touch events
2415
+ UIControlEventAllEditingEvents = 0x000F0000, // for UITextField
2416
+ UIControlEventApplicationReserved = 0x0F000000, // range available for application use
2417
+ UIControlEventSystemReserved = 0xF0000000, // range reserved for internal framework use
2418
+ UIControlEventAllEvents = 0xFFFFFFFF
2419
+ } API_UNAVAILABLE(watchos);
2420
+
2394
2421
  API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos)
2395
2422
  typedef NS_ENUM(NSInteger, UITextSearchMatchMethod) {
2396
2423
  /// Word contains search string.