peachsim 0.1.2189 → 0.1.2190
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/commands/daemon.ts +13 -1
- package/cli/commands/package.ts +1 -1
- package/cli/commands/setup.ts +4 -2
- package/cli/commands/shell-url.ts +1 -1
- package/cli/main.ts +2 -0
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/bundle-channel.cjs +24 -7
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/config.mjs +1 -1
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/expo-swift-bundle.cjs +4 -4
- package/dist-lib/expo-swift-metadata.cjs +1 -1
- package/dist-lib/expo-swift-metadata.mjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +24 -7
- package/dist-lib/host/fetch-proxy-handler.cjs +2 -2
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +2 -2
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/kotlin-host.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +2 -2
- package/dist-lib/native-app-identity-project.cjs +2 -2
- package/dist-lib/native-app-identity-project.mjs +2 -2
- package/dist-lib/native-app-identity.cjs +1 -1
- package/dist-lib/native-app-identity.mjs +1 -1
- package/dist-lib/native-firebase-metadata.cjs +1 -1
- package/dist-lib/native-firebase-metadata.mjs +1 -1
- package/dist-lib/pdfium-raster.cjs +1 -1
- package/dist-lib/pdfium-raster.mjs +1 -1
- package/dist-lib/plist.cjs +1 -1
- package/dist-lib/plist.mjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/public-origins-lib-esm.json +24 -24
- package/dist-lib/public-origins-lib.json +53 -53
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/reap-browser.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +44 -11
- package/dist-lib/swift-compile.cjs +2 -2
- package/dist-lib/swift-compile.mjs +2 -2
- package/dist-lib/swift-package.cjs +1 -1
- package/dist-lib/swift-package.mjs +1 -1
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift-toolchain.cjs +1 -1
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +2 -2
- package/dist-lib/vite.cjs +2 -2
- package/dist-lib/worklet-executable.cjs +1 -1
- package/dist-lib/worklet-executable.mjs +1 -1
- package/dist-types/packages/peach-engine/src/engine/computed-padding.d.ts +40 -0
- package/dist-types/packages/peach-engine/src/engine/layout-engine.d.ts +3 -0
- package/dist-types/packages/peach-engine/src/engine/yoga-layout.d.ts +60 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/settings/device-spec-bus.d.ts +10 -0
- package/package.json +1 -1
- package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/UIFindSession.h +2 -12
- package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UIKitTypes.h +12 -0
- package/src/podspec-sources.ts +21 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.2190 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/swift-compile.ts
|
|
4
4
|
import {
|
|
@@ -12457,7 +12457,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
|
|
|
12457
12457
|
var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
|
|
12458
12458
|
var MULTI_MANIFEST_VERSION = 68;
|
|
12459
12459
|
var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
|
|
12460
|
-
var compilerSourceDigest = true ? "
|
|
12460
|
+
var compilerSourceDigest = true ? "382ff03994dc241ff825d788eb5f8eb92462420da0b20538d9fcc1ff79e096c6" : swiftCompilerSourceDigest(import.meta.dirname);
|
|
12461
12461
|
function swiftArtifactHash(input, release, moduleRoot) {
|
|
12462
12462
|
const hash = createHash13("sha256");
|
|
12463
12463
|
hash.update(`swift-compile
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.2190 | (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.
|
|
1
|
+
/*! peach v0.1.2190 | (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.
|
|
1
|
+
/*! peach v0.1.2190 | (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;
|
package/dist-lib/swift.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.2190 | (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;
|
package/dist-lib/vite-swift.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.2190 | (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;
|
|
@@ -17272,7 +17272,7 @@ var darwinRecordsRegion = (quoted) => quoted.length ? ["-Wl,--start-lib", ...quo
|
|
|
17272
17272
|
var REACTOR_FLAG = '"-Xclang-linker", "-mexec-model=reactor",\n';
|
|
17273
17273
|
var MULTI_MANIFEST_VERSION = 68;
|
|
17274
17274
|
var SWIFT_HEADER_PRODUCTS_TARGET = "PeachHeaderProducts";
|
|
17275
|
-
var compilerSourceDigest = true ? "
|
|
17275
|
+
var compilerSourceDigest = true ? "382ff03994dc241ff825d788eb5f8eb92462420da0b20538d9fcc1ff79e096c6" : swiftCompilerSourceDigest(__sootsim_import_meta_dirname);
|
|
17276
17276
|
function swiftArtifactHash(input, release, moduleRoot) {
|
|
17277
17277
|
const hash = (0, import_node_crypto13.createHash)("sha256");
|
|
17278
17278
|
hash.update(`swift-compile
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.2190 | (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;
|
|
@@ -5391,7 +5391,7 @@ var FOUNDATION_IMPLICIT_MODULES = [
|
|
|
5391
5391
|
var FOUNDATION_IMPLICIT_FLAGS = FOUNDATION_IMPLICIT_MODULES.map(
|
|
5392
5392
|
(module2) => `, "-Xfrontend", "-import-module", "-Xfrontend", "${module2}"`
|
|
5393
5393
|
).join("");
|
|
5394
|
-
var compilerSourceDigest = true ? "
|
|
5394
|
+
var compilerSourceDigest = true ? "382ff03994dc241ff825d788eb5f8eb92462420da0b20538d9fcc1ff79e096c6" : swiftCompilerSourceDigest2(__sootsim_import_meta_dirname);
|
|
5395
5395
|
var CORE_FOUNDATION_HANDLE_IMPORTS = [
|
|
5396
5396
|
"CFAllocator",
|
|
5397
5397
|
"CFArray",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! peach v0.1.
|
|
1
|
+
/*! peach v0.1.2190 | (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;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { SootSimNode } from './node.d.ts';
|
|
2
|
+
import type { SootSimStyle } from './types.d.ts';
|
|
3
|
+
type EdgeStyle = Readonly<Partial<Record<keyof SootSimStyle, unknown>>>;
|
|
4
|
+
export declare function resolveStylePadding(style: SootSimStyle): {
|
|
5
|
+
left: number;
|
|
6
|
+
top: number;
|
|
7
|
+
right: number;
|
|
8
|
+
bottom: number;
|
|
9
|
+
};
|
|
10
|
+
export declare function resolveStyleMargin(style: SootSimStyle): {
|
|
11
|
+
left: number;
|
|
12
|
+
top: number;
|
|
13
|
+
right: number;
|
|
14
|
+
bottom: number;
|
|
15
|
+
};
|
|
16
|
+
export declare function getComputedPadding(node: SootSimNode): {
|
|
17
|
+
left: number;
|
|
18
|
+
top: number;
|
|
19
|
+
right: number;
|
|
20
|
+
bottom: number;
|
|
21
|
+
};
|
|
22
|
+
export declare function resolveStyleBorderWidth(style: EdgeStyle): {
|
|
23
|
+
left: number;
|
|
24
|
+
top: number;
|
|
25
|
+
right: number;
|
|
26
|
+
bottom: number;
|
|
27
|
+
};
|
|
28
|
+
export declare function getComputedBorderWidth(node: SootSimNode): {
|
|
29
|
+
left: number;
|
|
30
|
+
top: number;
|
|
31
|
+
right: number;
|
|
32
|
+
bottom: number;
|
|
33
|
+
};
|
|
34
|
+
export declare function getTextContentInset(node: SootSimNode): {
|
|
35
|
+
left: number;
|
|
36
|
+
top: number;
|
|
37
|
+
right: number;
|
|
38
|
+
bottom: number;
|
|
39
|
+
};
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { getComputedPadding, getTextContentInset, resolveStylePadding, } from './computed-padding.d.ts';
|
|
2
|
+
export { computeLayout, laidOutRightToLeft, resolvesRightToLeft, layoutDirection, layoutRecordTakesAnimatedStyle, measureText, nativeLayoutFrameRoot, } from './yoga-layout.d.ts';
|
|
3
|
+
export { setLayoutAnimRenderCallback, layoutAnimComplete, getLayoutAnimStats, invalidateAllTextMeasurements, invalidateLazyFontWaiters, publishUnwrappedTextMeasurements, seedUnwrappedTextMeasurements, takeUnwrappedTextMeasurements, type UnwrappedTextMeasurement, } from './yoga-layout.d.ts';
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type LayoutHookPlacement, SootSimNode } from './node.d.ts';
|
|
2
|
+
import { type TextGuides } from './text-first-baseline.d.ts';
|
|
3
|
+
import type { SootSimStyle, SootSimLayout, SootSimTextLayoutLine, MeasureContext } from './types.d.ts';
|
|
4
|
+
export declare function setLayoutEventDispatcher(dispatcher: ((callback: () => void) => void) | null): void;
|
|
5
|
+
export interface TextInkBox {
|
|
6
|
+
left: number;
|
|
7
|
+
top: number;
|
|
8
|
+
right: number;
|
|
9
|
+
bottom: number;
|
|
10
|
+
}
|
|
11
|
+
export interface MeasuredTextResult {
|
|
12
|
+
textLayoutKey: string;
|
|
13
|
+
measuredWidth: number;
|
|
14
|
+
unroundedWidth: number;
|
|
15
|
+
unroundedHeight: number;
|
|
16
|
+
measuredHeight: number;
|
|
17
|
+
fontScale: number | null;
|
|
18
|
+
textLayoutLines: SootSimTextLayoutLine[] | null;
|
|
19
|
+
textGuides: TextGuides | null;
|
|
20
|
+
ink: TextInkBox | null;
|
|
21
|
+
}
|
|
22
|
+
export interface UnwrappedTextMeasurement {
|
|
23
|
+
key: string;
|
|
24
|
+
intrinsicWidth: number;
|
|
25
|
+
measured: MeasuredTextResult;
|
|
26
|
+
}
|
|
27
|
+
export declare function publishUnwrappedTextMeasurements(): void;
|
|
28
|
+
export declare function takeUnwrappedTextMeasurements(): UnwrappedTextMeasurement[] | undefined;
|
|
29
|
+
export declare function seedUnwrappedTextMeasurements(entries: readonly UnwrappedTextMeasurement[]): void;
|
|
30
|
+
export declare function setLayoutBoundNodeCollector(begin: ((node: SootSimNode) => void) | null, end: ((node: SootSimNode, retainEmpty?: boolean) => void) | null): void;
|
|
31
|
+
export { roundToLayoutGrid } from '../settings/device-spec-bus.d.ts';
|
|
32
|
+
export declare function invalidateYogaTextMeasure(node: SootSimNode): void;
|
|
33
|
+
export declare function invalidateAllTextMeasurements(): void;
|
|
34
|
+
export declare function invalidateLazyFontWaiters(nodes: readonly SootSimNode[]): void;
|
|
35
|
+
export declare function shouldApplyMeasuredTextStretchWidth(node: SootSimNode): boolean;
|
|
36
|
+
export declare function setLayoutAnimRenderCallback(cb: (() => void) | null): void;
|
|
37
|
+
export declare function layoutAnimComplete(node: SootSimNode): void;
|
|
38
|
+
export declare function getLayoutAnimStats(): {
|
|
39
|
+
layoutAnimNodeCount: number;
|
|
40
|
+
layoutAnimTickCount: number;
|
|
41
|
+
hasLayoutAnimRafScheduled: boolean;
|
|
42
|
+
};
|
|
43
|
+
export declare function laidOutRightToLeft(node: SootSimNode): boolean;
|
|
44
|
+
export declare function resolvesRightToLeft(node: SootSimNode): boolean;
|
|
45
|
+
export declare function layoutDirection(): number;
|
|
46
|
+
export declare function queuePendingRootLayoutMeasure(nodeOrRoot: unknown, key: object, callback: () => void): (() => void) | undefined;
|
|
47
|
+
export interface LayoutWatch {
|
|
48
|
+
moving(nodes: readonly SootSimNode[], resized?: boolean): void;
|
|
49
|
+
scrollSynced(node: SootSimNode): void;
|
|
50
|
+
}
|
|
51
|
+
export declare function layoutRecordTakesAnimatedStyle(node: SootSimNode, keys: readonly string[]): boolean;
|
|
52
|
+
export declare function computeLayout(root: SootSimNode, width: number, height: number, ctx: MeasureContext, watch?: LayoutWatch | null, preserveRootOrigin?: boolean): boolean;
|
|
53
|
+
export declare function nativeLayoutFrameRoot(root: SootSimNode, width: number, height: number, ctx: MeasureContext): number;
|
|
54
|
+
export declare function setLayoutHook(target: unknown, hook: ((view: SootSimNode) => void) | null): void;
|
|
55
|
+
export declare function placeFromLayoutHook(target: unknown, placement: LayoutHookPlacement | null): void;
|
|
56
|
+
export declare function layoutHookFrame(target: unknown): SootSimLayout | null;
|
|
57
|
+
export declare function releaseYogaRoot(root: SootSimNode): void;
|
|
58
|
+
export declare function parkYogaRoot(root: SootSimNode): void;
|
|
59
|
+
export declare function freeYogaTree(node: SootSimNode, seen?: Set<SootSimNode>): void;
|
|
60
|
+
export declare function measureText(text: string, sourceStyle: SootSimStyle, maxWidth: number, ctx: MeasureContext, props?: Record<string, any>, node?: SootSimNode, includeInk?: boolean): MeasuredTextResult;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type AnimatedDrivenStyleLease, type AnimatedDrivenStyleRetirement } from '../engine/animated-driven-style.d.ts';
|
|
2
2
|
import { type LayoutSlotRead } from '../engine/layout-sab.d.ts';
|
|
3
3
|
import { SootSimNode, SootSimTextNode, type LayoutHookPlacement } from '../engine/node.d.ts';
|
|
4
|
+
import type { UnwrappedTextMeasurement } from '../engine/layout-engine.d.ts';
|
|
4
5
|
import type { SootSimNodeType } from '../engine/types.d.ts';
|
|
5
6
|
import type { LayoutAnimationConfig } from '../react-native/layout-animation.d.ts';
|
|
6
7
|
import type { GraphPresentation } from './graph-linked-value.d.ts';
|
|
@@ -64,6 +65,7 @@ export type WireSurfaceUpdate = WireDelta & {
|
|
|
64
65
|
graphPresentations?: GraphPresentation[];
|
|
65
66
|
graphPresentationEnds?: number[];
|
|
66
67
|
inlineSources?: WireInlineSources;
|
|
68
|
+
unwrappedMeasurements?: UnwrappedTextMeasurement[];
|
|
67
69
|
};
|
|
68
70
|
export declare function sanitizeProps(props: Record<string, unknown>, nodeType?: SootSimNodeType): Record<string, unknown>;
|
|
69
71
|
export declare function sanitizeStyle(style: Record<string, unknown>): Record<string, unknown>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DeviceSpec } from '../../../../../src/device-catalog.ts';
|
|
2
|
+
type Listener = () => void;
|
|
3
|
+
export declare const ANDROID_EMULATOR_MODEL = "sdk_gphone64_arm64";
|
|
4
|
+
export declare function getDeviceSpec(): DeviceSpec;
|
|
5
|
+
export declare function peekDeviceSpec(): DeviceSpec | undefined;
|
|
6
|
+
export declare function getDevicePixelScale(): number;
|
|
7
|
+
export declare function roundToLayoutGrid(value: number): number;
|
|
8
|
+
export declare function publishDeviceSpec(spec: DeviceSpec): void;
|
|
9
|
+
export declare function onDeviceSpecChange(listener: Listener): () => void;
|
|
10
|
+
export {};
|
package/package.json
CHANGED
|
@@ -15,20 +15,10 @@ NS_HEADER_AUDIT_BEGIN(nullability, sendability)
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
typedef NS_ENUM(NSInteger, UITextSearchMatchMethod) {
|
|
20
|
-
/// Word contains search string.
|
|
21
|
-
UITextSearchMatchMethodContains,
|
|
22
|
-
|
|
23
|
-
/// Word contains the search string as a prefix.
|
|
24
|
-
UITextSearchMatchMethodStartsWith,
|
|
25
|
-
|
|
26
|
-
/// Word is an exact match for the search string.
|
|
27
|
-
UITextSearchMatchMethodFullWord,
|
|
28
|
-
} NS_SWIFT_NAME(UITextSearchOptions.WordMatchMethod) API_UNAVAILABLE(watchos);
|
|
18
|
+
|
|
29
19
|
|
|
30
20
|
UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos) NS_SWIFT_UI_ACTOR
|
|
31
|
-
@interface UITextSearchOptions : NSObject
|
|
21
|
+
PEACH_SWIFT_CLASS(UIKitCore) @interface UITextSearchOptions : NSObject
|
|
32
22
|
/// See UITextSearchMatchMethod above.
|
|
33
23
|
@property (nonatomic, readonly) UITextSearchMatchMethod wordMatchMethod;
|
|
34
24
|
|
|
@@ -2389,6 +2389,18 @@ typedef NS_ENUM(NSInteger, UIScrollViewContentInsetAdjustmentBehavior) {
|
|
|
2389
2389
|
UIScrollViewContentInsetAdjustmentNever, // contentInset is not adjusted
|
|
2390
2390
|
UIScrollViewContentInsetAdjustmentAlways, // contentInset is always adjusted by the scroll view's safeAreaInsets
|
|
2391
2391
|
} API_AVAILABLE(ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos);
|
|
2392
|
+
|
|
2393
|
+
API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(watchos, tvos)
|
|
2394
|
+
typedef NS_ENUM(NSInteger, UITextSearchMatchMethod) {
|
|
2395
|
+
/// Word contains search string.
|
|
2396
|
+
UITextSearchMatchMethodContains,
|
|
2397
|
+
|
|
2398
|
+
/// Word contains the search string as a prefix.
|
|
2399
|
+
UITextSearchMatchMethodStartsWith,
|
|
2400
|
+
|
|
2401
|
+
/// Word is an exact match for the search string.
|
|
2402
|
+
UITextSearchMatchMethodFullWord,
|
|
2403
|
+
} API_UNAVAILABLE(watchos);
|
|
2392
2404
|
PEACH_SWIFT_CLASS(UIKitCore) @interface UIColor : NSObject <NSSecureCoding, NSCopying>
|
|
2393
2405
|
@end
|
|
2394
2406
|
|
package/src/podspec-sources.ts
CHANGED
|
@@ -595,7 +595,8 @@ class ExprParser {
|
|
|
595
595
|
|
|
596
596
|
or = (): Node => this.binary(['||'], this.and)
|
|
597
597
|
and = (): Node => this.binary(['&&'], this.eq)
|
|
598
|
-
eq = (): Node => this.binary(['==', '!='], this.
|
|
598
|
+
eq = (): Node => this.binary(['==', '!='], this.compare)
|
|
599
|
+
compare = (): Node => this.binary(['<', '>', '<=', '>='], this.shift)
|
|
599
600
|
shift = (): Node => this.binary(['<<'], this.add)
|
|
600
601
|
add = (): Node => this.binary(['+', '-'], this.unary)
|
|
601
602
|
|
|
@@ -768,6 +769,9 @@ class ExprParser {
|
|
|
768
769
|
return { k: 'hash', pairs }
|
|
769
770
|
}
|
|
770
771
|
if (tok.v === '::') return this.fail('top-level constant')
|
|
772
|
+
// a global is whatever the Podfile assigned before evaluating the pod
|
|
773
|
+
if (tok.v === '$' && this.toks[this.i]?.t === 'id')
|
|
774
|
+
return { k: 'fail', why: `global $${this.toks[this.i++]!.v}` }
|
|
771
775
|
return this.fail(`unexpected ${tok.v}`)
|
|
772
776
|
}
|
|
773
777
|
}
|
|
@@ -1054,7 +1058,16 @@ class Evaluator {
|
|
|
1054
1058
|
}
|
|
1055
1059
|
case 'bin': {
|
|
1056
1060
|
if (node.op === '||' || node.op === '&&') {
|
|
1057
|
-
|
|
1061
|
+
let l: Value
|
|
1062
|
+
try {
|
|
1063
|
+
l = this.ev(scope, node.l)
|
|
1064
|
+
} catch (error) {
|
|
1065
|
+
// an unestablished operand cannot change `x && falsy` or `x || truthy`
|
|
1066
|
+
if (!recoverable(error)) throw error
|
|
1067
|
+
const r = this.ev(scope, node.r)
|
|
1068
|
+
if (truthy(r) === (node.op === '||')) return r
|
|
1069
|
+
throw error
|
|
1070
|
+
}
|
|
1058
1071
|
return truthy(l) === (node.op === '||') ? l : this.ev(scope, node.r)
|
|
1059
1072
|
}
|
|
1060
1073
|
const l = this.ev(scope, node.l)
|
|
@@ -1083,6 +1096,12 @@ class Evaluator {
|
|
|
1083
1096
|
l.push(r)
|
|
1084
1097
|
return l
|
|
1085
1098
|
}
|
|
1099
|
+
if (typeof l === 'number' && typeof r === 'number') {
|
|
1100
|
+
if (node.op === '<') return l < r
|
|
1101
|
+
if (node.op === '>') return l > r
|
|
1102
|
+
if (node.op === '<=') return l <= r
|
|
1103
|
+
if (node.op === '>=') return l >= r
|
|
1104
|
+
}
|
|
1086
1105
|
return this.fail(`operator ${node.op}`)
|
|
1087
1106
|
}
|
|
1088
1107
|
case 'method': {
|